Google cloud platform 谷歌云发布订阅的Avro消息?

Google cloud platform 谷歌云发布订阅的Avro消息?,google-cloud-platform,google-cloud-messaging,publish-subscribe,google-cloud-pubsub,Google Cloud Platform,Google Cloud Messaging,Publish Subscribe,Google Cloud Pubsub,向Pub Sub发布和消费的最佳数据格式是什么?我在看Avro消息格式,因为它是二进制格式。 用例是有实时微服务应用程序将Avro消息发布到pub-sub。鉴于Avro消息最适合在批处理消息(以及附加有二进制消息的模式)然后发布消息时使用,那么对于涉及微服务的用例来说,这是一种更合适的格式吗 Google Cloud文档包含一些JSON示例,但在寻找效率时,主要建议使用,除非您的需求不能满足客户机库所能提供的功能,或者您正在运行,在这种情况下,建议使用两个API 事实上,提高效率的最重要因素是使

向Pub Sub发布和消费的最佳数据格式是什么?我在看Avro消息格式,因为它是二进制格式。
用例是有实时微服务应用程序将Avro消息发布到pub-sub。鉴于Avro消息最适合在批处理消息(以及附加有二进制消息的模式)然后发布消息时使用,那么对于涉及微服务的用例来说,这是一种更合适的格式吗

Google Cloud文档包含一些JSON示例,但在寻找效率时,主要建议使用,除非您的需求不能满足客户机库所能提供的功能,或者您正在运行,在这种情况下,建议使用两个API

事实上,提高效率的最重要因素是使用GRPCAPI而不是RESTAPI(库的调用默认情况下会这样做)。如上所述:

这里有两个主要因素在起作用:更有效的数据编码 和HTTP/2。gRPC将二进制数据保存在客户机内存和服务器上 通过构建HTTP/2和协议缓冲区进行连接。这消除了 字符串编码方案所需的处理和空间,如 Base64或JSON。此外,HTTP/2本身可以让事情变得更快 通过单个连接和报头压缩的多路复用请求

我在任何地方都没有发现数据格式的明确提及。我建议您对消息使用首选语言,例如Python。和

基于,您可以通过以下方式高效地优化PubSub系统:

  • 确保您正在使用gRPC
  • 在可能的情况下进行批处理,以减少调用次数并消除延迟
  • 仅在需要时和基准测试后压缩(意味着应用程序中有额外的逻辑)
  • 最后,如果您打算部署一个健壮的PubSub子系统,请看一看。她现在是谷歌的项目经理,提出并详细阐述了三个技巧:

  • 不要低估容量规划的重要性
  • 确保发布/订阅系统是容错的
  • NSM:永远不要停止监视

  • 对于用于所有用例的消息的最佳格式,不会有一个正确答案。Avro当然是一个受欢迎的选择。这将是另一种可能性,也可能是。对于发布/订阅,数据都是字节,由发布者和订阅者决定对这些数据的解释。人们使用不同的数据格式运行,因此您可能希望根据您在性能和消息大小方面的需要做出决定

    Pub/Sub本身使用协议缓冲区来执行。关于批处理,用户自己为发布进行批处理,因此您不必自己担心这一点。您可以根据您的用例控制批处理设置以优化吞吐量和延迟,例如,通过调用
    Publisher.Builder
    for Java(其他语言也有类似的功能)。如果您想将一些元数据与一组消息关联起来,而不是与每个消息关联起来,或者您在如何将消息批处理在一起方面有非常具体的需求,那么您可以决定自己进行批处理。否则,依靠客户端库进行批处理可能是正确的决定