摘要:
以dubbo使用netty4为通信框架来进行分析。 客户端请求编码总体流程如下: 总体流程很简单: 创建一个buffer 创建一个16位的byte[16] header,将魔数、请求标志、序列化协议ID、twoway/event标志、requestID、请求体长度写入header 之后序列化请求体,
阅读全文
posted @ 2018-01-03 16:38
赵计刚
阅读(1057)
推荐(0)
摘要:
netty4是2.5.6引入的,2.5.6之前的netty用的是netty3。在dubbo源码中相较于netty3,添加netty4主要仅仅改了两个类:NettyServer,NettyClient。还有就是编解码。 使用方式: 服务端: 客户端: 一、服务端 - NettyServer netty
阅读全文
posted @ 2018-01-02 20:42
赵计刚
阅读(7459)
推荐(0)
摘要:
一 netty的线程模型 在netty中存在两种线程:boss线程和worker线程。 1 boss线程 作用: accept客户端的连接; 将接收到的连接注册到一个worker线程上 个数: 通常情况下,服务端每绑定一个端口,开启一个boss线程 2 worker线程 作用: 处理注册在其身上的连
阅读全文
posted @ 2018-01-02 12:41
赵计刚
阅读(9112)
推荐(1)
摘要:
一 总体流程 二 源码解析 在HeaderExchangeHandler.received(Channel channel, Object message)方法之前,与服务端接收请求消息一样,不再赘述。 HeaderExchangeHandler.received(Channel channel,
阅读全文
posted @ 2017-11-12 19:31
赵计刚
阅读(5127)
推荐(0)
摘要:
一 总体流程图 二 源码解析 netty通信是在netty的handler中进行消息的接收处理和发送。来看一下NettyServer的handler。 NettyHandler.messageReceived 首先会执行NettyServer父类AbstractPeer的received方法,其调用
阅读全文
posted @ 2017-11-12 16:58
赵计刚
阅读(1962)
推荐(0)
摘要:
来看一下客户端请求代码: 在8.2 构建客户端源码解析中我们看到最终得到的demoService是一个proxy0代理对象。现在来分析第二行代码。 一 客户端请求总体流程 总体流程: 将请求参数(方法名,方法参数类型,方法参数值,服务名,附加参数)封装成一个Invocation 附加参数中的path
阅读全文
posted @ 2017-11-12 15:13
赵计刚
阅读(1879)
推荐(0)
摘要:
一 示例 1 配置文件: 2 Consumer 先来看DemoService demoService = (DemoService) context.getBean("demoService"); // 获取远程服务代理。 二 调用简图 三 总体代码调用链 极简版流程图: 在服务端会根据RpcInv
阅读全文
posted @ 2017-11-12 13:13
赵计刚
阅读(1052)
推荐(0)
摘要:
准备工作: 先启动两个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
赵计刚
阅读(1565)
推荐(0)
摘要:
服务提供端配置: 一 ServiceBean 1 继承实现关系 2 最终的ServiceBean实例 二 调用简图 三 代码调用链
阅读全文
posted @ 2017-11-12 13:09
赵计刚
阅读(869)
推荐(0)
摘要:
摘自 https://mp.weixin.qq.com/s/oq-1pQXyi2b8lGUz60j4BA 一个著名的日志系统是怎么设计出来的? 2017-10-31 刘欣 StuQ 来源|码农翻身编辑|Judy前言 Java 帝国在诞生之初就提供了集合、线程、IO、网络等常用功能,从 C 和 C++
阅读全文
posted @ 2017-10-31 19:22
赵计刚
阅读(519)
推荐(0)