有人可以解释何时将协议缓冲区而不是JSON用于微服务架构吗?反之亦然?在同步和异步通信上。
答案 0 :(得分:5)
我们正在研究,您是否看过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,而无需进行很多取舍(如果有的话),同时提供了很多优势。