我们之前已经使用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,未完成,继续...