Netty RPC 实现
概念
RPC,即 Remote Procedure Call(远程过程调用),调用远程计算机上的服务,就像调用本地服务一样。RPC 可以很好的解耦系统,如 WebService 就是一种基于 Http 协议的 RPC。这个 RPC 整体框架
如下:
关键技术
-
服务发布与订阅:服务端使用 Zookeeper 注册服务地址,客户端从 Zookeeper 获取可用的服务地址。
-
通信:使用 Netty 作为通信框架。
-
Spring:使用 Spring 配置服务,加载 Bean,扫描注解。
-
动态代理:客户端使用代理模式透明化服务调用。
-
消息编解码:使用 Protostuff 序列化和反序列化消息。
核心流程
-
服务消费方(client)调用以本地调用方式调用服务;
-
client stub 接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;
-
client stub 找到服务地址,并将消息发送到服务端;
-
server stub 收到消息后进行解码;
-
serve