【问题标题】:Worker Service in a Microservice Architecture微服务架构中的 Worker 服务
【发布时间】:2021-11-02 15:52:27
【问题描述】:

很快我将开始一个基于微服务架构的项目,我需要开发的组件是工作服务(或守护程序)。

我对此有一些概念性的问题。 我需要创建一个发送电子邮件和短信的工作人员服务。此工作人员服务需要数据来发送此电子邮件。此外,我需要创建一个微服务,允许用户创建需要由该 Worker 服务打磨的电子邮件列表。但是两者都需要使用来自同一个数据库的数据。

在我的工作服务中,我应该使用一个微服务资源来获取数据,或者这个工作服务与我的微服务连接到同一个数据库是可以的?

或者最好是我的工作服务也有 api 端点,让用户创建新的电子邮件列表、添加或修改配置以及我需要实现的所有其他功能?这听起来是个好主意,但我会得到一个有两个职责的组件,所以我对此有些怀疑。

提前致谢。

【问题讨论】:

  • 如果您在微服务中添加了工作服务功能,您需要在处理服务的并发性上投入一些精力。因为单个微服务可以有多个实例。这并不意味着这是一个坏主意!
  • 是的,你是对的,可以对微服务实现一些负载均衡。

标签: microservices


【解决方案1】:

两个微服务共享同一个数据库的连接通常是个坏主意。因为每个服务都应该是其自己的数据模型的所有者,其他任何人都不应直接访问它。如果一个服务需要另一个服务的域的数据,它应该让它通过 API 调用所有者,或者在它自己的数据库中以只读方式复制模型,并使用例如事件来更新它。

但是,我认为对于您当前的用例,最好的选择是向工作人员提供发送电子邮件所需的所有信息(地址、主题、正文、附件......),所以唯一的责任工人将是发送电子邮件而不是获取信息。

它还可以提供批量发送电子邮件的功能。最后,该服务的职责将只有一个“发送电子邮件”,但它可以提供不同的方式(单个电子邮件、批量、带附件...等)

【讨论】:

  • 谢谢。你是对的,我只是使用工作人员发送电子邮件,没有别的,所以我会听取你的建议并将微服务和这个工作人员连接到同一个数据库。再次感谢。
  • 如何控制多个工作人员实例处理不同的数据集?
猜你喜欢
  • 2014-01-08
  • 2015-12-26
  • 2015-07-15
  • 2016-11-23
  • 2018-03-29
  • 2019-03-23
  • 2016-11-22
  • 2019-05-17
相关资源
最近更新 更多