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上的处理器进行处理(按照添加的顺序进行处理)