当前位置: 首页 > 知识库问答 >
问题:

为什么gRPC使用长度前缀消息?

鄢飞鸾
2023-03-14

我想了解gRPC是如何使用HTTP2发送流消息的?链接https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md说,

“长度前缀消息项的重复序列在数据帧中传递”

通过阅读此声明,我的理解是,每个(protobuf)消息都由gRPC封装在一个HTTP2数据帧中,并发送到服务器上。如果是这样的话,那么为什么gRPC需要在消息中附加长度前缀,它不能简单地读取完整的数据帧主体并假设它是一条完整的消息吗?

我错过了什么?

共有1个答案

景才英
2023-03-14

缺少的部分是不能保证一个DATA帧只包含一个gRPC消息。gRPC消息是一个更高层的流,作为HTTP/2的有效载荷。它可以按照您在官方gRPC库中描述的方式实现,但是就协议而言,使用多个gRPC PDU接收某些DATA帧是完全有效的。

 类似资料:
  • 本文向大家介绍为什么要使用 kafka,为什么要使用消息队列?相关面试题,主要包含被问及为什么要使用 kafka,为什么要使用消息队列?时的应答技巧和注意事项,需要的朋友参考一下 缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。 解耦和扩展性:项目开始的

  • 递归长度前缀RLP(Recursive Length Prefix)编码方案是在以太坊Ethereum中使用的一种空间有效的对象序列化方案。 规范本身在黄皮书中定义,而下面的页面在ethereum Wiki中定义。

  • 在我们的应用程序中,我们计划使用RoleVoter机制,但我们希望删除ROLE前缀,因为我们实现的安全性更多地基于任务,而不是基于角色。 从技术上讲,实现没有问题,但我在文档中发现,不鼓励使用前缀为空的RoleVoter。 我想知道为什么? AFAICS,唯一的问题是,如果没有前缀,角色选择器将参与其不打算参与的决策(例如,,,…)May返回拒绝的访问,而不是弃权。 您能确认这是唯一一个前缀为空的

  • 在PostgreSQL中获得最长前缀匹配的准确快速查询的最佳方法是什么? 是: 我计划在更新中使用。有什么想法吗?

  • 正如维基所说: 一组字符串的最长公共子字符串可以通过为字符串构建一个通用后缀树来找到,然后从其下方子树中的所有字符串中找到具有叶节点的最深内部节点 正如贾斯汀所说: 在(紧凑的)后缀树中,您需要找到最深的内部节点,这些节点包含所有字符串中的叶节点。如果在同一深度有多个节点,则必须比较该节点表示的字符串长度。i、 e.ABC、BC和C都有相同的深度,因此您必须比较ABC、BC和C字符串的长度,看看哪

  • 本文向大家介绍PHP中的'@'前缀有什么作用?,包括了PHP中的'@'前缀有什么作用?的使用技巧和注意事项,需要的朋友参考一下 “ @”符号可防止错误显示在屏幕上。 PHP支持错误控制运算符,即符号(@)。在PHP表达式之前添加该表达式时,将忽略使用该表达式时可能生成的错误消息。 如果启用track_errors属性,则表达式生成的错误消息将保存在名为$php_errormsg的变量中。每次发生错