
Dubbo
文章平均质量分 54
服务端开发
这个作者很懒,什么都没留下…
展开
-
Dubbo源码分析:URL总线和ExtensionLoader-框架基石
ExtensionLoader类为dubbo框架SPI的实现类,通过ExtensionLoader配合URL完成对应类实现的加载,是dubbo框架高度可拓展性实现的基础。具体实现为:自定义SPI实现增加了根据实例别名的概念,如:jdk=java.xxx.JDK,而默认java spi则只在META-INF/services目录,包含接口全名作为文件,文件内容为各个实现类全名列表;增加目录...原创 2018-11-29 18:05:21 · 2755 阅读 · 0 评论 -
Dubbo源码分析:Register注册中心
Registry每个注册中心对应一个Registry实例,包括dubbo,zookeeper,redis, multicast。(1)Set类型的registed:记录provider注册过的service url。(2)ConcurrentMap<URL, Set> subscribed:consumer订阅URL,URL有变化时的监听器NotifyListener;其中多个N...原创 2018-12-01 14:07:10 · 6815 阅读 · 0 评论 -
Dubbo源码分析:序列化方式与调用
概述序列化模块主要为dubbo协议提供服务提供者和服务消费者之间的数据序列化功能。dubbo是一种适合于高并发、小数据量的互联网应用场景的框架,而序列化对于远程调用的响应速度,吞吐量,网络带宽消耗也其中至关重要的作用,是提高分布式系统性能的最关键因素之一。在源码实现中,在远程传输模块remoting,调用Transporter传输数据之前,通过Codec架构对数据进行序列化,在Codec中调...原创 2018-12-11 21:49:15 · 2941 阅读 · 1 评论 -
Dubbo源码分析:远程传输remoting
概述由rpc协议实现模块分析可知,远程通讯模块主要为rpc协议中的dubbo协议提供:服务提供者和服务消费者之间的数据传输功能。远程通讯对外提供了一个Exchange的概念,即消息交换。服务消费者:包含一个ExchangeClient,通过connect方法连接服务提供者,并指定对应的ExchangeHandler用于远程调用的处理,将请求的方法和参数通过URL的方式,传递给服务提供者;服...原创 2018-12-07 16:33:00 · 2251 阅读 · 0 评论 -
Dubbo源码分析:RPC协议详解
概述RPC协议模块主要定义了服务提供者提供服务,消费者调用服务的一个整体架构。服务提供者:当dubbo启动时,调用registry注册模块的RegistryProtocol,完成服务的相关元数据上传注册到注册中心,包括zookeeper,Redis或者多播;注册的具体方法为RegistryProtocol.export,export方法在进行注册前,会调用doLocalExport方法,在这...原创 2018-12-06 11:16:35 · 3546 阅读 · 0 评论 -
Dubbo源码分析:RPC协议实现-RPC过程与核心接口设计
定义提供者Provider:服务提供者如何将自己能提供的服务暴露出去,使得服务消费者可以远程调用。消费者Consumer:服务消费者对自己需要的服务,如何感知该服务在哪里,如何通过远程调用的方式,调用服务提供者提供的服务。核心接口如下:核心接口设计Protocol:RPC协议接口export方法: 提供者需要实现export方法,定义如何将自己提供的服务保留出去,同时如何使得消...原创 2018-12-01 17:29:10 · 2278 阅读 · 0 评论 -
Dubbo源码分析:RPC协议实现-客户端限流
概述Dubbo支持在服务或者方法粒度,通过actives参数对该服务的所有方法或者该方法进行并发访问控制,即同一时刻只允许active个消费者请求并发调用服务,超过的请求需要等待,如果在timeout时间内还是无法执行调用,则异常退出。源码实现实现类:在rpc包下的ActiveLimitFilter,即通过过滤器的方式对请求进行过滤,当未达到actives个并发请求时,则将rpc请求直接传...原创 2018-12-02 11:45:28 · 3049 阅读 · 0 评论 -
Dubbo源码分析:RPC协议实现-服务端限流与Semaphore信号量
概述Dubbo支持在服务端通过在service或者method,通过executes参数设置每个方法,允许并发调用的最大线程数,即在任何时刻,只允许executes个线程同时调用该方法,超过的则抛异常返回,从而对提供者服务进行并发控制,保护资源。用法服务级别限制 com.foo.BarService 的每个方法,服务器端并发执行(或占用线程池线程数)不能超过 10 个:<dubbo...原创 2018-12-02 14:34:14 · 2285 阅读 · 0 评论 -
Dubbo源码分析:Dubbo协议客户端单一长连接RPC并发调用的结果获取
并发调用下结果获取的原理Dubbo协议在客户端针对每个Service调用,默认是使用单一Netty长连接来处理RPC调用请求的,而在客户端,如在web环境中,任何一个时刻,可能存在多个线程并发对该Service进行并发调用,这些请求都是通过该单一Channel发送和获取结果的,而Netty所有请求都是异步,故dubbo如何保证这些并发线程能正确获取到自己的请求结果,而不会造成数据混乱呢?核心实...原创 2018-12-30 00:09:50 · 5053 阅读 · 0 评论 -
Dubbo源码分析:客户端基于dubbo协议的RPC并发调用
概述原创 2018-12-24 23:39:53 · 3468 阅读 · 0 评论 -
Dubbo源码分析:全透明接入spring和ServiceBean和Referencebean的接口设计与实现
Spring Schema XML拓展机制:dubbo全透明融入spring的实现基础在spring项目中使用dubbo,一般由spring项目启动,会加载并解析resources目录下的xml,然后将xml配置文件中的配置加载成spring容器的bean。如果是普通spring项目,则一般会在web.xml中指定需要加载的,如applicationContext.xml,如下:&...原创 2018-12-27 14:53:33 · 5732 阅读 · 0 评论 -
Dubbo源码分析:dubbo与spring融合
概述Dubbo框架主要是用于分布式系统中服务之间的远程调用。而分布式系统中的每个服务一般为采用spring框架搭建,通过spring容器管理beans,通过spring mvc提供restful接口,在service层进行业务逻辑处理。而不管是服务消费者引用的bean,还是服务提供者需要对外提供服务、进行注册的bean,都需要一种机制来触发其进行初始化,生成JVM堆的一个对象实例,同时由spr...原创 2018-12-05 22:44:44 · 3440 阅读 · 0 评论