Dubbo
大步流星520
这个作者很懒,什么都没留下…
展开
-
Dubbo源代码实现二:服务调用的动态代理和负载均衡
疑惑一:为什么在Spring中我们能像注入普通本地服务JavaBean一样注入远程的Dubbo服务Bean? 我们知道,Dubbo将服务调用封装成普通的Spring的Bean,于是我们可以像使用本地的Spring Bean一样,来调用远端的Dubbo服务,并有LoadBalance和Failover的功能。现在,我们从源码的角度来看看,Dubbo是如何做到这点的。 我们知道,要成为Dubb...2016-07-30 14:04:15 · 442 阅读 · 0 评论 -
Dubbo源代码实现一:切入Spring
Dubbo是阿里开源的一个高性能服务框架,提供了服务注册、RPC服务调用、调用均衡、服务监控和服务failover等功能。如果你还未使用过Dubbo框架,请先参考dubbo提供的官方文档,比如:http://www.oschina.net/p/dubbo?fromerr=iVZFqWON。 Dubbo框架中有两个重要角色:(服务)提供者和(服务)消费者,这里为...原创 2016-02-13 22:34:04 · 169 阅读 · 0 评论 -
Dubbo源代码实现三:注册中心Registry
<!--StartFragment--> 我们知道,对于服务治理框架来说,服务通信(RPC)和服务管理两部分必不可少,而服务管理又分为服务注册、服务发现和服务人工介入,我们来看看Dubbo框架的结构图(来源网络):<!--EndFragment--> 图中可以看出,服务提供者Provider往服务注册中心Registry注册服务,而的消费者Co...2017-06-18 18:33:35 · 303 阅读 · 0 评论 -
Dubbo源代码实现四:Dubbo中的扩展点与SPI
SPI的全称是Service Provider Interface,即服务提供商接口。直白的说,它主要用来实现一个可扩展的Java应用。有人会觉得这就是建立在面向接口编程下的一种为了使组件可扩展或动态变更实现的规范,常见的类SPI的设计有JDBC、JNDI、JAXP等,很多开源框架的内部实现也采用了SPI,。例如JDBC的架构是由一套API组成,用于给Java应用提供访问不同数据库...2017-06-18 18:40:06 · 203 阅读 · 0 评论 -
Dubbo源代码实现六:线程池模型与提供者
对于Dubbo的服务提供者,主要有两种线程池,一种是IO处理线程池,另一种是服务调用线程池。而作为IO处理线程池,由于Dubbo基于Mina、Grizzly和Netty框架做IO组件,IO线程池都是基于这些框架来配置,比如Netty中的boss和worker线程池,Dubbo选择的是“无边界”的CachedThreadPool,这意味着对所有服务请求先做到“来者不拒”,但它进一步限制了IO处理...2017-06-18 18:41:21 · 468 阅读 · 1 评论 -
Dubbo源代码分析七:使用executes属性的一个问题
我们知道,在Dubbo中可以给Provider配置线程池大小来控制系统提供服务的最大并行度,默认是200个,如果我们想配置成500,可以如下配置: <dubbo:provider token="true" threads="500"/> 当我们想限制某个dubbo服务使用的最大线程数量时,dubbo提供了executes这一属性来提供这个功能,比如我们想限制某个接口最...2017-07-22 12:17:03 · 1216 阅读 · 0 评论 -
Dubbo源代码分析八:再说Provider线程池被EXHAUSTED
在上回《Dubbo源代码实现六》中我们已经了解到,对于Dubbo集群中的Provider角色,有IO线程池(默认无界)和业务处理线程池(默认200)两个线程池,所以当业务的并发比较高,或者某些业务处理变慢,业务线程池就很容易被“打满”,抛出“RejectedExecutionException: Thread pool is EXHAUSTED! ”异常。当然,前提是我们每给...2017-08-26 12:34:09 · 362 阅读 · 0 评论 -
Dubbo源代码实现五:RPC中的服务消费方实现
刚开始使用Dubbo的人,可能对Dubbo的第一印象就是它是一个RPC框架,当然,所有的分布式框架都少不了相互通信的过程,何况Dubbo的任务就是帮助分布式业务系统完成服务的通讯、负载、注册、发现和监控等功能。不得不承认,RPC是Dubbo提供服务的核心流程,为了兼容多种使用场景,Dubbo显然需要提供多种RPC方式(协议). 开发一个简单的RPC框架,重点...2017-01-31 12:58:57 · 231 阅读 · 0 评论 -
Dubbo源代码分析九:优雅停机
虽然我们系统的用户体验和数据一致性不应该完全靠优雅停机来保证,但作为一流的RPC框架,优雅停机的功能必不可少,Dubbo用户手册有对优雅停机做一个简单的叙述: Dubbo是通过JDK的 ShutdownHook 来完成优雅停机的,所以如果用户使用 kill -9 PID 等强制关闭指令,是不会执行优雅停机的,只有通过 kill PID 时,才会执行。 服务提供方:停止时,先标记为不接收...2017-12-09 10:36:17 · 308 阅读 · 0 评论