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). 

    外部链接[编辑]