#goCode#rpc简单实现
2020-02-18 本文已影响0人
aHeartToGo
什么是rpc
RPC:Remote Procedure Call 远程过程调用,解决分布式系统中服务调用问题,能够让系统像调用本地方法那样调用远程方法。
目前市场很多rpc框架,比如:grpc,Dubbo,Thrift等
核心原理
server:暴露服务,服务提供方
client:消费服务,调用远程服务
registr:服务注册与发现(不一定会有)
客户端(client functions):服务调用方。
客户端存根(client stub):存放服务端地址信息,将客户端的请求参数数据信息打包成网络消息,再通过网络传输发送给服务端。
服务端存根(server stub):接收客户端发送过来的请求消息并进行解包,然后再调用本地服务进行处理。
服务端(server functions):服务的真正提供者。
network:底层传输,可以是 TCP 或 HTTP。传输过程涉及到序列化反序列化
实践
ahtg-rpc-client:客户端模块
ahtg-rpc-codec:序列化模块(alibaba.fastjson)
ahtg-rpc-coommon:公共方法
ahtg-rpc-proto:协议模块
ahtg-rpc-server:服务模块
ahtg-rpc-transport:网络通信模块
demo 代码:https://gitee.com/XiaLi17/ahtg-rpc