随笔分类 - motan源码分析
摘要:本章将描述motan部分的特性并对源码进行分析。 1.requestid的维护,使用了当前时间左移20位,再和一个自增变量组合 2.限流,motan支持简单的限流,是利用filter来实现的 3.对于连续失败的client进行不可用操作 4.支持多注册中心,因此cluster的refer集合是所有注
阅读全文
摘要:motan提供了流量切换的功能,可以实现把一个group的流量切换到另一个group(一个或多个服务都可以)。大家可以使用tomcat部署motan的管理工具,并设置几个组,例如可以参考demo代码:motan_demo_server_commandRegistry.xml。分析源码时可以发现,流量
阅读全文
摘要:在前面的文章中,我们已经发现了开关的踪影,例如cluster,motan支持多个cluster,当前的cluster因为开关关闭的情况下,就会使用下一个cluster。 1.开关相关的类和接口主要都在包com.weibo.api.motan.switcher下,类Switcher是具体的开关: 2.
阅读全文
摘要:之前我们分析了客户端调用服务端的源码,但是没有涉及到通讯层和序列化层,本文将之前讲过的内容做一次串联。 1.上层通过动态代理调用refer的call,每个refer又对应一个nettyclient,下面来看一下nettyclient的调用服务端操作 2.nettychannel的request操作
阅读全文
摘要:motan的序列化支持两种协议,一种是json,另一种是hessian2。主要涉及到的类和接口是是:FastJsonSerialization、Hessian2Serialization、Serialization、Codec、AbstractCodec、NettyDecoder、NettyEnco
阅读全文
摘要:本章将分析motan的序列化和底层通信相关部分的代码。 1.在上一章中,有一个getrefers的操作,来获取所有服务器的引用,每个服务器的引用都是由DefaultRpcReferer来创建的 2.NettyClient的创建过程及源码分析 3.Netty相关的连接建立是通过open()方法进行的
阅读全文
摘要:上一章我们分析了客户端调用服务端相关的源码,但是到了cluster里面的部分我们就没有分析了,本章将深入分析cluster和它的相关支持类。 1.clustersupport的创建过程,上一章的ReferConfig的initRef()方法中调用了相关的创建代码: 2.clustersupport的
阅读全文
摘要:在第一章中,我们分析了服务的发布与注册,本章中将简单的分析一下客户端调用服务的代码及流程,本文将以spring加载的方式进行分析。 1.在DemoRpcClient类的main()方法中加载类: 2.上面加载了spring的配置文件motan_demo_client.xml 经过spring装载Re
阅读全文
摘要:在本文第一章,分析的demo中使用了代码加载的方式加载了相关的类,但在我们的实际工作中,使用spring来加载相关的类的情况会更多,本文将分析一下motan是如何与spring一起协同工作的,主要的原理就是利用了spring支持的自定义标签的实现,这也是需要和spring结合的框架的实现方式。 1.
阅读全文
摘要:在motan的源码中使用了很多的spi机制进行对象的创建,下面我们来具体分析一下它的实现方法。 1.在实际的jar包的\META-INF\services目录中引入相关的文件,例如下图中,我解压了core的jar文件后,获得到的相应文件列表: 2.以第一节中的ConfigHandler为例来分析,打
阅读全文
摘要:motan是新浪微博开源的服务治理框架,具体介绍请看:http://tech.sina.com.cn/i/2016-05-10/doc-ifxryhhh1869879.shtml. 本系列的文章将分析它的底层源码,分析的源码版本为:0.1.2。第一篇文章将以服务的发布和注册开始,注册服务使用zook
阅读全文