微服务工作者和 API

问题描述 投票:0回答:1

我正在构建一个微服务,我正在尝试找出对员工来说最好的方法

假设我有一个产品服务,该产品服务中有一个API和产品模型,现在一些请求可以来自像rabbitmq这样的消息代理,这些任务通常执行要求更高的任务,例如上传图像。我应该将这些任务移至不同的微服务中并在它们之间共享模型,将它们保留在同一服务下,还是有更好的选择?

architecture microservices system-design
1个回答
0
投票

真正的答案是:“这取决于”。

我的实际建议是:将 Controller 和 Worker 放在同一个服务中。但是,请确保如果您需要将服务拆分为两个(或实际上是树),您的代码已准备好执行此操作。这就是我们所说的模块化单体。

一个小例子: 让我们假设您的产品控制器是一个基本的 CRUD。对 POST、PUT、DELETE 的调用应产生相应的事件productCreated、productUpdated、productDeleted。持久化应该在专门的“地方”完成(表、shema、索引……) 对于将产生 ProductImageUploaded 事件的工作人员来说也是如此。请务必将这些信息存储在不同的“位置”。

现在,每次您都需要根据工作部分的一些更改来修改增删改查部分(反之亦然)。使用事件来触发它。要明确的是。您的工作人员部分应该侦听productDeleted事件以清除上传的图像(如果这对您的业务有意义)

完成后,您就可以拆分这两个模块了,因为它们彼此不依赖。另外,如果您需要构建 Crud 和工作线程的聚合视图,您只需监听该事件即可。这样,您将受益于轻松的开发和部署,并且一旦您需要扩展/拆分,您就可以以较小的成本完成此操作。

这只是一个例子。就您而言,也许所有这些都已经超出了工程范围,您可以构建一个基本服务,而无需任何持久性拆分或发送事件。

我希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.