RPC,即 Remote Procedure Call(远程过程调用),调用远程计算机上的服务,就像调用本地服务一样。 RPC 可以很好的解耦系统,如 WebService 就是一种基于 Http 协议的 RPC。这个 RPC 整体框架如下:

Netty RPC 实现

关键技术
1. 服务发布与订阅:服务端使用 Zookeeper 注册服务地址,客户端从 Zookeeper 获取可用的服务地址。
2. 通信:使用 Netty 作为通信框架。
3. Spring:使用 Spring 配置服务,加载 Bean,扫描注解。
4. 动态代理:客户端使用代理模式透明化服务调用。
5. 消息编解码:使用 Protostuff 序列化和反序列化消息。 

 

核心流程
1. 服务消费方( client)调用以本地调用方式调用服务;
2. client stub 接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;
3. client stub 找到服务地址,并将消息发送到服务端;
4. server stub 收到消息后进行解码;
5. server stub 根据解码结果调用本地的服务;
6. 本地服务执行并将结果返回给 server stub;
7. server stub 将返回结果打包成消息并发送至消费方;
8. client stub 接收到消息,并进行解码;
9. 服务消费方得到最终结果。

Netty RPC 实现

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2020-05-23
  • 2021-07-14
  • 2021-04-25
  • 2020-05-29
  • 2019-11-06
猜你喜欢
  • 2018-11-07
  • 2021-09-25
  • 2021-05-17
  • 2021-04-25
  • 2021-08-29
  • 2021-11-11
  • 2021-10-31
相关资源
相似解决方案