iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
自我挑戰組

gRPC通訊框架認識與實作系列 第 19

gRPC通訊框架認識與實作【Day 19】

  • 分享至 

  • xImage
  •  

做完兩種Client單發對上Server多發的實作後,今天就來比較一下,兩個不同的client端有什麼不同。

Client03 Client04
建立連線使用函數 newBlockingStub() newStub()
連線方式 同步(阻塞) 非同步(非阻塞)
接收數據方式 使用迭代器 使用StreamObserve樣板程式

在兩個不同的連線方式中,最根本的差異就是使用同步以及非同步的連線方式。

在client03中使用的是同步的連線方式,他會等待server端將全部的資料都傳送過來之後,才會關閉連線,因此我們在接收資料的時候會使用迭代器來接收資料;但在client04中,因為我們採用的是非同步的連線方式,我們要讓client端保持監聽的狀態,所以使用StreamObserver的樣板程式,並且使用awaitTermination()讓client等待我們所指定的時間,這樣可以更好的讓我們掌握client關閉的時機,避免資源的浪費。

總結主要差異在於同步連線方式會阻塞呼叫stream,而非同步連線方式允許在等待回應時繼續執行其他操作。選擇哪種連線方式取決於應用程式的需求和效能要求。對於簡單的request-response情境,同步方式可能較容易理解和管理,但對於需要處理併發請求和stream的情境,非同步方式則更適合,因為它可以提高效能和回應時間。


上一篇
gRPC通訊框架認識與實作【Day 18】
下一篇
gRPC通訊框架認識與實作【Day 20】
系列文
gRPC通訊框架認識與實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言