【发布时间】:2019-02-14 04:16:13
【问题描述】:
我必须设计和实施一个服务交付平台。我目前的设计中有各种服务,所有这些工具都使用不同的技术。有些是基于 erlang 的并发 map-reduce 函数,有些是用于聚合一些文本文件的简单 bash 脚本。
我听说过 XML/RPC、Protocol Buffer、message-pack、soup 和 AMQP。目前我使用 JSON,但加载和转储大型 json 文件有点费时/内存。是否有任何新的或稳健的方法可以在 HTTP 基础架构上的各种技术之间架起一座桥梁,并提供广泛的编程语言支持和良好的文档?
我还需要提及的是,我认为复杂性比延迟问题或其他与连接相关的问题更具腐蚀性。所以 JSON 替换不能增加设计的复杂性。
【问题讨论】:
-
如果你的 JSON 文件很大,你肯定会受到 HTTP 延迟的影响。服务调用是否会非常频繁地动态变化?
-
是的,例如授权服务一天会被调用200万次。并不是所有的 json 文件,但其中一些很大。
-
如果您的堆栈绑定到 HTTP 基础架构,我的直觉是您最好使用数据库 (NoSQL) 作为通信平台,具有最终一致性、缓存和异步服务调用,以最大限度地减少瓶颈。当然,我不熟悉您的微服务到底是做什么的,所以这只是您考虑的一个选项。
-
谢谢@Anzel,主要问题是通信协议。我对 json 很满意,但出于好奇,我正在寻找新技术。
-
没问题,仅供参考,如果您的微服务每个都不仅依赖另一个服务(或部分),那么“一个”通信协议是不够的,即。您将不得不处理排队、竞争条件和 I/O 等……恕我直言,这更多是关于通信策略而不是协议。无论如何,祝你好运,一切顺利;)
标签: python json xml-rpc microservices asynchronous-messaging-protocol