【问题标题】:What is the best way for applications to communicate in micro-service architectures应用程序在微服务架构中进行通信的最佳方式是什么
【发布时间】:2019-02-14 04:16:13
【问题描述】:

我必须设计和实施一个服务交付平台。我目前的设计中有各种服务,所有这些工具都使用不同的技术。有些是基于 erlang 的并发 map-reduce 函数,有些是用于聚合一些文本文件的简单 bash 脚本。

我听说过 XML/RPCProtocol Buffermessage-packsoup AMQP。目前我使用 JSON,但加载和转储大型 json 文件有点费时/内存。是否有任何新的或稳健的方法可以在 HTTP 基础架构上的各种技术之间架起一座桥梁,并提供广泛的编程语言支持和良好的文档?

我还需要提及的是,我认为复杂性比延迟问题或其他与连接相关的问题更具腐蚀性。所以 JSON 替换不能增加设计的复杂性。

【问题讨论】:

  • 如果你的 JSON 文件很大,你肯定会受到 HTTP 延迟的影响。服务调用是否会非常频繁地动态变化?
  • 是的,例如授权服务一天会被调用200万次。并不是所有的 json 文件,但其中一些很大。
  • 如果您的堆栈绑定到 HTTP 基础架构,我的直觉是您最好使用数据库 (NoSQL) 作为通信平台,具有最终一致性、缓存和异步服务调用,以最大限度地减少瓶颈。当然,我不熟悉您的微服务到底是做什么的,所以这只是您考虑的一个选项。
  • 谢谢@Anzel,主要问题是通信协议。我对 json 很满意,但出于好奇,我正在寻找新技术。
  • 没问题,仅供参考,如果您的微服务每个都不仅依赖另一个服务(或部分),那么“一个”通信协议是不够的,即。您将不得不处理排队、竞争条件和 I/O 等……恕我直言,这更多是关于通信策略而不是协议。无论如何,祝你好运,一切顺利;)

标签: python json xml-rpc microservices asynchronous-messaging-protocol


【解决方案1】:

如果您不需要保留数据,还可以查看Redis 及其发布订阅功能。它成熟,配置和使用非常简单,文档很棒,社区也很大。

这是可用客户端库的列表(例如 5 个 Erlang 库) http://redis.io/clients

【讨论】:

    猜你喜欢
    • 2020-01-15
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 2019-08-05
    • 2015-07-13
    • 1970-01-01
    相关资源
    最近更新 更多