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

协议缓冲区vs Json-何时选择一个,json,rest,protocol-buffers,microservices,Json,Rest,Protocol Buffers,Microservices,有人能解释一下什么时候在微服务体系结构中使用协议缓冲区而不是JSON吗?反之亦然?同步和异步通信。当消费者使用或可能使用内置JSON本机支持的语言(例如Javascript)、web浏览器或需要可读性的语言编写时,我会使用JSON。说到这里,至少对于异步调用,许多开发人员享受着直接检查队列内容以进行调试的便利,甚至在正常的开发过程中也是如此。根据所使用的技术堆栈,使用protobuf来减少网络负载可能值得,也可能不值得,因为在异步世界中,任何性能的提高都买不到多少东西。我们不再像以前在大多数语言

有人能解释一下什么时候在微服务体系结构中使用协议缓冲区而不是JSON吗?反之亦然?同步和异步通信。

当消费者使用或可能使用内置JSON本机支持的语言(例如Javascript)、web浏览器或需要可读性的语言编写时,我会使用JSON。说到这里,至少对于异步调用,许多开发人员享受着直接检查队列内容以进行调试的便利,甚至在正常的开发过程中也是如此。根据所使用的技术堆栈,使用protobuf来减少网络负载可能值得,也可能不值得,因为在异步世界中,任何性能的提高都买不到多少东西。我们不再像以前在大多数语言中使用JSON编组和反编组那样需要编写一堆锅炉板代码

我会用protobuf做其他的。。。如果有任何其他的用例与上面的注意事项一起留给它。您可能会看到一些优势,例如性能、网络负载、版本控制方案提供的向后兼容性、神奇地随原型文件附带的可爱文档以及一些验证!如果出于某种原因,您在微服务之间有很多REST或其他同步调用,那么protobuf可以通过线路而不是JSON发送,而无需进行任何权衡(如果有的话),同时提供了大量优势。

何时使用JSON
  • 您需要或希望数据是人类可读的
  • web浏览器直接使用服务中的数据
  • 服务器端应用程序是用JavaScript编写的
  • 您不准备将数据模型绑定到架构
  • 你没有足够的带宽将另一个工具添加到你的武器库中
  • 运行不同类型的网络服务的操作负担 太棒了
ProtoBuf的优点
  • 相对较小的尺寸
  • 确保类型安全
  • 防止架构冲突
  • 提供简单的访问器
  • 快速序列化/反序列化
  • 向后兼容性
当我们在看的时候,你看了吗

这里介绍了其中的一些方面

参考:


为什么不使用flatbuffer,capNProto?@非常感谢你的回答。您还可以在回答中讨论flatbuffer、capNProto的用例、优缺点。您也可以使用jsoniter scala获得ProtoBuf for JSON的所有这些优点。当没有太多的浮点数进行序列化时,它可以与ProtoBuf的最佳Java/Scala序列化程序竞争:注意,JSON的一些缺点可以通过使用JsonSchema验证JSON来解决。即:类型安全、模式冲突和部分向后兼容性问题。