簡體   English   中英

gRPC cpp 同步與異步服務器性能

[英]gRPC cpp synchronous vs asynchronous server performance

我了解同步和異步服務器之間的區別,但是我想知道是否有這兩種情況,哪一種異步或同步的性能更高?

  1. 同步:寫調用將被阻塞,直到消息准備好從內部完成隊列在線發送。 異步:寫調用立即返回,我們需要等待完成隊列。 在同步服務器中,如果我們添加基本上為 evry Write 調用填充的隊列和其他排空它的線程並執行 stream.write 那么性能將是相同的怎么辦?

  2. 同步:gRPC 在內部創建線程池,線程數等於 CPU 的數量 異步:線程取決於實現。 因此,如果對於每個客戶端,如果我們創建單獨的線程和完成隊列,同步和異步的性能是否相同?

理論上很難比較性能。 根據經驗,如果您的選擇是讓 gRPC 以設計處理的方式在內部處理並發調用,還是使用同步 API 自己管理 gRPC 調用並發性,則 gRPC 內部的性能可能會比您可以管理的更好你自己。 該建議可能有例外,具體取決於許多變量……例如,如果服務器正在執行非常快速且廉價的操作並且消息很小,則同步 API 可能沒問題。

最后,基准測試是您的朋友。

gRPC 性能建議: https ://grpc.io/docs/guides/performance/#c

官方 gRPC 基准測試(開發中): https ://performance-dot-grpc-testing.appspot.com/explore?dashboard=5180705743044608。 這些基准測試的基礎可能會為您的設計選擇提供信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM