![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
motan源码分析
zscat-me
这个作者很懒,什么都没留下…
展开
-
motan源码分析一:服务发布及注册
motan是新浪微博开源的服务治理框架,具体介绍请看:http://tech.sina.com.cn/i/2016-05-10/doc-ifxryhhh1869879.shtml.本系列的文章将分析它的底层源码,分析的源码版本为:0.1.2。第一篇文章将以服务的发布和注册开始,注册服务使用zookeeper来分析。源码地址:https://github.com/weibocom/motan转载 2017-03-30 09:46:36 · 3528 阅读 · 0 评论 -
motan源码分析十:流量切换
motan提供了流量切换的功能,可以实现把一个group的流量切换到另一个group(一个或多个服务都可以)。大家可以使用tomcat部署motan的管理工具,并设置几个组,例如可以参考demo代码:motan_demo_server_commandRegistry.xml。分析源码时可以发现,流量切换是在客户端完成的,与服务端没什么关系,在实际的工作中,可以解决很多问题,例如:某个集群出了问题,转载 2017-03-30 09:58:01 · 1877 阅读 · 0 评论 -
motan源码分析九:开关
在前面的文章中,我们已经发现了开关的踪影,例如cluster,motan支持多个cluster,当前的cluster因为开关关闭的情况下,就会使用下一个cluster。1.开关相关的类和接口主要都在包com.weibo.api.motan.switcher下,类Switcher是具体的开关:public class Switcher { private boolean转载 2017-03-30 09:57:22 · 850 阅读 · 0 评论 -
motan源码分析八:涉及到底层的客户端调用
之前我们分析了客户端调用服务端的源码,但是没有涉及到通讯层和序列化层,本文将之前讲过的内容做一次串联。1.上层通过动态代理调用refer的call,每个refer又对应一个nettyclient,下面来看一下nettyclient的调用服务端操作1234567891011转载 2017-03-30 09:56:43 · 1505 阅读 · 1 评论 -
motan源码分析七:序列化
motan的序列化支持两种协议,一种是json,另一种是hessian2。主要涉及到的类和接口是是:FastJsonSerialization、Hessian2Serialization、Serialization、Codec、AbstractCodec、NettyDecoder、NettyEncoder、DefaultRpcCodec和CompressRpcCodec等。1.FastJs转载 2017-03-30 09:56:10 · 1468 阅读 · 0 评论 -
motan源码分析六:客户端与服务器的通信层分析
本章将分析motan的序列化和底层通信相关部分的代码。1.在上一章中,有一个getrefers的操作,来获取所有服务器的引用,每个服务器的引用都是由DefaultRpcReferer来创建的 public DefaultRpcReferer(Class clz, URL url, URL serviceUrl) { super(clz, u转载 2017-03-30 09:55:32 · 1799 阅读 · 0 评论 -
motan源码分析五:cluster相关
上一章我们分析了客户端调用服务端相关的源码,但是到了cluster里面的部分我们就没有分析了,本章将深入分析cluster和它的相关支持类。1.clustersupport的创建过程,上一章的ReferConfig的initRef()方法中调用了相关的创建代码: for(Iterator iterator = protocols.iterator(); itera转载 2017-03-30 09:54:56 · 1368 阅读 · 0 评论 -
motan源码分析四:客户端调用服务
在第一章中,我们分析了服务的发布与注册,本章中将简单的分析一下客户端调用服务的代码及流程,本文将以spring加载的方式进行分析。1.在DemoRpcClient类的main()方法中加载类:123ApplicationContext ctx = new ClassPathXmlApplicationContext(n转载 2017-03-30 09:53:50 · 2217 阅读 · 0 评论 -
motan源码分析三:与spring框架的结合
在本文第一章,分析的demo中使用了代码加载的方式加载了相关的类,但在我们的实际工作中,使用spring来加载相关的类的情况会更多,本文将分析一下motan是如何与spring一起协同工作的,主要的原理就是利用了spring支持的自定义标签的实现,这也是需要和spring结合的框架的实现方式。1.首先实现motan.xsd文件,具体可以参见:http://api.weibo.com/sch转载 2017-03-30 09:53:10 · 1316 阅读 · 2 评论 -
motan源码分析二:使用spi机制进行类加载
motan源码分析二:使用spi机制进行类加载在motan的源码中使用了很多的spi机制进行对象的创建,下面我们来具体分析一下它的实现方法。1.在实际的jar包的\META-INF\services目录中引入相关的文件,例如下图中,我解压了core的jar文件后,获得到的相应文件列表:2.以第一节中的ConfigHandler为例来分析,打开上图中的com.weib转载 2017-03-30 09:52:37 · 1445 阅读 · 0 评论 -
motan源码分析十一:部分特性
本章将描述motan部分的特性并对源码进行分析。1.requestid的维护,使用了当前时间左移20位,再和一个自增变量组合public class RequestIdGenerator { protected static final AtomicLong offset = new AtomicLong(0); protected static final i转载 2017-03-30 09:58:34 · 886 阅读 · 0 评论