9.7 dubbo心跳机制
摘要:dubbo的心跳机制: 目的:检测provider与consumer之间的connection连接是不是还连接着,如果连接断了,需要作出相应的处理。 原理: provider:dubbo的心跳默认是在heartbeat(默认是60s)内如果没有接收到消息,就会发送心跳消息,如果连着3次(180s)没
阅读全文
posted @
2018-03-13 23:08
赵计刚
阅读(12056)
推荐(0) 编辑
第十五章 dubbo结果缓存机制
摘要:dubbo提供了三种结果缓存机制: lru:基于最近最少使用原则删除多余缓存,保持最热的数据被缓存 threadlocal:当前线程缓存 jcache:可以桥接各种缓存实现 一、使用方式 添加cache配置。 注意:dubbo结果缓存有一个bug,https://github.com/alibaba
阅读全文
posted @
2018-02-10 17:28
赵计刚
阅读(5046)
推荐(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
赵计刚
阅读(3741)
推荐(0) 编辑
9.4 dubbo异步调用原理
摘要:9.1 客户端发起请求源码、9.2 服务端接收请求消息并发送响应消息源码、9.3 客户端接收响应信息(异步转同步的实现) 分析了dubbo同步调用的源码,现在来看一下dubbo异步调用。 一、使用方式 服务提供方不变,调用方代码如下: 配置里添加<dubbo:method name="xxx" as
阅读全文
posted @
2018-02-08 16:39
赵计刚
阅读(16044)
推荐(2) 编辑
13.1 dubbo服务降级源码解析
摘要:从 9.1 客户端发起请求源码 的客户端请求总体流程图中,截取部分如下: dubbo就是通过MockClusterInvoker来实现服务降级的。 一、示例 将dubbo-demo中的服务接口定义一个返回模型Car。提供者实现如下: 消费者使用如下: 二、使用方式 实际使用中,会通过直接在dubbo
阅读全文
posted @
2018-01-20 15:00
赵计刚
阅读(3665)
推荐(0) 编辑
第十八章 dubbo-monitor计数监控
摘要:监控总体图: 红色:监控中心 - dubbo-simple-monitor 黄色:provider 蓝色:consumer 统计总体流程: MonitorFilter向DubboMonitor发送数据 DubboMonitor将数据进行聚合后(默认聚合1min中的统计数据)暂存到Concurrent
阅读全文
posted @
2018-01-14 14:08
赵计刚
阅读(14796)
推荐(1) 编辑
12.4 客户端响应解码
摘要:客户端响应解码整体流程: 与 12.2 服务端请求解码 极其相似。 不同的地方是: DecodeableRpcResult: setValue:设置DecodeableRpcResult的Object result属性。 响应解码结束。
阅读全文
posted @
2018-01-04 21:28
赵计刚
阅读(1318)
推荐(0) 编辑
12.3 服务端响应编码
摘要:服务端响应编码总体流程: 与 12.1 客户端请求编码 极其相似。 注意:响应编码中DubboCodec 注意:out.writeByte(RESPONSE_VALUE);写入这个响应类型,是为了将来客户端响应解码用的,具体见 12.4 客户端响应解码 请求编码的byte[] header的最终结构
阅读全文
posted @
2018-01-04 21:07
赵计刚
阅读(410)
推荐(0) 编辑
12.2 服务端请求解码
摘要:服务端请求解码总体流程: 总体流程: 包装请求传过来的ByteBuf为NettyBackedChannelBuffer(简称buffer) 从buffer中读取header 之后检查魔数、检查header+请求体body总长度是否大于等于16 获取请求体body长度 解析出请求头header[2]中
阅读全文
posted @
2018-01-04 20:40
赵计刚
阅读(1101)
推荐(0) 编辑
12.1 客户端请求编码
摘要:以dubbo使用netty4为通信框架来进行分析。 客户端请求编码总体流程如下: 总体流程很简单: 创建一个buffer 创建一个16位的byte[16] header,将魔数、请求标志、序列化协议ID、twoway/event标志、requestID、请求体长度写入header 之后序列化请求体,
阅读全文
posted @
2018-01-03 16:38
赵计刚
阅读(1052)
推荐(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
赵计刚
阅读(7450)
推荐(0) 编辑
第十章 dubbo线程模型
摘要:一 netty的线程模型 在netty中存在两种线程:boss线程和worker线程。 1 boss线程 作用: accept客户端的连接; 将接收到的连接注册到一个worker线程上 个数: 通常情况下,服务端每绑定一个端口,开启一个boss线程 2 worker线程 作用: 处理注册在其身上的连
阅读全文
posted @
2018-01-02 12:41
赵计刚
阅读(9099)
推荐(1) 编辑
9.3 客户端接收响应信息(异步转同步的实现)
摘要:一 总体流程 二 源码解析 在HeaderExchangeHandler.received(Channel channel, Object message)方法之前,与服务端接收请求消息一样,不再赘述。 HeaderExchangeHandler.received(Channel channel,
阅读全文
posted @
2017-11-12 19:31
赵计刚
阅读(5121)
推荐(0) 编辑
9.2 服务端接收请求消息并发送响应消息源码
摘要:一 总体流程图 二 源码解析 netty通信是在netty的handler中进行消息的接收处理和发送。来看一下NettyServer的handler。 NettyHandler.messageReceived 首先会执行NettyServer父类AbstractPeer的received方法,其调用
阅读全文
posted @
2017-11-12 16:58
赵计刚
阅读(1957)
推荐(0) 编辑
9.1 客户端发起请求源码
摘要:来看一下客户端请求代码: 在8.2 构建客户端源码解析中我们看到最终得到的demoService是一个proxy0代理对象。现在来分析第二行代码。 一 客户端请求总体流程 总体流程: 将请求参数(方法名,方法参数类型,方法参数值,服务名,附加参数)封装成一个Invocation 附加参数中的path
阅读全文
posted @
2017-11-12 15:13
赵计刚
阅读(1876)
推荐(0) 编辑
8.1 构建客户端总体流程
摘要:一 示例 1 配置文件: 2 Consumer 先来看DemoService demoService = (DemoService) context.getBean("demoService"); // 获取远程服务代理。 二 调用简图 三 总体代码调用链 极简版流程图: 在服务端会根据RpcInv
阅读全文
posted @
2017-11-12 13:13
赵计刚
阅读(1051)
推荐(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
赵计刚
阅读(1562)
推荐(0) 编辑
7.8 服务暴露总结
摘要:服务提供端配置: 一 ServiceBean 1 继承实现关系 2 最终的ServiceBean实例 二 调用简图 三 代码调用链
阅读全文
posted @
2017-11-12 13:09
赵计刚
阅读(868)
推荐(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
赵计刚
阅读(2689)
推荐(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
赵计刚
阅读(6455)
推荐(0) 编辑