【问题标题】:Organizing services dataflow / eip组织服务数据流/eip
【发布时间】:2018-09-28 05:57:03
【问题描述】:

假设我有 1000 个虚拟机,它们运行着不同的服务,使用不同的技术,如 python、NET、java 和不同的中间件,如 rabbitmq、redis 等。 如何动态处理服务之间的交互并提供可扩展性?

例如,假设我有服务 A,它正在将数据推送到 rabbitmq,然后数据由服务 B 处理,同时从服务 C 获取其他数据。你看到最后我有一个分散的系统,它在某处提取数据并且把它推到别的地方……一团糟!将其扩展到 2000 个微服务,天哪,XD。

当我改变一件事时,很多其他系统都会受到影响。 您是否知道类似 ESB 之类的东西,我可以将两个服务与中间的消息转换适配器耦合在一起,并且我可以在运行时更改依赖关系?例如,流不再以服务 F 结束,而是以 G 结束?

我认为微服务是一个好主意,因为它们可以是无状态的,可以扩展,可以轻松地部署为容器。但我不知道管理数据流的好工具/程序。 rabbitmq 不支持足够多的企业集成模式。你有什么建议吗?

【问题讨论】:

标签: rabbitmq microservices consul apache-servicemix


【解决方案1】:

如何动态处理交互 -

看看使用现有的 EIP 模式是否能解决您实施物流的问题

根据您的设计如何形成,您可能需要使用分布式锁管理

或者,也许您的应用程序足够简单,可以将 Consul K/V 存储用作信号量和简单的基于 mosquitto 主题的总线。

提供可扩展性

您尝试扩展的解决方案是什么? AMQP、Consul、“微服务”本身是非常可扩展和分布式的 但是,要扩展您的思维过程和 devops,您需要找到一种将事物视为模式的方法,以帮助您拆分问题并解决复杂性

你知道像 ESB 这样的东西,我可以将两个服务与中间的消息转换适配器耦合在一起,并且我可以在运行时更改依赖关系?

阅读 EIP。 ESB 只是解决问题的众多方法之一。 RTFM,并获得一些观点。

但我不知道管理数据流的好工具/程序。

问问自己,您的问题是否与分布式工作流管理有关,或者您真正需要的是数据管道

看看 Spark、Storm、Luigi、Airflow - 它们都有不同的用途 - 但如果你设法阅读这篇文章中的所有其他内容,你就会知道如何处理它们;)

【讨论】:

  • 这个网站不允许我发布链接 - 编辑我的答案以查看最后的网址
猜你喜欢
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
  • 2015-05-29
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
相关资源
最近更新 更多