說點(diǎn)廢話:
如今RPC框架有很多種陕见,你使用他的時候并不需要了解他的實(shí)現(xiàn)方式它匕,甚至當(dāng)我第一次用RPC框架的時候我連TCP和HTTP都分不清楚。但用了就得知道怎么回事厌蔽,還是來了解一下RPC框架的原理是什么樣的,最好是去自己實(shí)現(xiàn)一下抢腐。
那么最開始的思路是這樣:RPC可以基于TCP姑曙、HTTP、UDP迈倍,基于TCP是通過socket鏈接進(jìn)行傳輸伤靠,通過傳輸定義的方法名和類型,再在client端進(jìn)行動態(tài)代理(golang是通過反射[1])去調(diào)用相關(guān)方法啼染。
https://github.com/SmarkSeven/socket
大佬寫的很好宴合,可以去看一下。
對于HTTP也有不一樣的好處迹鹅,如鑒權(quán)卦洽,代理,和普及的廣泛性斜棚,
https://blog.csdn.net/hengyunabc/article/details/81120904
這邊是一篇對于gRPC為什么基于HTTP2的思考
UDP…
總體來說各有利弊阀蒂,那么對于自己實(shí)現(xiàn)來說還是先從TCP來考慮。
先說對于每一個服務(wù)端的邏輯
node/main.go
func main() {
//1.注冊service
server := server.NewRPCService(server.RPCServiceMap{"stest": ""})
//2.加密方式
//3.服務(wù)初始化
server.InitRPCServer(":8081")
//4.啟動服務(wù)
server.Run()
//5.長連接注冊
//6.查找注冊鏈接的節(jié)點(diǎn)弟蚀,并進(jìn)行通訊
}