gRPC:高性能跨语言 RPC 框架
gRPC:高性能跨语言 RPC 框架
gRPC 在 GitHub 上已经拿到 44,857 Star 了。
Google 开源了这个框架,专门解决一个问题:让不同语言写的服务之间高效通信。基于 HTTP/2 和 Protocol Buffers,支持十多种编程语言。

1、这玩意儿是干嘛的
一句话:它是一个远程过程调用框架,让客户端像调用本地函数一样调用服务端的方法。
你写了一个 Go 服务,另一个团队用 Python 写服务,两边怎么通信?手写 HTTP 接口、拼 JSON、处理序列化,每一步都能踩坑。gRPC 把这些全包办了:定义好 proto 文件,生成客户端和服务端代码,直接开写业务逻辑。
底层走 HTTP/2,支持流式传输、头部压缩、多路复用。序列化用 Protocol Buffers,比 JSON 体积小、解析快。单向请求响应、服务端流、客户端流、双向流,四种通信模式都能覆盖。
2、为什么要用它
做微服务的人应该都体会过服务间通信的麻烦。
REST API 写起来简单,但接口文档和代码对不上、字段类型没人校验、版本升级一片红。gRPC 用 proto 文件当契约,代码和文档是同一个东西,字段类型强约束,接口变更编译期就能发现。
性能也是一大优势。Protocol Buffers 二进制序列化,比 JSON 省带宽;HTTP/2 的多路复用让单个连接能同时处理多个请求,延迟更低。官方有性能监控面板,master 分支每日构建的数据都在上面。
四种通信模式也很实用。除了常见的一请求一响应,服务端流适合推送实时数据,客户端流适合上传大文件分片,双向流适合做聊天或实时协作。
3、支持哪些语言

C++、C#、Dart、Go、Java、Kotlin、Node.js、Objective-C、PHP、Python、Ruby、WebJS……基本上主流后端语言全覆盖。
不同语言的实现状态有差异。C++ 核心库是共享的,其他语言有的直接基于核心库封装,有的是独立实现。Java、Go、Node.js 等社区活跃度很高,文档和示例也比较全。安装方式因语言而异,Go 用 go get,Python 用 pip,Node.js 用 npm,Java 从 Maven 仓库拉 JAR。
4、怎么用
先写 proto 文件定义服务和消息:
syntax = "proto3";
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
然后用 protoc 编译生成对应语言的代码,服务端实现接口,客户端直接调用。各语言的快速入门文档在官网能找到,代码示例也在 examples 目录里。预编译的每日构建包会上传到 packages 站点,想用最新版本可以直接下载。
遇到问题可以查看仓库里的故障排查指南,常见问题都有覆盖。
5、适合哪些人用
- 在搭微服务架构、需要高效服务间通信的后端开发者
- 做跨语言项目、团队技术栈不一致的工程师
- 对延迟敏感、需要流式数据传输的场景
- 用 Kubernetes 部署服务、需要标准化通信协议的基础设施团队
致的工程师
- 对延迟敏感、需要流式数据传输的场景
- 用 Kubernetes 部署服务、需要标准化通信协议的基础设施团队
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)