Bootstrap

RPC (2)

RPC (2)

由于精力原因,本次就不画图了(一部分原因也是自己对netty的执行还不够熟悉)

预计RPC(4)会将执行流程详细做图介绍,RPC(5)中会涉及优化部分(估计还是5比4先出了)

客户端与服务端的具体代码如下,并添加部分注释

服务器部分
请添加图片描述

会在NettyServerHandler中对RpcRequest进行处理
请添加图片描述

客户端部分

调用动态代理的服务,会执行invoke方法

请添加图片描述

RpcClient中会将RpcRequest发送到服务器,并接收服务端返回的结果

请添加图片描述

ChannelProvider会将bootstrap进行初始化,并尝试

链接服务器(有重新链接次数的限定),最后将通道channel返回
请添加图片描述
请添加图片描述

详细说明已经在代码中注释,

这里介绍下相对底层一点的执行过程

添加group,就会有一个线程进行循环监听事件(accept事件)

选择Channel实现

添加处理器(监听到accept事件后才会启动)

开始监听

客户端类似,但会主动连接到服务器

服务器监听到accept事件后,会在内部调用initChannel方法

同一时间,客户端也会调用 initChannel方法

执行后,会在channel中添加处理器

客户端的sync方法,会在链接建立后调用,得到channel实体后

会调用writeAndFlush发送数据

发送数据时,会调用加在channel上的处理器内部具体的方法

服务端接收到客户端的数据后,会在某个EventGroup中处理读数据

同样会由加载在channel上的处理器进行处理(按照添加的顺序进行处理)

;