gRPC協議框架
TCP層:底層通信協議,基于TCP連接。
TLS層:該層是可選的,基于TLS加密通道。
HTTP2層:gRPC承載在HTTP2協議上,利用了HTTP2的雙向流、流控、頭部壓縮、單連接上的多 路復用請求等特性。
gRPC層:遠程過程調用,定義了遠程過程調用的協議交互格式。
編碼層:gRPC通過編碼格式承載數據,包括GPB(Google Protocol Buffer)編碼格式。
數據模型層:業務模塊的數據。通信雙方需要了解彼此的數據模型,才能正確調用信息。當前設備提 供了訂閱、配置、查詢業務模塊。 proto文件。
gRPC網絡模型
grpc會啟動多個線程的epoll來處理描述符,不管異步還是同步,每個epoll都對應一個線程。
同步模型
得益于SO_REUSEPORT參數,同一個listenfd可以被放到多個epoll中進行監聽 當一個鏈接成功建立后會生成acceptfd,這個acceptfd會被隨機的分配到現有的epoll中,目前grpc 的分配策略是輪詢(round-robin)
min poller, max poller, 自動根據調用的請求的頻次 進行自動伸縮poller。
異步模型
異步處理的epoll方式和同步是類似的,但對于rpc函數的響應提供了更靈活的處理機制,可以將一些耗 時的處理邏輯放到外部的線程池進行處理。
總結
gRPC 是一個高性能、開源的遠程過程調用(RPC)框架,由 Google 開發并基于 HTTP/2 和 Protocol Buffers(protobuf)構建。它支持多種編程語言,適用于微服務、分布式系統等場景,提供高效的通信和跨語言兼容性。
更多資料在:https://github.com/0voice查詢