dubbo源码分析
文章平均质量分 60
zhen_hong
没个性,不签名
展开
-
14、dubbo源码系列总结
一、服务暴露过程-》 创建ServiceBean,这个类实现了InitializingBean-》 准备各种配置,保证服务暴露时不会缺失属性-》 检查存根服务或者本地服务(现在已经属于废弃状态),所谓存根,就是一个接口的本地实现,用于提供缓存服务或者其他的操作,它的其中一个参数就是能够传入一个远程代理实现,用于在缓存未命中时调用-》 检查mock服务,但服务调用失败时,进行降级处理-》...原创 2019-10-14 22:20:39 · 202 阅读 · 0 评论 -
13、服务引入之消费者方法调用过程(集群容错与负载均衡)
前一节分析服务引入的提供者目录刷新和消费者与提供者建立连接的逻辑,并分析了以下主要的包装层级,我把它分成了三层MockClusterInvoker invoker -> FailoverClusterInvoker(如果消费者设置了group,那么这个会变成MergeableClusterInvoker) directory -> Re...原创 2019-09-16 16:06:20 · 243 阅读 · 0 评论 -
12、服务引入之注册目录的刷新与服务的连接
上一节讲到服务引入的配置和参数订阅,经过参数订阅,消费端获取到了对应接口的分类下的提供者url,配置器url,路由url,那么接下来肯定要更新自己的提供者目录并创建连接到提供者的客户端了。除了服务引入启动的时候会进行提供者列表的刷新之外,在注册中心发生注册和注销事件的时候,dubbo也会进行提供者列表的刷新。public void com.alibaba.dubbo.registry.red...原创 2019-09-16 16:05:18 · 263 阅读 · 0 评论 -
11、服务引入之配置的准备与消费者注册以及订阅
假设我们有以下消费者配置<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code....原创 2019-09-16 16:04:12 · 278 阅读 · 0 评论 -
10、SPI
SPI的全称叫做Service Provider Interface,dubbo中大量使用这种服务发现机制,现在我们通过一个简单的例子来了解它是怎么运作的@org.junit.Testpublic void test1() { ProxyFactory protocol = ExtensionLoader.getExtensionLoader(ProxyFactory.class).g...原创 2019-09-13 22:35:49 · 144 阅读 · 0 评论 -
9、服务的注册
在第四节的时候,我们分析了服务的暴露,当时消费者通常都是根据注册中心,然后通过负载均衡,再找到提供者的,所以提供者除了暴露自己之外,还有到注册中心去注册,做到彻底的暴露自己。public <T> Exporter<T> com.alibaba.dubbo.registry.integration.RegistryProtocol#export(final Invoker&...原创 2019-09-13 13:09:31 · 199 阅读 · 0 评论 -
8、请求or响应数据处理之回应
在上一节中,我们分析了调用接口的过程,当接口返回了数据之后,dubbo需要告诉客户端调用的接口,这个时候dubbo又是这么进行回应的呢?在com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler#received方法中有如下代码public void received(Channel channel, Obj...原创 2019-09-13 11:23:50 · 413 阅读 · 0 评论 -
7、请求or响应数据处理之Invoker的调用
前面我们分析到请求体的解析,最后解析成一个Request,Request持有的值是一个Invocation,再结合在第4节服务的暴露,我们知道dubbo在暴露服务的协议中储存了一个Exporter//group/接口名:version:port -> ExporterMap<String, Exporter<?>> exporterMapExporter持有i...原创 2019-09-13 11:22:53 · 956 阅读 · 0 评论 -
6、请求or响应数据处理之请求体解析
上一小节我们分析了响应头的解析,现在我们继续分析解析请求体public Object com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation#decode(Channel channel, InputStream input) throws IOException { //反序列化,默认使用hessian2 O...原创 2019-09-13 11:21:53 · 537 阅读 · 0 评论 -
5、请求or响应数据处理之dubbo请求协议与响应体的解析
上一节我们分析了服务的暴露,这一节我们来分析dubbo是如果处理消费者的请求的,我们来回顾一下com.alibaba.dubbo.remoting.transport.netty4.NettyServer#doOpen方法protected void com.alibaba.dubbo.remoting.transport.netty4.NettyServer#doOpen() throws T...原创 2019-09-13 11:19:39 · 708 阅读 · 0 评论 -
4、服务的暴露
前面两节,dubbo准备好了配置了,那么接下来就可以进行服务的暴露了,暴露的代码在RegistryProtocol#export中,RegistryProtocol这个协议会执行暴露,然后执行注册。public <T> Exporter<T> com.alibaba.dubbo.registry.integration.RegistryProtocol#export(fi...原创 2019-09-09 00:11:40 · 237 阅读 · 0 评论 -
3、dubbo配置类的分析-2
接着上一节的内容,上一节我们分析到了com.alibaba.dubbo.config.ServiceConfig#doExport方法,接下来我们继续分析com.alibaba.dubbo.config.ServiceConfig#doExportUrls方法private void doExportUrls() { //获取需要注册的url List<URL> re...原创 2019-09-09 00:10:08 · 296 阅读 · 0 评论 -
2、dubbo配置类的分析-1
本篇文章是本人边看边写的,记录了本人是如何学习源码的。本人在项目中并没有使用过dubbo,使用的是阿里的HSF,dubbo只是本人看到网上很多人在使用,为了保持不被落下,自己搭建了一个例子学习,其中很多的功能本人没有用到,可能会导致一些错误的理解,还望批评指正。本源码版本为2.6.7以下为dubbo的提供者配置方式<!-- 提供方应用信息,用于计算依赖关系 --><dub...原创 2019-09-01 22:58:48 · 260 阅读 · 0 评论 -
1、dubbo配置标签的解析
本源码版本为2.6.7比如有以下配置<!-- 提供方应用信息,用于计算依赖关系 --><dubbo:application name="hello-world-app" /><!-- 使用multicast广播注册中心暴露服务地址 --><dubbo:registry address="multicast://224.5.6.7:1234" ...原创 2019-09-01 22:50:25 · 441 阅读 · 0 评论