dubbo源码分析
文章平均质量分 91
chenchangqun11
这个作者很懒,什么都没留下…
展开
-
dubbo序列化源码分析2-深入JDK,hessian序列化
JDK序列化实现Serializable接口被序列化的Object中的 Object属性必须实现 Serializable接口,否则报异常, 基本类型默认可以序列化。static 和transient关键字修饰的变量不会被实例化父类A没有实现Serializable 接口,子类B实现了Serializable 接口, A a=new B() 此时a可以序列化A a=new A() 此时 a不可以序列化,也就是 被序列化的是指向的是实现了 Serializable 接口的实例才可以。.原创 2020-08-14 21:21:39 · 429 阅读 · 0 评论 -
dubbo序列化源码分析1-序列化接口设计
分析 dubbo 序列化实现选中几个协议分析 源码 必选FastJson, jdk hessian2, msgpack 主流 序列化协议性能对比先找个简单的分析FastJsonSerializationdubbo FastJson序列化public class FastJsonSerialization implements Serialization { @Override public byte getContentTypeId() { //获取协议ID...原创 2020-08-14 20:34:31 · 326 阅读 · 0 评论 -
dubbo序列化源码分析0-jdk,hessian序列化性能测试
序列化长度对比数据内容:{"cache":{"test2":"qunge2","test1":"qunge1","test3":"qunge3"},"dataList":["tiancai1","tiancai2","tiancai3"],"id":256,"name":"hessian"}jdk serialize result length = 387hessian1 serialize result length = 194hessian2 serialize result lengt.原创 2020-08-14 20:28:11 · 249 阅读 · 0 评论 -
dubbo源码分析12-server代理创建和执行bind
之前 分析 consumer代理创建和发送请求的时候,进行了简单的分层,实际上并不准确, 本文将根据 dubbo开发文档中的分层进行分析,下面列出整体设计图例说明:图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口。图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系,每一层都可以剥离上层被复用,其中,Service 和 Config 层为 API,其它各层均为 SPI。图中绿色小块的为扩展接口,蓝色小原创 2020-08-14 20:14:48 · 207 阅读 · 0 评论 -
dubbo源码分析10-zookeeper注册中心
zookeeper注册中心 中比较重要的内容 父子类继承, 失败重试机制, 注册和订阅实现。下面逐个分析。父子类分析RegistryService:定义了注册,取消注册,订阅,取消订阅方法Registry:未定义方法AbstractRegistry:配置持久化功能。调用listenner。FailbackRegistry: subscribe,notify模板类, 提供 容错,独立线程失败重试,校验。ZookeeperRegistry:具体的注册订阅实现,依赖 Zookeeper...原创 2020-08-14 20:02:35 · 223 阅读 · 0 评论 -
dubbo源码分析9-心跳机制
服务端心跳机制分析启动心跳检测 public HeaderExchangeServer(Server server) { if (server == null) { throw new IllegalArgumentException("server == null"); } this.server = server; this.heartbeat = server.getUrl().getParameter(...原创 2020-08-14 19:57:20 · 649 阅读 · 0 评论 -
dubbo源码分析8-动态代理原理
javassist动态代理分析dubbo Javassist创建代理方法JavassistProxyFactory(AbstractProxyFactory).getProxy(Invoker<T>)public <T> T getProxy(Invoker<T> invoker) throws RpcException {Class<?>[] interfaces = null;String config = invoker.getUrl原创 2020-08-14 19:53:02 · 604 阅读 · 0 评论 -
dubbo序列化源码分析3-MessagePack协议
JSON格式:{"age":23,"cache":{"test2":"qunge2","test1":"qunge1","test3":"qunge3"},"dataList":["tiancai1","tiancai2","tiancai3"],"id":11,"name":"changqun"}messagepack格式: :��changqun��tiancai1�tiancai2�ti...原创 2020-08-14 21:25:23 · 303 阅读 · 0 评论 -
dubbo源码分析3-consumer订阅创建代理
订阅创建代理的第一部分红框之前的部分已经分析过,本文分析红框内的部分。private <T> Invoker<T> doRefer(Cluster cluster, Registry registry, Class<T> type, URL url) {RegistryDirectory<T> directory = new ...原创 2019-12-20 17:17:23 · 363 阅读 · 0 评论 -
dubbo源码分析1-consumer代理创建和连接分析1
创建代理和连接server详细分析由于整个过程超级复杂,整个分析的思路是先整体再局部,将复杂的流程拆分为多个部分逐个分析,这样比较容易理解。整理连接server流程图如下如果直连方式直接调用 DubboProtocol,如果配置了注册中心则通过注册中心获取 server url列表。然后调用DubboProtocol。(DubboProtocol代表与服务端建立连接创建执行代...原创 2019-12-20 17:17:45 · 204 阅读 · 0 评论 -
dubbo源码分析7-编码解码
本文分享内容如下:编码和解码入口分析 编码流程分析 编码-dubbo协议分析 解码流程分析 解码疑难代码分析编码和解码入口分析通过netty支持实现NettyClientprotected void doOpen() throws Throwable {NettyHelper.setNettyLoggerFactory();bootstrap = new C...原创 2019-12-20 17:18:16 · 373 阅读 · 0 评论 -
dubbo源码分析11-SPI机制分析
SPI 用于插件化设计,使具体实现和接口解耦,是一种 接口实现的发现机制。mysql jdbc就是 jdk SPI的经典应用jdk SPI的实现有一些优缺点优点:扩展功能实现了解耦缺点:(1)浪费:将接口的实现类全部加载并实例化一遍,不想用某些实现类,它也被加载并实例化了,(2)不灵活:不能获取指定的实现类,只能通过Iterator形式获取(3)线程不安全:多线程使用S...原创 2019-12-20 17:20:53 · 169 阅读 · 0 评论 -
dubbo源码分析6-consumer请求响应
consumer同步实现分析send执行链中HeaderExchangeChannel-request() 创建了 DefaultFuture,依赖 DefaultFuture实现同步功能。DefaultFuture 通过await,signal();实现请求和响应同步HeaderExchangeChannelpublic ResponseFuture request(Objec...原创 2019-12-20 17:18:51 · 169 阅读 · 0 评论 -
dubbo源码分析4-consumer发送请求
下面对调用链的方法进行简要的分析, 疑难的部分会重点分析。同时也会根据 上篇文章 创建代理 的分层逐个进行分析。直连方式的前半部分直连方式的后半部分,这部分与订阅方式的后半部分是相同的,所以单独提出来consumer发送请求调用链分析NettyChannel.send(Object, boolean) //调用 NioClientSocketChannel执行wri...原创 2019-12-20 17:21:17 · 239 阅读 · 0 评论 -
dubbo源码分析2-consumer代理创建和连接分析2
直连方式 源码分析直连创建代理的前半部分如下下面详细分析ProtocolFilterWrapper.refer(Class<T>, URL)创建包含 Filter的invoker执行链。public <T> Invoker<T> refer(Class<T> type, URL url) throws RpcException...原创 2019-12-20 17:16:57 · 229 阅读 · 0 评论 -
dubbo源码分析5-负载均衡算法
本文分享内容如下随机算法分析 轮询算法分析 最小活动数算法分析 一致性hash算法分析下面逐个进行分析随机算法分析实现类:RandomLoadBalanceprotected <T> Invoker<T> doSelect(List<Invoker<T>> invokers, URL url, Invocation invoc...原创 2019-12-20 17:22:25 · 157 阅读 · 0 评论