假设我有1000个运行不同服务的虚拟机,使用不同的技术,如python,NET,java和不同的中间件,如rabbitmq,redis等。 如何动态处理服务之间的交互并提供可伸缩性?
例如,假设我有服务A将数据推送到rabbitmq,那么数据将由服务B处理,同时从服务C获取其他数据。最后我看到我有一个分散的系统,它在某处提取数据把它推到别的地方......一团糟!将它扩展到2000微服务omg XD。
当我改变一件事时,很多其他系统都会受到影响。 你知道的东西可能就像一个ESB,我可以将两个服务连接在一起,并在其中间使用消息转换适配器,我可以在运行时更改依赖关系吗?就像流不再以服务F结束并以G结尾为例?
我认为微服务是一个好主意,因为它们可以是无状态的,可以扩展,可以很容易地作为容器部署。但我不知道管理数据流的好工具/程序。 rabbitmq不支持足够的企业集成模式。你有什么建议吗?
答案 0 :(得分:0)
如何动态处理互动 -
查看使用现有的EIP模式是否解决了实施物流的问题
根据设计的形状,您可能需要使用分布式锁管理
或许您的应用程序非常简单,可以使用Consul K / V商店作为信号量&一个简单的mosquitto主题总线。
提供可扩展性
您尝试扩展的解决方案是什么? AMQP,领事,"微服务"本身是非常可扩展的&分散式 但是,要扩展您的思维过程& devops,你需要找到一种方法来看待事物作为帮助你解决问题的模式。解决复杂性
您是否知道某些内容可能类似于ESB,我可以将两个服务与消息转换适配器结合在一起,我可以在运行时更改依赖项?
阅读EIP。 ESB只是解决问题的众多方法之一。 RTFM,&得到一些观点。
但我不知道管理数据流的好工具/程序。
问问自己,您的问题是否与分布式工作流管理有关,或者数据管道是否是您真正想要的
看看Spark,Storm,Luigi,Airflow--他们都有不同的目的 - 但如果你能够阅读这篇文章中的其他内容,你就会知道如何处理它们。)