gRPC
简介
RPC(Remote Procedure Call, 远程过程调用).是一种协议,用来屏蔽分布式计算当中的各种调用细节,使得可以像是本地调用一样直接调用一个远程函数.
gRPC是一个高性能的开源的RPC框架.
通过某种方式描述一个服务,这种描述方式是语言无关的.在这个”服务定义”的过程中,我们描述了我们提供的服务名是什么,有哪些方法可以被调用,这些方法以什么样的方式入参,有什么的回参.
定义好服务之后,gRPC会屏蔽底层的细节,client只需要直接调用定义好的方法,就能拿到预期的结果.server端还需要实现定义的方法.
Protocol Buffss
这是谷歌开源的一套成熟的数据结构序列化机制
这个工具可以把我们定义的方法,转换成特定语言的代码.在发送请求和接收响应时,这个工具还会完成对应的编码和解码工作.
proto文件
message
需要传输的数据格式的定义
字段规则
required:
optional:
repeated:
消息号
每个字段都必须要有一个唯一的标识号[1, 2^29-1]
服务
1 | service SearchService { |
服务端编写
- 创建gRPC Server对象
- 将server注册到gRPC Server的内部注册中心
- 创建Listen, 监听TCP端口
- gRPC Server 开始lis.Accept, 直到Stop
客户端编写
- 创建与给定目标的连接交互
- 创建server的客户端对象
- 发送RPC请求,等待同步响应,得到回调后返回响应结果
- 输出响应结果
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Napleon!
评论