当前位置: 首页 > 网络应用技术

GO语言,GRPC的理解

时间:2023-03-06 19:05:54 网络应用技术

  我们之前已经使用RPC来实现简单的服务,现在我们使用GRPC尝试。

  在我们的项目root中,命令行中的GO语言中GRPC库的安装命令如下:

  修改Hello.proto文件,并添加HelloService接口:

  然后使用Protoc-gen-GO内置GRPC插件生成GRPC代码:

  查看生成的Hello.pb.go文件,GRPC插件 - 为服务器和客户端生成不同的接口:

  GRPC通过context.context参数为每个方法调用提供上下文支持。

  基于基于服务器的HelloServiceserver界面,我们将重新实现HelloService服务:

  首先构建一个GRPC服务对象,然后注册由GRPC Plug -in生成的HelloServiceImpl服务,然后在监视端口上提供GRPC服务。

  客户link GRPC服务:

  GRPC.DIAL负责与GRPC服务建立链接,然后该函数基于已建立的链接来构建HelloServiceClient对象。返回客户端实际上是HelloServiceClient接口对象。接口定义的方法可以调用服务器提供的相应的GRPC服务。

  打开服务器并打开客户端。客户端的执行结果如下:

  以上是GRPC调用方法。还有三种方式。让我们在下面介绍它们。

  服务器 - 侧电流RPC,一个-way流,服务器是流,客户端是一个普通的-Yuan RPC请求。

  简而言之,客户端启动了普通的RPC请求。服务器通过流响应多次发送数据集,客户端RV接收数据集。

  原始:

  服务器:

  Hello参数和返回值是在编译原始时生成的.pb.GO文件中定义的,我们只需要实现它即可。

  服务器端,主要关注流。通过读取源代码,可以知道,生成原始代码后,根据定义生成了多种接口方法。最终,内部sendmsg方法是均匀安排的,涉及以下过程:

  客户:

  在客户端,主要关注该方法。该方法是该方法的包装,该方法将从流中读取完整的GRPC消息主体。我们可以知道:

  打开服务器并打开客户端。执行结果如下:

  客户端流RPC,两个 - 道路流rpc,未完成,继续...