dubbo
文章平均质量分 63
六道木_
菜鸟一名~~
展开
-
Dubbo源码分析----暴露服务
暴露服务的过程中,会涉及到两个Protocol 1. DubboProtocol主要是做网络通信相关初始化 2. RegistryProtocol主要是做zk的注册和订阅相关在提供一个服务的时候,需要在配置文件里声明如下xml<dubbo:service.... 然后Spring会根据对应关系执行对应的BeanDefinitionParser,然后实例化对应的类,提...原创 2018-02-19 16:13:47 · 1976 阅读 · 0 评论 -
Dubbo源码分析----处理请求
Dubbo默认是使用Netty进行通信的,那么Netty会配置一个Handler,来处理一些事件,所以这个Handler是核心,主要找一下Dubbo初始化Netty的时候设置的Handler回顾一下网络通信相关,在DubboProtocol中,会调用createServer方法返回一个Server对象,这是一个切入点 private ExchangeServer createSe...原创 2018-07-22 14:58:43 · 357 阅读 · 0 评论 -
Dubbo源码分析----发起请求
从如下代码中还是分析String sayHello = demoService.sayHello("123123");我们知道demoService实际上是一个代理对象,那么假设使用的是JDK的代码,看看获取代理的地方public class JdkProxyFactory extends AbstractProxyFactory { @SuppressWarning...原创 2018-07-21 17:54:29 · 431 阅读 · 0 评论 -
Dubbo源码分析----过滤器之FutureFilter
FutureFilter主要是用来处理事件通知的过滤器,这么讲可能不太清楚,先看下下面的demo 先定一个是事件通知的类:public class Notify { public void oninvoke(String msg){ System.out.println("oninvoke:" + msg); } public void onret...原创 2018-07-21 14:34:16 · 1310 阅读 · 0 评论 -
Dubbo源码分析----多版本
在开发的时候,可能多个项目会修改同一个服务,那么不能直接暴露出来,否则会被其他人给调用到,导致数据不正常,那么这种情况下可以使用dubbo的多版本来解决这个问题,配置如下:// 稳定环境下的provider和consumer<dubbo:service interface="com.foo.BarService" version="1.0.0" /><dubbo:re...原创 2018-07-16 01:58:53 · 739 阅读 · 0 评论 -
Dubbo源码分析----Dispatcher和ThreadPool
DispatcherDispatcher是决定事件如何派发的策略,即将哪些事件派发线程池,还是说直接在当前线程中执行。先看下接口的定义@SPI(AllDispatcher.NAME)public interface Dispatcher { @Adaptive({Constants.DISPATCHER_KEY, "dispather", "channel.handle...原创 2018-07-15 19:30:05 · 976 阅读 · 0 评论 -
Dubbo源码分析----扩展机制
(复习了一下,且补充和修改了一些内容,之前那篇不是MD的,所以重新发布了) Dubbo提供了一种类似JavaSPI的一种机制,ExtensionLoader是扩展机制的核心,类似于JavaSPI的ServiceLoader和JavaSPI类似,Dubbo规定在META-INF/services/、META-INF/dubbo/、internal/下定好配置文件,Dubbo会按照一定的规则去加...原创 2018-07-15 16:13:23 · 269 阅读 · 0 评论 -
Dubbo源码分析----过滤器之ExecuteLimitFilter
ExecuteLimitFilter主要用来做并发控制例子1:限制服务 的每个方法,服务器端并发执行(或占用线程池线程数)不能超过 10个,具体配置如下<dubbo:service interface="com.foo.BarService" executes="10" />例子2:限制 com.foo.BarService 的 sayHello 方法,服务器端并发执行...原创 2018-07-17 02:02:38 · 764 阅读 · 0 评论 -
Dubbo源码分析----过滤器之AccessLogFilter
dubbo的accessLog可以记录请求信息,配置如下:<dubbo:protocol accesslog="true" />然后配置一下日志文件就OK了,具体百度一下,这里只分析一下其中的原理。accessLog的处理是在filter中,具体为AccessLogFilter,看下类的定义@Activate(group = Constants.PROVIDER...原创 2018-07-17 00:57:43 · 1707 阅读 · 0 评论 -
Dubbo源码分析----容错
先看下Dubbo官方的一张图 Cluster是容错的核心,官方的说法是 Cluster 将 Directory 中的多个 Invoker 伪装成一个 Invoker,对上层透明,伪装过程包含了容错逻辑,调用失败后,重试另一个即Cluster是对外暴露的一个接口,内部返回一个集群版的Invoker,通过不同的容错策略,对从Directory中获取的invoker有不同的调用方式...原创 2018-04-03 00:32:20 · 1633 阅读 · 0 评论 -
Dubbo源码分析----网络通信相关
在暴露服务,执行到DubboProtocol的export方法的时候,会调用openServer方法,从这里开始,就是Dubbo开启请求监听的地方 private void openServer(URL url) { // find server. String key = url.getAddress(); //client 也可以暴...原创 2018-02-20 14:27:50 · 567 阅读 · 0 评论 -
Dubbo源码分析----DefaultFuture
前面两篇文章已经分析了provider和consumer之间的通信过程,那么还有几个问题:由于请求是异步的,provider返回结果到客户端之后,consumer怎么知道该结果是哪个请求的?由于请求是异步的,为何Dubbo能同步等待结果? 由于请求是异步的,provider返回结果到客户端之后,consumer怎么知道该结果是哪个请求的?先看下第一个问题,因为provide...原创 2018-07-22 15:43:51 · 3143 阅读 · 3 评论