说点废话:
如今RPC框架有很多种,你使用他的时候并不需要了解他的实现方式,甚至当我第一次用RPC框架的时候我连TCP和HTTP都分不清楚。但用了就得知道怎么回事,还是来了解一下RPC框架的原理是什么样的,最好是去自己实现一下。
那么最开始的思路是这样:RPC可以基于TCP、HTTP、UDP,基于TCP是通过socket链接进行传输,通过传输定义的方法名和类型,再在client端进行动态代理(golang是通过反射[1])去调用相关方法。
https://github.com/SmarkSeven/socket
大佬写的很好,可以去看一下。
对于HTTP也有不一样的好处,如鉴权,代理,和普及的广泛性,
https://blog.csdn.net/hengyunabc/article/details/81120904
这边是一篇对于gRPC为什么基于HTTP2的思考
UDP…
总体来说各有利弊,那么对于自己实现来说还是先从TCP来考虑。
先说对于每一个服务端的逻辑
node/main.go
func main() {
//1.注册service
server := server.NewRPCService(server.RPCServiceMap{"stest": ""})
//2.加密方式
//3.服务初始化
server.InitRPCServer(":8081")
//4.启动服务
server.Run()
//5.长连接注册
//6.查找注册链接的节点,并进行通讯
}