說點(diǎn)廢話:
如今RPC框架有很多種,你使用他的時(shí)候并不需要了解他的實(shí)現(xiàn)方式,甚至當(dāng)我第一次用RPC框架的時(shí)候我連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來考慮。
先說對于每一個(gè)服務(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)行通訊
}