实现RPC框架(一) - golang socket通讯

说点废话:
如今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.查找注册链接的节点,并进行通讯
}

注[1] :Go - 反射中 函数 和 方法 的调用 - v.Call()

你可能感兴趣的:(实现RPC框架(一) - golang socket通讯)