作业计划服务设计



有一个想法是创建一个基于多个域微服务和一些服务来执行其他操作的系统,例如作业调度服务。这里的想法是能够从任何微服务调度任何作业,因此如果将新微服务添加到系统中,从新微服务调度新作业应该没什么大不了的。

首先,我担心的是创建这种服务的能力,它似乎独立于域微服务,另一件事是将服务抽象得足够多,这样客户端就不知道服务是如何实现的,它正在使用哪个作业调度库等。恐怕不可能实现我想要的。

例如,我有一个微服务,需要每周五发送一封包含特定内容的电子邮件,而另一个微服务想要安排另一个工作。因此,它们都将与我想要实现的作业计划服务进行通信。是否有任何架构解决方案可以实现这一点?

抱歉太抽象了,我按照自己的理解描述了这个问题。我希望您的提示和想法能帮助我找到拥有此类功能的最佳方法。也许有些库提供了开箱即用的功能。

对于您所描述的内容,您应该使用事件和单个服务来封装域的该部分。例如,对于电子邮件之类的东西,您应该有一个电子邮件服务来侦听事件,然后为特定事件发送特定电子邮件。

假设您正在执行用户注册,例如,当用户注册时,您可能有一个实际创建用户记录的用户服务。该服务将在完成后发送"UserCreated"事件。然后,电子邮件服务将通过向用户发送欢迎电子邮件来响应"UserCreated"事件。您可能还有其他服务也响应相同的事件。此抽象允许您将创建新用户的逻辑与创建新用户后需要执行的任务分开,后者不是用户服务的域。

我建议在微服务架构之上设置一个控制器。我将以 Docker 和 Kubernetes 为例。

这将是什么样子:

控制器(作业调度程序( - 位于控制部署调度的架构之上 * Kubernetes/Docker Swarm - 协调容器的规模 * 码头工人容器

控制器将允许您查看整个网络。它将能够协调您的 Kubernetes/Docker Swarm 部署策略。您可以将代理放置在 Docker 容器中,并能够根据需要使用首选配置进行扩展或缩减。

您可以查看以下链接,以获取有关示例体系结构的快速视频。完全披露,我是Stonebranch的工程师

云编排

码头工人工作负载自动化

最新更新