概述
本篇文章之所以位于docker目录,是因为是在学习docker底层原理的过程中,涉及到了grpc框架,需要对该框架有一个完整的了解。
本文基本上是对grpc官方文档的一个总结归纳,没有新鲜的东西。
主要包括以下一些内容:
- gRPC
- buffers.gRPC协议
- Interface Definition Language(IDL)
- 消息交换格式
简介
使用gRPC框架,你可以在一个客户端程序中直接调用位于另一个机器上的方法,就好像在调用一个本地方法一样,这使得我们可以很容易创建一个分布式的应用程序
和服务。
和其他的rpc系统一样,gRPC也是继续以下一些事实:
一、
- 定义一个服务
- 声明可以被远程调用的方法的参数和返回类型
二、在服务端
- 实现我们已经定义好的接口
- 启动一个gRPC服务来处理来自客户端的调用请求
三、在客户端
- 在客户端有一个存根(某些语言中称之为客户端)同样提供了这些方法
Protocol Buffers
默认情况下,gRPC使用Google开源用于序列化数据的第三方库。下面是一个对其工作机制的快速介绍。
第一步,自己新建一个扩展名为.proto的文本文件中定义一个你想要序列化的数据格式。示例如下:
1 | message Person { |
第二步,在定义了数据结构之后,使用protocol buffer提供的编译工具protoc来生成指定语言的数据类,对于上面的定义,可以生成一个名为Person的类。
更进一步的,你可以在proto文件中定义服务,方法,入参,返参等等
1 | // The greeter service definition. |
上述文件也可以使用protoc来生成对应的文件。
协议版本
protocol buffer是有多个版本的,不同版本的语法可能有不同。