目录
gRPC 的特点使用 gRPC 定义服务端使用 gRPC 的客户端gRPC
是通信协议基于 HTTP/2
,支持多语言的 RPC
框架,使用 Protobuf
作为它的接口设计语言(IDL
),可以通过 protoc
工具生成 Golang
语言的结构体。
RPC:Remote Procedure Call
的缩写,译为远程过程调用(也可译为远程方法调用或远程调用),它是计算机通信协议。该协议可以实现调用远程服务就像调用本地服务一样简单,无需关心跨网络,跨平台,跨语言等问题。
gRPC
消息序列化方式通常使用 Protobuf
,它是二进制格式,体积小,网络传输快,占用带宽流量少,调用性能更高。
(资料图片仅供参考)
gRPC 的特点
IDL
gRPC
使用 ProtoBuf
来定义服务,ProtoBuf
是由 Google
开发的一种数据序列化协议(类似于 XML
、JSON
)。ProtoBuf
能够将数据进行序列化,并广泛应用在数据存储、通信协议等方面。
多语言支持
gRPC
支持多种语言,并能够基于语言自动生成客户端和服务端功能库。目前已提供了 C
版本 grpc
、Java
版本 grpc-java
和 Go
版本 grpc-go
,其中,grpc
支持 C
、C++
、Node.js
、Python
、Ruby
、Objective-C
、PHP
和 C#
等语言,grpc-java
已经支持 Android
开发。
HTTP2
gRPC基于HTTP2标准设计,带来了更多强大功能,如双向流、头部压缩、多复用请求等。这些功能带来重大益处,如节省带宽、降低TCP链接次数、节省CPU使用和延长电池寿命等。同时,gRPC还能够提高了云端服务和Web应用的性能。gRPC既能够在客户端应用,也能够在服务器端应用,从而以透明的方式实现客户端和服务器端的通信和简化通信系统的构建。
使用 gRPC 定义服务端
gRPC 默认使用 Protobuf 作为接口设计语言,在 .proto
文件中使用 service 关键字定义服务,使用 rpc 和 returns 关键字定义指定请求参数和返回结果的方法。
gRPC 提供了 Protobuf 编译器插件 protoc-gen-grpc
,用于编译 .proto
文件,生成服务端和客户端代码,我们只需在服务端编写实现 Api 的代码,然后在客户端调用 Api。
syntax = "proto3"; import "google/protobuf/any.proto"; package hello; option go_package = "proto/gen/go"; message HelloReq { string name = 1; } message HelloResp { int32 code = 1; string greet = 2; google.protobuf.Any details = 3; } service HelloService { rpc Greet(HelloReq) returns (HelloResp); }
使用 gRPC 的客户端
通过 protoc 命令编译 .proto
文件,自动生成服务端和客户端代码。
在服务端,手动编写生成的服务端方法的业务逻辑代码,然后运行 gRPC 服务,接收并处理客户端请求,gRPC 服务自动解码请求参数,然后执行服务的方法,并将返回结果自动进行编码。
在客户端,实现和服务相同的方法,然后客户端可以本地调用这些方法,将请求参数封装在 Protobuf 的消息类型中,gRPC 将请求发送给服务器,并返回服务器的 Protobuf 序列化方式的响应消息。
参考文章:
Golang 语言 gRPC 到底是什么?
gRPC简介
到此这篇关于Golang语言实现gRPC的具体使用的文章就介绍到这了,更多相关Golang gRPC内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 2充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 3好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 4名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 5亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 6京东绿色建材线上平台上线 新增用户70%来自下沉市场
- 7网红淘品牌“七格格”chuu在北京又开一家店 潮人新宠chuu能红多久
- 8市场竞争加剧,有车企因经营不善出现破产、退网、退市
- 9北京市市场监管局为企业纾困减负保护经济韧性
- 10市场监管总局发布限制商品过度包装标准和第1号修改单