實現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()

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。