我目前的平台架构有一个用于下载/收集数据的微服务、一个用于ETL的微服务和另一个处理一些复杂SQL脚本的微服务。
我想使用气流来调度和监控工作流程。我试过了,效果很好。但是,我必须将所有功能作为任务放入一个气流容器中;这并不遵循当前的微服务体系结构。我想要的是使用气流作为调度器,并与其他微服务进行通信。
我想问:,使用微服务的气流最好的方法是什么?我是否应该使用DAG中的任务与微服务进行通信(发布消息和微服务将订阅)?
DAG可以描述如下。请注意,在下载数据后还有其他任务,如验证,但我只是简化了它。达格
发布于 2020-12-09 02:18:33
像Apache气流这样的工作流引擎和微服务这样的体系结构范例本质上是对立的。这两种方法都是完全合法的,都很有价值,都有优缺点,但它们是构建分布式系统的两种完全不同的方法。
你自己在评论中也提到了这一点:
..if --我把这些微服务的所有功能集中在一个气流容器下,这将是一个整体。
这里违反的微服务原则被称为"智能端点,哑管道“。
“智能微服务A”的概念应该与“智能微服务B”(直接或间接地)进行沟通,而不应该由“智能工作流服务”将“愚蠢的微服务A”和“愚蠢的微服务B”连接在一起。
后者更像是一个企业服务总线(ESB)或面向服务体系结构(SOA)设计。
同样,ESB和SOA也有各自的位置,但是微服务体系结构是一种不同类型的体系结构,并且本质上是不兼容的。
https://stackoverflow.com/questions/61368541
复制相似问题