Architecture 仅让一个micro服务在自动缩放组中执行后台任务

Architecture 仅让一个micro服务在自动缩放组中执行后台任务,architecture,microservices,Architecture,Microservices,我有一个相当简单的微服务,它从MongoDB集群读取数据,进行一些数据转换,并通过RESTAPI公开数据。我需要使用cron作业更新独立的持久性数据存储。我可以创建一个单独的应用程序来更新数据集,但只部署AWS自动缩放组中存在的一个应用程序(这适用于发布新应用程序有很多繁文缛节的大型企业),并让其中一个实例通过后台作业更新数据集更容易 通过DB中的字段锁定对DB的写入是一个可行的解决方案,但似乎是一种反模式。有没有更好的方法来做到这一点,而不需要创建单独的应用程序来执行DB写入 有没有更好的方法

我有一个相当简单的微服务,它从MongoDB集群读取数据,进行一些数据转换,并通过RESTAPI公开数据。我需要使用cron作业更新独立的持久性数据存储。我可以创建一个单独的应用程序来更新数据集,但只部署AWS自动缩放组中存在的一个应用程序(这适用于发布新应用程序有很多繁文缛节的大型企业),并让其中一个实例通过后台作业更新数据集更容易

通过DB中的字段锁定对DB的写入是一个可行的解决方案,但似乎是一种反模式。有没有更好的方法来做到这一点,而不需要创建单独的应用程序来执行DB写入

有没有更好的方法来做到这一点而不创建单独的 应用程序进行数据库写入

我认为创建或不创建新的应用程序在这里是一个小问题。这取决于你的架构。如果你开发了一个微服务,你可能想从中分离并移除一切可能的东西,防止它再次成为一个独角戏。至少我会这么做。现在似乎更容易将所有功能都放在一个应用程序中,但一旦您的代码库和功能显著增长,我就不会这么做了

在这种情况下,更困扰我的问题是独占DB锁定。不惜一切代价避免独占DB锁。忘掉一切,放下所有任务,找到一种不锁定数据库而计算统计数据的方法。相信我,无论你现在花多少时间开发一个解决方案,将来都会得到回报


如果您选择在Stack上问这个问题,我很乐意提供帮助,但要提出一些建议,我们需要更多地了解您存储/聚合的逻辑和数据。

谢谢您的回答。除了向应用程序中注入一些可配置的属性外,还有哪些选项(如果有,是什么?)可以在不锁定数据库的情况下计算统计数据?该应用程序将有几十个实例,其中只有一个应该执行db(哪一个并不重要,但对于所有实例,作业每小时只执行一次)。@newToScala在我进一步了解您的信息性质、使用的查询、收集的统计数据、聚合、数据流速度等之前,我无法回答这个问题。