grpc

疯啦吧你發表於2024-06-07
  1. rpc使服務之間的方法呼叫像本地一樣,感知不到網路通訊的存在。

  2. rpc是基於tcp協議的,但grpc是基於http2協議的。http2的好處是公開通用。

  3. rpc主要有兩個工作,序列化(物件轉換為二進位制,用於網路傳輸),編解碼(被呼叫方收到資料包,需要知道他的方法名,輸入引數在資料包的起始位置等)

  4. grpc中函式中的context引數是啥意思

    在 gRPC 中,函式中的context引數是用於傳遞上下文資訊的物件。它提供了一種在不同的函式呼叫之間共享狀態、傳遞截止時間、取消訊號以及其他相關資訊的方式。 context引數通常被用作第一個引數傳遞給 gRPC 服務方法。

    透過context,可以實現以下功能:

    • 截止時間控制:可以設定請求的截止時間,當超過截止時間時,gRPC 框架可以自動取消請求。
    • 取消請求:可以透過context傳送取消訊號,通知正在進行的請求取消操作。
    • 傳遞後設資料:可以在context中新增鍵值對形式的後設資料,這些後設資料可以在服務端和客戶端之間進行傳遞。
    • 共享狀態:可以在context中儲存和共享一些與請求相關的狀態資訊。 context的使用使得 gRPC 服務能夠更好地處理併發請求、超時情況和取消操作,同時也方便了在不同函式之間傳遞相關的上下文資訊。
  5. context.abort()

    context.abort() 是 gRPC 框架中用於終止 RPC(Remote Procedure Call)呼叫的方法。它可以在伺服器端或客戶端使用,用於在出現錯誤或異常情況時,主動中斷正在進行的 RPC 呼叫,並向對方傳送一個錯誤狀態碼和可選的詳細資訊。 以下是 context.abort() 的一般用法:

    1. 在伺服器端,當伺服器在處理 RPC 呼叫時遇到錯誤或異常情況,可以呼叫 context.abort() 來終止該呼叫。這將導致客戶端收到一個錯誤響應,並可以根據錯誤狀態碼進行相應的處理。
    2. 在客戶端,當客戶端發現與伺服器的連線出現問題或 RPC 呼叫超時等情況時,也可以呼叫 context.abort() 來中斷呼叫。 透過使用 context.abort(),可以在 gRPC 通訊中及時處理錯誤情況,並提供更明確的錯誤反饋。這樣可以幫助開發者更好地處理異常情況,增強系統的健壯性和可靠性。

相關文章