grpc - 我可以用 gRPC 替换基于套接字的协议吗?
问题描述
我正在研究升级旧 TCP 套接字协议的选项,其中任一端都可以启动消息/事务,并且对 gRPC 作为选项很感兴趣。
我的标准是:
- 支持认证
- 第 7 层(与当前实现的第 4 层相比)
- 支持 TLS
从我目前所读到的,gRPC 拥有这一切。但是,我不清楚它是否具有点对点功能。我感兴趣的行为是:
- 客户端可以请求信息并向服务器发送命令(支持)
- 服务器可以主动向客户端发送更新(支持)
- #1 可能在 #2 发生时发生
在我看来,为案例 #2 定义服务器流是可行的。它基本上是一个
// use case 2
rpc SubscribeToEvents(EventsSubscriptionRequest) returns (stream EventDescriptor);
但是,当#2 处于活动状态时,我是否也可以使用案例#1?
// use case 1
rpc GetValue(ValueRequest) returns (ValueResponse);
提前感谢您的帮助和建议。
解决方案
假设您使用多线程实现,则 #1 和 #2 可以同时使用。
但是,您描述的是客户端-服务器场景,而不是点对点;客户端必须同时启动#1(一元)和#2(流式)RPC。
真正的点对点会让端点实现客户端和服务器,这样任何一个点都可以针对另一个点发起(一元和/或流式传输)RPC。
推荐阅读
- c# - 打破单一责任
- http - 如何在 Flutter 中通过 HTTP 发布请求发送参数?
- c# - 双击 ListView 的一行时选择了哪一列
- c# - 另一个 Unity3D 旋转问题:将旋转限制在一个范围内
- docker - 停止特定堆栈中的所有 docker 容器(保持配置文件夹完整)
- python - Ubuntu - Anaconda 2020.02 - 命名空间 Gtk 不可用
- php - 回显 HTML 标记周围的 PHP 语法错误
- sql-server - SQL Server - 使用游标避免 tempdb 存储问题
- angular - Angular + CSS 自定义属性语法
- c++ - 为 GTest 模拟自动生成代理对象