码迷,mamicode.com
首页 > 其他好文 > 详细

dubbo学习 二 dubbo源码大致查阅

时间:2016-12-03 01:18:46      阅读:312      评论:0      收藏:0      [点我收藏+]

标签:keep   random   转化   协议   客户端   alt   png   prot   tin   

源码的解析在官网都已经写的非常详细,可以参考:http://dubbo.io/Developer+Guide-zh.htm

 

服务提供者暴露一个服务的详细过程

技术分享

 

技术分享
首先ServiceConfig类拿到对外提供服务的实际类ref(如:HelloWorldImpl),然后通过ProxyFactory类的getInvoker方法使用ref生成一个AbstractProxyInvoker实例,到这一步就完成具体服务到Invoker的转化。接下来就是Invoker转换到Exporter的过程。
Dubbo处理服务暴露的关键就在Invoker转换到Exporter的过程(如上图中的红色部分)。 Dubbo协议的Invoker转为Exporter发生在DubboProtocol类的export方法,它主要是打开socket侦听服务,并接收客户端发来的各种请求,通讯细节由Dubbo自己实现。
 

各种注册中心的实现

技术分享

 

各种协议的实现

技术分享

 

将服务注册到zookeeper

技术分享

 

服务消费者消费一个服务的详细过程

 
技术分享

 

技术分享
首先ReferenceConfig类的init方法调用Protocol的refer方法生成Invoker实例(如上图中的红色部分),这是服务消费的关键。接下来把Invoker转换为客户端需要的接口(如:HelloWorld)。这里获取invoker的时候,如果是注册中心同一个服务有多个提供者,消费者会根据配置的负载均衡来选择出一个作为提供者来使用。并且也有各种容错处理机制。
 

消费端各种容错机制

技术分享

 

消费端各种负载均衡机制

技术分享

 

 使用RandomLoadBalance获取一个提供者

技术分享

 

 

dubbo学习 二 dubbo源码大致查阅

标签:keep   random   转化   协议   客户端   alt   png   prot   tin   

原文地址:http://www.cnblogs.com/liouwei4083/p/6127727.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!