• A tour of gRPC:06 - gRPC client straming 客户端流


    在上一篇中,我们尝试了使用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


     

  • 相关阅读:
    C# Winfrom 常用功能整合-2
    CANN算子:利用迭代器高效实现Tensor数据切割分块处理
    PyCharm高校固定资产管理系统django-python+vue
    JavaScript高级
    谐波减速机轻量组合型在工业机器人中的应用
    C#基础入门教程-字符串(String)
    【云原生】SpringCloud系列之服务调用OpenFeign(日志配置、异常解码器、更改负载均衡策略、替换默认通信组件等)
    问题:conda删除虚拟环境,报错no package names supplied
    小程序进阶-长(多行)文本内容展开与收起、单行文本溢出隐藏
    一文学会Canal怎么用
  • 原文地址:https://blog.csdn.net/BUG_zhentan/article/details/126103359