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

ProtocolBuffers/Thrift是否适用于数据中心之间的通信和消息传递?

艾国安
2023-03-14

目前,我们在多个地理区域拥有数据中心,每个数据中心托管着需要相互通信的不同应用程序和服务。目前,我们正在使用http进行通信,出于性能原因,希望探索其他协议。可以使用ProtocolBuffers或Thrift通过tcp/ip在地理区域之间进行通信吗?如果是这样的话,延迟是否会扼杀协议缓冲区或节俭提供的任何性能提升?是否有其他合适的选择?

共有1个答案

杨星纬
2023-03-14

我不熟悉Apache Thrift,但我认为您误解了协议缓冲区的用途。协议缓冲区是一种数据序列化格式,很像JSON或XML;它没有指定或实现任何特定的网络传输(您可以通过TCP或UDP进行传输,或者将其保存到磁盘,甚至可以通过HTTP进行传输)。即使是协议缓冲区的服务特性也只是为您生成接口和存根实现;开发人员需要实现一种来回发送消息的方法。

请参阅Protocol Buffers Developer Guide(Protocol Buffers开发人员指南),以了解更多关于协议缓冲区的实际内容以及它对您的益处。在您的情况下(替换基于HTTP的协议),协议缓冲区可能会减少您现在可能发送的XML或JSON中固有的一些大小开销,因为它不会在人类可读性上浪费字节

 类似资料:
  • 我很好奇节俭是否适合我的用例?我正在制作另一个消息传递系统,其中有一个客户端和服务器,但客户端和服务器都会向另一个发送请求消息,并且并非所有消息都是请求,只是通知。 回到10年前,我用基于二进制的手卷编解码器做到了这一点。回到5年前,我使用Google协议缓冲区再次做到了这一点。但我现在听到了更多关于Thrift的信息。 Thrift可以简单地用作编解码器吗,还是它真的是围绕请求/回复模式构建的?

  • 它只是没有触发我需要的onmessageReceed。有人能帮忙吗?

  • 新服务器密钥是否仅限于消息传递? 说明:在firebase项目设置中,我可以获得“旧”和新服务器密钥(云消息选项卡)。旧版本无法通过发送推送通知https://fcm.googleapis.com/fcm/send 因为响应说它是一个遗留服务器密钥。但在这里,它可以被限制在某些谷歌API中https://console.developers.google.com/apis. 谷歌API控制台中没有

  • 问题内容: 通过TCP流发送()/ write()消息时,如何确定这些字节是否已成功传递? 接收方通过tcp确认接收到字节,因此发送方tcp堆栈应该知道。 但是当我send()一些字节时,即使无法发送数据包,send()也会立即返回,我在netcat上使用strace在linux 2.6.30上进行了测试,在发送一些字节之前先拔出网络电缆。 我只是在开发一个应用程序,在该应用程序中了解消息是否已传

  • 我目前正在制作一个有edittext和2个按钮的应用程序,每次我在edittext中写一些东西,然后按下按钮1,就会添加一个新的textview。这是代码: 基本上,我正在做的是添加新的“玩家”,一旦我添加了他们,我想按下按钮2。Button2打开一个新活动,新活动应该读取我在前一个活动中添加的所有textviews。

  • 在一个pet项目(cassandra、spark、hadoop、kafka)上工作时,我需要一个数据序列化框架。查看常见的三个框架——即Thrift、Avro和Protocolbuffers——我注意到它们中的大多数似乎都死气沉沉,一年最多发布两次小版本。 这让我有两个假设: 它们与这样一个框架一样完整,只要不需要新功能,就处于维护模式 如果有人能给我一个暗示,我的假设,任何投入都是受欢迎的。