gRPC

維基百科,自由的百科全書
跳至導覽 跳至搜尋
gRPC
開發者Google
首次發佈2016年8月,​9年前​(2016-08
當前版本1.45.0[1](2022年3月19日,​4年前​(2022-03-19
原始碼庫
  • {{URL|example.com|可选的显示文本}}
Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
程式語言Android JavaC♯C++DartGoJavaKotlin/JVMNode.jsObjective-CPHPPythonRuby
引擎
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    類型遠端程序呼叫框架
    許可協議Apache License 2.0
    網站grpc.io

    gRPC (gRPC Remote Procedure Calls[2]) 是一個跨平台開源高效能遠端程序呼叫RPC)框架。

    gRPC最初由Google建立,它使用一個通用的RPC基礎設施Stubby來連接其數據中心內外執行的大量微服務,始於2001年。[3]2015年3月,Google決定構建下一個版本的Stubby並將其開源,於是就有了gRPC。現在除了Google之外,許多組織都在使用它來支援從微服務到計算的「最後一英里」(移動、Web和物聯網)的使用案例。

    gRPC基於HTTP/2協定傳輸數據,使用Protocol Buffers作為介面描述語言,並提供認證(authentication)、雙向串流(bidirectional streaming)和流量控制、阻塞或非阻塞繫結以及取消和逾時(Deadlines)等功能。它為許多語言生成跨平台的用戶端和伺服器繫結。最常見的使用場景包括在微服務風格的架構中連接服務,或將流動裝置用戶端連接到後端服務。[4]

    gRPC對HTTP/2的複雜使用使得在瀏覽器中無法實現gRPC用戶端,而需要使用代理。[5]

    最常見的應用場景是[6]

    • 微服務框架下,多種語言服務之間的高效互動。
    • 將手機服務、瀏覽器連接至後台
    • 產生高效的用戶端庫

    身份驗證(Authentication)[編輯]

    gRPC支援使用傳輸層安全性協定(TLS)和基於權杖的身份驗證。連接到Google服務必須使用TLS。有兩種類型的憑據:通道憑據和呼叫憑據。對於基於權杖的授權,gRPC提供了伺服器攔截器[7]和用戶端攔截器[8]

    編碼(Encoding)[編輯]

    gRPC使用Protocol Buffers來編碼數據。Protocol buffers提供了一種序列化格式和介面描述語言[9]

    測試(Testing)[編輯]

    用於測試gRPC實現的一些軟件工具包括Postman、ezy[10]、Insomnia和Step CI[11]

    應用[編輯]

    許多不同的組織已經採用了gRPC,例如Uber,[12] Square, Netflix, IBM, CoreOS, Docker, CockroachDB, Arista Networks, Cisco, Juniper Networks,[13] Spotify,[14] Zalando,[15] Dropbox,[16] 以及作為原始開發者的Google。

    開源專案 u-bmc 使用gRPC替代智能平台管理介面(IPMI)。[17]2019年1月8日,Dropbox宣佈他們的服務導向架構(SOA)核心的RPC框架「Courier」的下一個版本將遷移到gRPC上,主要是因為它與他們現有的自訂RPC框架很好地契合。[18]

    gRPC的替代方案[編輯]

    參見[編輯]

    參考文獻[編輯]

    1. ^ gRPC releases. [2022-02-07]. (原始內容存檔於2022-05-04). 
    2. ^ FAQ. gRPC. [2022-10-10]. (原始內容存檔於2022-01-04) (English). 
    3. ^ gRPC: a true internet-scale RPC framework is now 1.0 and ready for production deployments. 24 August 2016 [2023-04-03]. (原始內容存檔於2024-01-23). 
    4. ^ About gRPC. gRPC. [2021-05-25]. (原始內容存檔於2020-12-22) (English). 
    5. ^ The state of gRPC in the browser. gRPC. 8 January 2019 [2024-03-02]. (原始內容存檔於2022-01-04) (en-us). 
    6. ^ About gRPC. gRPC. [2022-10-10]. (原始內容存檔於2020-12-22) (English). 
    7. ^ gRPC Server Interceptor. [2024-03-02]. (原始內容存檔於2024-06-09). 
    8. ^ gRPC. grpc.io. [2020-02-24]. (原始內容存檔於2022-01-04). 
    9. ^ JamesNK. Compare gRPC services with HTTP APIs. docs.microsoft.com. [2020-02-24]. (原始內容存檔於2023-12-07) (en-us). 
    10. ^ ezy on GitHub. [2024-03-02]. (原始內容存檔於2024-03-27). 
    11. ^ Step CI Documentation. [2024-03-02]. (原始內容存檔於2023-12-06). 
    12. ^ gRPC at Uber. 19 May 2021. 
    13. ^ gRPC. grpc.io. [2020-02-24]. (原始內容存檔於2020-11-24). 
    14. ^ gRPC at Spotify (PDF). jfokus.se. [2020-05-12]. (原始內容存檔 (PDF)於2021-10-27). 
    15. ^ Zalando Tech Radar. opensource.zalando.com. [2021-04-08]. (原始內容存檔於2021-10-20). 
    16. ^ How we migrated Dropbox from Nginx to Envoy. Dropbox.Tech. [2020-10-30]. (原始內容存檔於2022-01-04). 
    17. ^ u-bmc. GitHub.com. 5 October 2022 [2024-03-02]. (原始內容存檔於2022-01-04). 
    18. ^ Nigmatullin, Ruslan; Ivanov, Alexey. Courier: Dropbox migration to gRPC. 2019-01-08 [2019-01-09]. (原始內容存檔於2020-03-12). 

    外部連結[編輯]