【问题标题】:Have only one micro service perform a background task in an auto scaling groupAuto Scaling 组中只有一个微服务执行后台任务
【发布时间】:2016-12-19 19:58:43
【问题描述】:

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

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

【问题讨论】:

    标签: architecture microservices


    【解决方案1】:

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

    我认为创建或不创建新应用程序是一个小问题。这仅取决于您的架构。如果你开发一个微服务,你可能想要隔离并从中删除所有可能的东西,以防止它再次成为单一的。至少我会那样做。现在将所有内容保存在一个应用程序中似乎更容易,但一旦您的代码库和功能大幅增长,我就不那么容易了。

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

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

    【讨论】:

    • 感谢您的回复。除了一些可配置的属性被注入到应用程序中之外,compute your statistics without locking database 是否还有其他选项(如果有,是什么?)?将有几十个应用程序实例,其中只有一个应该执行 db(不管哪个,但对于所有实例,该作业每小时只执行一次)。
    • @newToScala 在我了解您的信息的性质、使用的查询、收集的统计信息、聚合、数据流速度等更多信息之前,我无法回答这个问题。
    猜你喜欢
    • 2015-10-05
    • 2019-09-26
    • 2019-08-22
    • 2023-03-19
    • 2020-12-03
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多