当前位置:网站首页>A tour of gRPC:06 - gRPC client straming 客户端流
A tour of gRPC:06 - gRPC client straming 客户端流
2022-08-02 15:19:00 【InfoQ】
在上一篇中,我们尝试了使用server straming 的调用形式,在创建了十个Laptop并发送了一个筛选条 件后,由server多次返回符合筛选条件的结果,并且验证了这种调用形式的跨语言调用能力。在本篇 中,我们将尝试使用client straming 即 client 发送多次内容,而server在接收完所以内容后,返回一次 响应。本次我们将利用client straming 这种调用形式实现图像传输的功能
go Client Straming call
1. 修改 laptop_sercice.proto 增加三个和上传图片相关的message 和一个 rpc 函数,运行make gen 生成代码

2. 在service 下新建image_store.go 实现一个图像存储

3. 在laptop_server.go 下添加imageStore 内容,并在NewLaptopServer中新增一个参数

4. 将所有用到NewLaptopServer 和 store 的位置进行一下修改(test 和 main),运行一次单元测试
5. 实现laptop_server中的 UploadImage

6. 重构、修改 client 包下的main 代码

7. 在server包下的main.go代码

8. 编写一个单元测试进行测试

我们在项目的根目录下新建一个tmp文件夹,并存放一张命名为images.jpeg的图片。接下来,启动server和client尝试进行传输。



文件被正确且成功的传输了。观察server的log可以发现,如我们预期,图片是被分割发送的。我们可以计算一下 ,图片大小为6164,传输时分成了6个1024k和1个20k
Java Client Straming
1. 复制 go client Straming 中的laptop_service.proto 运行 mvn clean complie 对生成的代 码进行更新
2. 在 service 包下 创建一个ImageStore interface

3. 在 service 包下 创建ImageSotre 实体类

4. 在service 包下 创建 DiskImageStore实现上面的 ImageStore

5. 在LaptopService 下实现uploadImage

6. 修改 LaptopServer 中的 main 添加图片上传的内容

7. 运行Java 的server 再运行 golang 的client 可以看到 img 文件下收到了golang客户端发来的图片
8. 修改LaptopClient 并添加Java 客户端内容

9. 修改 LaptopService 增加一个最大上传限制

同上,我们运行测试一下


同样,文件被正确且成功的传输了。观察server 的 log 可以发现,如我们预期,图片是被分割发送的。计算一下 ,图片大小为 6164k ,传输时分成了 6 个 1024k 和 1个 20k
跨语言的 client straming call 测试
1. 运行 Java 的 server ,再运行 golang 的client

2. 运行 go 的 server ,再运行 Java 的 client




边栏推荐
猜你喜欢
随机推荐
MySQL-1-环境部署
Why do I no longer recommend the enumeration strategy pattern?
面试官的角度谈谈算法岗面试的过程(岗位涉及到OCR、目标检测、图像分割、语音识别等领域)
Go-5-简单介绍fmt库
面试必问的HashCode技术内幕
第十七天笔记
ICML/ICLR'22 推荐系统论文梳理
Qt | 设置部件大小 sizeHint、minimumSizeHint、sizePolicy、stretch factor
WWW'22 推荐系统论文之图神经网络篇
UnicodeEncodeError: 'gbk' codec can't encode character '\u2022' in position 178: illegal multibyte s
24、wpf之布局(二)
GFP-GAN学习笔记
OneFlow源码解析:Op、Kernel与解释器
节省50%成本!京东云重磅发布新一代混合CDN产品
VPP snort插件
MPLS实验
2.7 - 文件管理 2.8 - 多级目录结构 2.9 - 位示图
2022年值得尝试的7个MQTT客户端工具
Qt | 文件操作 QFile
Win 10、Win 11 安装 MuJoCo 及 mujoco-py 教程









