首页 > 解决方案 > 微服务架构中的 Worker 服务

问题描述

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

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

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

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

提前致谢。

标签: microservices

解决方案


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

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

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


推荐阅读