代码之家  ›  专栏  ›  技术社区  ›  Kaidul

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

  •  3
  • Kaidul  · 技术社区  · 6 年前

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

    2 回复  |  直到 6 年前
        1
  •  23
  •   so-random-dude    4 年前

    何时使用JSON

    • 来自服务的数据直接由web浏览器使用
    • 服务器端应用程序是用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

        2
  •  4
  •   Gerry Mantha    6 年前

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

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