Transporter

Dubbo重要概念介绍

非 Y 不嫁゛ 提交于 2019-11-30 19:55:34
1.proxyFactory:就是为了获取一个接口的代理类,例如获取一个远程接口的代理。 它有2个方法,代表2个作用 a.getInvoker:针对server端,将服务对象,如DemoServiceImpl包装成一个Invoker对象。 b.getProxy :针对client端,创建接口的代理对象,例如DemoService的接口。 2.Wrapper:它类似spring的BeanWrapper,它就是包装了一个接口或一个类,可以通过wrapper对实例对象进行赋值 取值以及制定方法的调用。 3.Invoker:它是一个可执行的对象,能够根据方法的名称、参数得到相应的执行结果。 它里面有一个很重要的方法 Result invoke(Invocation invocation), Invocation是包含了需要执行的方法和参数等重要信息,目前它只有2个实现类RpcInvocation MockInvocation 它有3种类型的Invoker 1.本地执行类的Invoker server端:要执行 demoService.sayHello,就通过InjvmExporter来进行反射执行demoService.sayHello就可以了。 2.远程通信类的Invoker client端:要执行 demoService.sayHello,它封装了DubboInvoker进行远程通信

聊聊dubbo的ExecutionDispatcher

烈酒焚心 提交于 2019-11-29 04:02:47
序 本文主要研究一下dubbo的ExecutionDispatcher ExecutionDispatcher dubbo-2.7.3/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/dispatcher/execution/ExecutionDispatcher.java public class ExecutionDispatcher implements Dispatcher { public static final String NAME = "execution"; @Override public ChannelHandler dispatch(ChannelHandler handler, URL url) { return new ExecutionChannelHandler(handler, url); } } ExecutionDispatcher实现了Dispatcher接口,其dispatch方法返回的是ExecutionChannelHandler ExecutionChannelHandler dubbo-2.7.3/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache

Dubbo - 技术选型

偶尔善良 提交于 2019-11-27 01:35:39
Zookeeper注册中心 Stable 支持基于网络的集群方式,有广泛周边开源产品,建议使用dubbo-2.3.3以上版本(推荐使用) 依赖于Zookeeper的稳定性 Simple监控中心 Stable 支持JFreeChart统计报表 没有集群支持,可能单点故障,但故障后不影响RPC运行 Dubbo协议 Stable 采用NIO复用单一长连接,并使用线程池并发处理请求,减少握手和加大并发效率,性能较好(推荐使用) 在大文件传输时,单一连接会成为瓶颈 Netty Transporter Stable JBoss的NIO框架,性能较好(推荐使用) 一次请求派发两种事件,需屏蔽无用事件 序列化方案 Hessian Serialization Stable 性能较好,多语言支持(推荐使用) Hessian的各版本兼容性不好,可能和应用使用的Hessian冲突,Dubbo内嵌了hessian3.2.1的源码 接口代理生成方案 Javassist ProxyFactory Stable 通过字节码生成代替反射,性能比较好(推荐使用) 依赖于javassist.jar包,占用JVM的Perm内存,Perm可能要设大一些:java -XX:PermSize=128m 集群容错 Failover Cluster Stable 失败自动切换,当出现失败,重试其它服务器,通常用于读操作(推荐使用)