之前学了一下Netty也做了一个Netty websocket的实时通讯工具,了解到公司有自研的RPC框架,为了了解一下就想自己捣鼓捣鼓,方便理解RPC
一 RPC干啥的?
RPC(Remote Procedure Call),即远程过程调用--(我个人觉得有点像c/s系统) 它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络实现的技术。
常见的RPC框架有:阿里的Dubbo,Spring旗下的Spring Cloud,Google出品的grpc等。
流程解读:
- 服务消费方(client)以本地调用方式调用服务
RPC封装部分
- client stub 接收到调用后负责将方法、参数等封装成能够进行网络传输的消息体
- client stub 将消息进行编码并发送到服务端
- server stub 收到消息后进行解码
- server stub 根据解码结果调用本地的服务
- 本地服务执行并将结果返回给 server stub
- server stub 将返回导入结果进行编码并发送至消费方
- client stub 接收到消息并进行解码
- 服务消费方(client)得到结果
这样做的效果是客户得到远程的结果像是直接调用本地方法一样