現在已經有很多完善的開源rpc架構了,如果要理解程式如何能高效穩定運行,理解rpc建立的過程很有必要,自建過程大致可以分成兩部分,通訊部分和協調部分。
通訊部分有服務端和客戶端,服務端監聽約定好的端口,等待連接,客戶端建立與服務端的連結。為了資訊高效傳輸,資料需要序列化之後傳輸,接收後反序列化。
有了以上兩個需求,總結一些服務端和客戶端的功能。
服務端功能可以有:監聽埠、回應連線請求、接收資料包、解析資料包、呼叫回應方法、組裝請求處理結果資料包、傳送結果資料包;客戶端功能可以有:建立連接、組裝資料、發送資料包、接收處理結果資料包、解析資料包回傳結果。
到此一個簡單的rpc功能就完成了。
作為生產層級的產品,只有核心通訊功能是不夠用的,還需要協調管理功能,讓功能穩定且有效率地運作。
需要連線池加快連結建立的速度,叢集部署的消費者需要負載平衡,叢集中的節點需要路由管理,需要隨時維護服務狀態,剔除錯誤節點,需要優雅關閉,避免重啟導致訊息遺失,需要過載保護,丟棄超時請求等等。
好了綜上所述,再總結一下消費者和生產者的功能需求。
消費者可以有:連線管理、負載平衡、請求路由、逾時處理、健康檢查;生產者可以有:執行緒池、逾時丟棄、優雅關閉、過載保護。
以上是總結的自建rpc需要的功能,有遺漏歡迎補充。
#相關推薦:《java影片教學》
以上是自建RPC都需要哪些功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!