协议缓冲区vs杰森-何时选择一个

时间:2018-09-19 15:39:15

标签: json rest protocol-buffers microservices

有人可以解释何时将协议缓冲区而不是JSON用于微服务架构吗?反之亦然?在同步和异步通信上。

2 个答案:

答案 0 :(得分:5)

何时使用JSON

  • 您需要或希望数据是人类可读的
  • 该服务中的数据直接由网络浏览器使用
  • 您的服务器端应用程序是用JavaScript编写的
  • 您不准备将数据模型绑定到架构上
  • 您没有足够的带宽向武器库中添加其他工具
  • 运行另一种网络服务的运营负担 太好了

ProtoBuf的优点

  • 保证类型安全的人
  • 防止架构冲突
  • 为您提供简单的访问器
  • 快速序列化/反序列化
  • 向后兼容

我们正在研究,您是否看过flatbuffers

google protocol buffers vs json vs XML

涵盖了某些方面

参考:

https://codeclimate.com/blog/choose-protocol-buffers/

https://codeburst.io/json-vs-protocol-buffers-vs-flatbuffers-a4247f8bda6f

答案 1 :(得分:1)

当使用者使用或可能以内置了JSON原生支持的语言(例如Javascript),Web浏览器或需要人类可读性的语言编写时,我会使用JSON。至少对于异步调用而言,许多开发人员享受到直接检查队列内容以进行调试甚至在正常开发过程中的便利。根据所使用的技术堆栈,使用protobuf来减少网络负载可能不值得进行权衡,因为在异步世界中,任何性能上的提高都不会给您带来很多好处。而且,这就像我们以前用大多数语言进行JSON编组和解编时一样,不再需要编写一堆样板代码。

我将把protobuf用于其他所有事情...如果还有上述考虑的其他用例。您可能会看到一些优点,例如性能,网络负载,其版本控制方案提供的向后兼容性,原始文件神奇地附带的精美文档以及一些验证!如果由于某种原因在微服务之间有大量的REST或其他同步调用,则可以通过有线而不是JSON来发送protobuf,而无需进行很多取舍(如果有的话),同时提供了很多优势。