Grpc的四种通信方式

网络编程(23)——使用grpc进行通信 一元RPC该文件用于定义名为Greeter 的gRPC 服务和两个消息类型:HelloRequest 和 HelloReply。指定使用 Protocol Buffers 的语法版本,这里使用的是 proto3 版本;定义 protobuf 文件所属的包,包名 hello 将这个 proto 文件中定义的所有内容(包括服务和消息)归属于一个逻辑命名空间,防止与其他 proto 文件中的定义冲突;定义名为 Greeter 的 gRPC 服务; 阅读详情

rpc

我们知道对于net/rpc来说 , 我们需要注册一个函数那么就需要满足

func (t *T) MethodName(argType T1 ,replyType *T2) error

很明显这个是一个请求对应一个响应 , 因此即是简单的rpc通信

grpc通信类别

grpc 分为以下四种通信方式 :

简单RPC : 一个请求 , 返回一个响应
服务端流式RPC : 一个请求 , 返回多个响应
客户端流式RPC : 多个请求 , 返回一个响应
双向流式RPC : 多个请求 , 返回多个响应

服务端流模式

我们只需要在proto中更改一下即可

业务场景 :
客户端向服务端发送一个股票代码 , 服务端就把该股票的实时数据源源不断的返回给客户端

提问1 : 为什么我不能用简单RPC模式返回一个切片的形式代替服务端流模式呢
其实可以代替 , 但是对于服务器如果要生成大量数据传输给客户端,那么简单的RPC模式就要等待所有数据都生成完毕才能收到响应。这会使得客户端等待时间过长,甚至导致网络超时

service YourService {
   
   
  rpc serverStreamHello(Person) returns (stream Result) {
   
   }
}

处理流数据

// 调用serverStreamHello方法并获取响应流
stream, err := client.ServerStreamHello(context.Background(), person)
if err != nil {
   
   
    log.Fatalf("Failed to call RPC method: %v", err)
}

// 遍历响应流并处理每个Result消息
for {
   
   
    result, err := stream
C# 搭建GRPC,实现双向通信 一、新建项目,定义GRPC服务接口 vs新建dll项目,项目中NuGet程序包添加Grpc相关引用 定义服务,创建.proto文件 创建文件CorrespondService.proto syntax = "proto3"; package My.Public; service CorrespondGrpcService { rpc SendMsg(GrpcData) returns (GrpcResult); rpc ReceiveDataFromServer(GrpcData) r 阅读详情

相关推荐

gRPC Python 教程(二):ProtoBuf语法与gRPC四种通信方式的实现

gRPC 用于进程间通信,接口定义采用protobuf 规范,可用于取代REST接口,接口数据采用了压缩算法,因此速度比restful 要快8倍以上,支持双向通信,长连接,是构建微服务有力工具

Python技术探索 2179

python 实战 grpc

title: grpc| python 实战 grpcdescription: 只要代码可以跑起来, 很多难题都会迎刃而解. so, keep coding and stay hungry.

Avaricious_Bear的博客 1450

15. 【gRPC系列学习】gRPC四种通信模式:一元RPC、客户端流RPC、服务端流RPC、双向流RPC

gRPC四种通信模式

菜鸟的博客 1400

海康读码器上位机开发避坑指南:IDMVS客户端之外,如何用C# SDK搞定扫码、数据比对与实时控制?

本文详细介绍了如何利用海康读码器的C# SDK进行二次开发,实现从基础扫码到复杂工业控制的全流程解决方案。内容涵盖SDK架构解析、多设备管理系统构建、业务逻辑与设备控制实现,以及系统集成与性能优化等关键环节,为工业自动化领域的开发者提供实用指南。

weixin_30642561的博客 550

MATLAB图像去噪实战:如何用巴特沃斯滤波器完美去除横条纹(附完整代码)

本文详细介绍了如何使用MATLAB中的巴特沃斯滤波器有效去除图像中的横条纹噪声。通过频域分析和滤波处理,结合完整的代码示例,帮助读者掌握从噪声分析到参数优化的全流程技术,实现高质量的图像去噪效果。

weixin_30566063的博客 563

华三R4900 G5服务器实战:用PMC P460-B4阵列卡配置RAID1+RAID6,并搞定CentOS 7.9安装(含热备盘设置)

本文详细解析了在华三R4900 G5服务器上使用PMC P460-B4阵列卡配置RAID1+RAID6混合阵列的全过程,包括热备盘设置和CentOS 7.9系统安装。通过实战步骤和性能优化建议,帮助企业IT人员高效部署高可用存储方案,特别适合需要数据冗余和系统稳定性的企业级应用场景。

weixin_29248653的博客 358

【数据分析/商业分析】面试题整理——SQL专题

数据分析\商业分析—面试题整理 自己总结的SQL类的面试题 文章目录数据分析\商业分析—面试题整理1.新增用户2.活跃用户数量3.连续登录4.次(n)日留存5.每个科目下分数最高的两名学生

awater_17的博客 1859

Vue3 - 实现用户上传本地视频文件到服务器+上传进度条+暂停续传+中断取消上传等,视频上传后可在线播放预览已上传的视频,视频文件上传视频回显示例代码(支持Element、Antd等upload组件

实现视频上传和视频预览,vue3实现视频上传功能,上传视频回显,视频流上传播放功能,vue与axios上传视频并显示上传进度,upload组件实现视频文件上传视频回显,upload组件实现视频上传及进度条展示,视频上传及实时进度条显示,视频上传过程中如何中断上传,VUE3+element 上传视频,大文件分片上传+断点续传,axios大文件切片上传,Vue3上传视频后如何播放预览,上传本地视频到后端服务器及在线预览播放视频+移除视频+进度条上传,将已选视频上传服务端并可预览视频,详细实现选择视频并上传到服务

🏆 前端领域优质创作者 3115

生成mm grounding dino的onnx模型并在x-anylabeling中使用

X-AnyLabeling 是一款cvhub开发的交互式自动标注工具,其基于AnyLabeling进行构建和二次开发,在此基础上扩展并支持了许多的模型和功能,并借助Segment Anything和YOLO等主流模型提供强大的 AI 支持。其最新版基于grounding dino可以实现开放词汇检测及生成掩码。2024年,MMDet 3.3.0提出了 MM-Grounding-DINO。

blanokvaffy的博客 1729

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: GoWeb template.ParseFiles页面空白解析
GzmObject
博客等级 码龄5年 538粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值