赵计刚
每天进步一点点

随笔分类 -  dubbo源码解析

1 2 下一页
9.7 dubbo心跳机制
摘要:dubbo的心跳机制: 目的:检测provider与consumer之间的connection连接是不是还连接着,如果连接断了,需要作出相应的处理。 原理: provider:dubbo的心跳默认是在heartbeat(默认是60s)内如果没有接收到消息,就会发送心跳消息,如果连着3次(180s)没 阅读全文
posted @ 2018-03-13 23:08 赵计刚 阅读(11835) 评论(0) 推荐(0) 编辑
第十五章 dubbo结果缓存机制
摘要:dubbo提供了三种结果缓存机制: lru:基于最近最少使用原则删除多余缓存,保持最热的数据被缓存 threadlocal:当前线程缓存 jcache:可以桥接各种缓存实现 一、使用方式 添加cache配置。 注意:dubbo结果缓存有一个bug,https://github.com/alibaba 阅读全文
posted @ 2018-02-10 17:28 赵计刚 阅读(4909) 评论(1) 推荐(0) 编辑
9.5 dubbo事件通知机制
摘要:dubbo事件通知机制:http://dubbo.io/books/dubbo-user-book/demos/events-notify.html 一、使用方式 两个服务: DemoService:真正要调用的服务 Notify:事件通知服务(用在consumer端) provider: cons 阅读全文
posted @ 2018-02-10 13:30 赵计刚 阅读(3693) 评论(0) 推荐(0) 编辑
9.4 dubbo异步调用原理
摘要:9.1 客户端发起请求源码、9.2 服务端接收请求消息并发送响应消息源码、9.3 客户端接收响应信息(异步转同步的实现) 分析了dubbo同步调用的源码,现在来看一下dubbo异步调用。 一、使用方式 服务提供方不变,调用方代码如下: 配置里添加<dubbo:method name="xxx" as 阅读全文
posted @ 2018-02-08 16:39 赵计刚 阅读(15946) 评论(0) 推荐(2) 编辑
13.1 dubbo服务降级源码解析
摘要:从 9.1 客户端发起请求源码 的客户端请求总体流程图中,截取部分如下: dubbo就是通过MockClusterInvoker来实现服务降级的。 一、示例 将dubbo-demo中的服务接口定义一个返回模型Car。提供者实现如下: 消费者使用如下: 二、使用方式 实际使用中,会通过直接在dubbo 阅读全文
posted @ 2018-01-20 15:00 赵计刚 阅读(3609) 评论(1) 推荐(0) 编辑
第十八章 dubbo-monitor计数监控
摘要:监控总体图: 红色:监控中心 - dubbo-simple-monitor 黄色:provider 蓝色:consumer 统计总体流程: MonitorFilter向DubboMonitor发送数据 DubboMonitor将数据进行聚合后(默认聚合1min中的统计数据)暂存到Concurrent 阅读全文
posted @ 2018-01-14 14:08 赵计刚 阅读(14633) 评论(2) 推荐(1) 编辑
12.4 客户端响应解码
摘要:客户端响应解码整体流程: 与 12.2 服务端请求解码 极其相似。 不同的地方是: DecodeableRpcResult: setValue:设置DecodeableRpcResult的Object result属性。 响应解码结束。 阅读全文
posted @ 2018-01-04 21:28 赵计刚 阅读(1290) 评论(0) 推荐(0) 编辑
12.3 服务端响应编码
摘要:服务端响应编码总体流程: 与 12.1 客户端请求编码 极其相似。 注意:响应编码中DubboCodec 注意:out.writeByte(RESPONSE_VALUE);写入这个响应类型,是为了将来客户端响应解码用的,具体见 12.4 客户端响应解码 请求编码的byte[] header的最终结构 阅读全文
posted @ 2018-01-04 21:07 赵计刚 阅读(398) 评论(0) 推荐(0) 编辑
12.2 服务端请求解码
摘要:服务端请求解码总体流程: 总体流程: 包装请求传过来的ByteBuf为NettyBackedChannelBuffer(简称buffer) 从buffer中读取header 之后检查魔数、检查header+请求体body总长度是否大于等于16 获取请求体body长度 解析出请求头header[2]中 阅读全文
posted @ 2018-01-04 20:40 赵计刚 阅读(1073) 评论(0) 推荐(0) 编辑
12.1 客户端请求编码
摘要:以dubbo使用netty4为通信框架来进行分析。 客户端请求编码总体流程如下: 总体流程很简单: 创建一个buffer 创建一个16位的byte[16] header,将魔数、请求标志、序列化协议ID、twoway/event标志、requestID、请求体长度写入header 之后序列化请求体, 阅读全文
posted @ 2018-01-03 16:38 赵计刚 阅读(1028) 评论(0) 推荐(0) 编辑
第十一章 dubbo通信框架-netty4
摘要:netty4是2.5.6引入的,2.5.6之前的netty用的是netty3。在dubbo源码中相较于netty3,添加netty4主要仅仅改了两个类:NettyServer,NettyClient。还有就是编解码。 使用方式: 服务端: 客户端: 一、服务端 - NettyServer netty 阅读全文
posted @ 2018-01-02 20:42 赵计刚 阅读(7418) 评论(1) 推荐(0) 编辑
第十章 dubbo线程模型
摘要:一 netty的线程模型 在netty中存在两种线程:boss线程和worker线程。 1 boss线程 作用: accept客户端的连接; 将接收到的连接注册到一个worker线程上 个数: 通常情况下,服务端每绑定一个端口,开启一个boss线程 2 worker线程 作用: 处理注册在其身上的连 阅读全文
posted @ 2018-01-02 12:41 赵计刚 阅读(8992) 评论(0) 推荐(1) 编辑
9.3 客户端接收响应信息(异步转同步的实现)
摘要:一 总体流程 二 源码解析 在HeaderExchangeHandler.received(Channel channel, Object message)方法之前,与服务端接收请求消息一样,不再赘述。 HeaderExchangeHandler.received(Channel channel, 阅读全文
posted @ 2017-11-12 19:31 赵计刚 阅读(5032) 评论(0) 推荐(0) 编辑
9.2 服务端接收请求消息并发送响应消息源码
摘要:一 总体流程图 二 源码解析 netty通信是在netty的handler中进行消息的接收处理和发送。来看一下NettyServer的handler。 NettyHandler.messageReceived 首先会执行NettyServer父类AbstractPeer的received方法,其调用 阅读全文
posted @ 2017-11-12 16:58 赵计刚 阅读(1941) 评论(0) 推荐(0) 编辑
9.1 客户端发起请求源码
摘要:来看一下客户端请求代码: 在8.2 构建客户端源码解析中我们看到最终得到的demoService是一个proxy0代理对象。现在来分析第二行代码。 一 客户端请求总体流程 总体流程: 将请求参数(方法名,方法参数类型,方法参数值,服务名,附加参数)封装成一个Invocation 附加参数中的path 阅读全文
posted @ 2017-11-12 15:13 赵计刚 阅读(1830) 评论(0) 推荐(0) 编辑
8.1 构建客户端总体流程
摘要:一 示例 1 配置文件: 2 Consumer 先来看DemoService demoService = (DemoService) context.getBean("demoService"); // 获取远程服务代理。 二 调用简图 三 总体代码调用链 极简版流程图: 在服务端会根据RpcInv 阅读全文
posted @ 2017-11-12 13:13 赵计刚 阅读(1040) 评论(0) 推荐(0) 编辑
8.2 构建客户端源码解析
摘要:准备工作: 先启动两个provider: dubbo://10.211.55.5:20880/com.alibaba.dubbo.demo.DemoService?anyhost=true&application=demo-provider&dubbo=2.5.7&generic=false&int 阅读全文
posted @ 2017-11-12 13:13 赵计刚 阅读(1545) 评论(0) 推荐(0) 编辑
7.8 服务暴露总结
摘要:服务提供端配置: 一 ServiceBean 1 继承实现关系 2 最终的ServiceBean实例 二 调用简图 三 代码调用链 阅读全文
posted @ 2017-11-12 13:09 赵计刚 阅读(866) 评论(0) 推荐(0) 编辑
7.7 服务远程暴露 - 订阅与通知(TODO)
摘要:为了安全:服务启动的ip全部使用10.10.10.10 远程服务的暴露总体步骤: 将ref封装为invoker 将invoker转换为exporter 启动netty 注册服务到zookeeper 订阅与通知 返回新的exporter实例 在7.4 服务远程暴露 - 创建Exporter与启动net 阅读全文
posted @ 2017-10-11 20:38 赵计刚 阅读(2661) 评论(0) 推荐(0) 编辑
7.6 服务远程暴露 - 注册服务到zookeeper
摘要:为了安全:服务启动的ip全部使用10.10.10.10 远程服务的暴露总体步骤: 将ref封装为invoker 将invoker转换为exporter 启动netty 注册服务到zookeeper 订阅 返回新的exporter实例 在7.4 服务远程暴露 - 创建Exporter与启动netty服 阅读全文
posted @ 2017-10-06 20:44 赵计刚 阅读(6395) 评论(1) 推荐(0) 编辑

1 2 下一页