作者:自由就是幸2602880665 | 来源:互联网 | 2023-05-16 07:42
本文主要分享【GRPC服务】,技术文章【AtourofgRPC:05-gRPCserverstraming服务端流】为【BUG_zhentan】投稿,如果你遇到侦探工作笔记,Atou
本文主要分享【GRPC服务】,技术文章【A tour of gRPC:05 - gRPC server straming 服务端流】为【BUG_zhentan】投稿,如果你遇到侦探工作笔记,A tour of gRPC相关问题,本文相关知识或能到你。
GRPC服务
在上一篇中,我们实现了gRPC中的unary call,即客户端发一个请求,服务端回复一个响应。并尝试了 它在跨语言的情型下调用。在本篇中,我们将尝试实现 server straming 即客户端发送一个请求,服务 端回复多个响应,并同样尝试跨语言的调用。
go server straming call
1. 添加filter_message.proto 用于描述筛选条件。
2. 修改laptop_service.proto 添加 一个搜索的 service。
3. 运行 make clean 和 make gen 生成代码
4. 在laptop_store.go 在 LaptopStore 接口中添加 Search 函数,并添加相应实现。(因为深拷⻉多次使用,这里抽出一个函数)
5. 在laptop_server.go 中添加 SearchLaptop 方法
6. 将 client 包下的 main.go 中的 createLaptop 逻辑抽出来,并在main函数中利用 for 创建10个; 添加一个过滤条件
7. make server运行服务器 make client 运行客户端,查看结果,运行正常
可以观察到,在创建了10个Laptop,接收了筛选条件后,server 会检查逐条检查map中的数据,如果 符合,则返回一条,即结果分多次逐条返回。
Java server straming call
1. 将 gRpc go Straming 中编写的filter_message.proto和 laptop_service.protp 文件拷⻉ 至 Java 项目的 proto 文件夹中,并运行 mvn clean 和 mvn comple
2. 在LaptopStore 接口中新增 search 方法
3. 新增一个接口LaptopStream 其只有一个 send 方法
4. 在InMemoryLaptopStore 中实现上面新增的 search 方法
5. 在LaptopService 编写一个 searchLaptop 方法作作为服务端的实现。
6. 接下来实现LaptopClient 中实现客户端逻辑,增加一个 SearchLaptop 方法。
7. 修改 LaptopClient 中的main方法,先创建10个Laptop再进行过滤查询
运行server 再运行 client
可以观察到,server的结果是多次返回的,这也是 server straming 的特性。
跨语言的 server straming call 测试
我们先运行Java 的 server 再运行 golang 的client。
再反过来,运行 golang 的 server 和 Java 的 client。
运行的结果符合预期,并且符合 server straming 的特性。
本文《A tour of gRPC:05 - gRPC server straming 服务端流》版权归BUG_zhentan所有,引用A tour of gRPC:05 - gRPC server straming 服务端流需遵循CC 4.0 BY-SA版权协议。