前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Why gRPC ?

Why gRPC ?

原创
作者头像
孟斯特
发布2023-11-25 09:36:58
1640
发布2023-11-25 09:36:58
举报
文章被收录于专栏:code人生code人生

gRPC(gRPC Remote Procedure Call)是由 Google 开发的开源 RPC 框架,它基于 HTTP/2 标准,使用 Protocol Buffers 作为接口定义语言(IDL)。gRPC 提供了一种高效、跨语言、跨平台的远程过程调用(RPC)解决方案,被广泛应用于构建分布式系统和微服务架构。以下是选择使用 gRPC 的一些主要原因:

1. 性能高效

  • HTTP/2 协议:gRPC 使用 HTTP/2 协议作为底层的传输协议,相比于 HTTP/1.x 具有更低的延迟、更高的效率和更好的性能。
  • 多路复用:HTTP/2 支持多路复用,允许多个请求同时在一个连接上进行,避免了 HTTP/1.x 中的线头阻塞(Head-of-line blocking)问题。
  • 二进制传输:使用 Protocol Buffers 作为默认的序列化格式,相较于 JSON 和 XML 具有更高的编解码效率,减小了数据传输的体积。

2. 跨语言和跨平台

  • gRPC 的接口定义语言(IDL)使用 Protocol Buffers,支持多种编程语言,如 Java、Go、C++、Python、Ruby 等,使得不同语言的服务能够无缝地进行通信。
  • gRPC 不仅可以在不同的编程语言中使用,还可以在不同的操作系统上运行,包括 Linux、Windows、macOS 等。

3. 接口定义简单

  • 使用 Protocol Buffers 进行接口定义,语法简洁清晰,易于阅读和维护。
  • 支持请求和响应中的复杂数据结构,并提供了方便的工具来生成客户端和服务端的代码。

4. 自动化工具支持

  • gRPC 提供了丰富的工具,如 Protocol Buffers 编译器、gRPC 插件等,使得接口的生成和维护更加方便。
  • 支持使用工具生成客户端和服务端的代码,避免手动编写重复性的代码。

5. 强大的生态系统

  • gRPC 不仅提供了核心的 RPC 功能,还支持服务发现、负载均衡、中间件等功能,使其成为构建微服务架构的理想选择。
  • 有丰富的社区支持,支持的语言和平台不断增加,相关工具和库也在不断完善。

6. 支持流式传输

  • gRPC 支持基于流的传输,允许客户端和服务端通过一个连接同时发送多个消息。
  • 支持单向流、双向流和请求-响应的多种通信模式,适用于各种复杂的应用场景。

7. 安全性

  • gRPC 支持基于 TLS 的安全连接,确保数据在传输过程中的机密性和完整性。
  • 支持多种身份验证机制,包括基于令牌的身份验证、SSL/TLS 证书身份验证等。

8. IDL-First 开发模式

  • gRPC 提倡 Interface Definition Language(IDL)优先的开发模式,通过定义接口的形式来约定服务的行为,确保客户端和服务端之间的一致性。
  • IDL-First 的开发方式使得服务的定义更加清晰,更容易进行版本管理和演化。

选择使用 gRPC 的公司和项目包括 Google、Netflix、Square 等,它在构建高性能、跨语言、分布式系统方面表现出色,成为了现代分布式架构中的一个重要组成部分。

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!


声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。


原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 性能高效
  • 2. 跨语言和跨平台
  • 3. 接口定义简单
  • 4. 自动化工具支持
  • 5. 强大的生态系统
  • 6. 支持流式传输
  • 7. 安全性
  • 8. IDL-First 开发模式
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档