【问题标题】:The Job Scheduling service design作业调度服务设计
【发布时间】:2020-02-06 13:17:15
【问题描述】:

有一个想法是创建一个基于多个域微服务和一些服务做额外事情的系统,比如作业调度服务。这里的想法是能够从任何微服务调度任何作业,因此如果将新微服务添加到系统中,从它调度新作业应该没什么大不了的。

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

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

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

【问题讨论】:

    标签: c# asp.net-core architecture microservices job-scheduling


    【解决方案1】:

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

    这会是什么样子:

    控制器(作业调度程序)- 位于控制部署计划的拱顶之上 * Kubernetes / Docker Swarm - 协调容器的规模 * Docker 容器

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

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

    Cloud Orchestration

    Docker Workload Automation

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-09-15
        • 1970-01-01
        • 1970-01-01
        • 2020-06-14
        • 1970-01-01
        • 1970-01-01
        • 2011-06-16
        • 1970-01-01
        • 2014-08-28
        相关资源
        最近更新 更多