【问题标题】:Prevent redundant CRUD operations in multi-container pod防止多容器 pod 中的冗余 CRUD 操作
【发布时间】:2019-05-06 23:42:14
【问题描述】:

如果我同时部署了多个相同的容器,每个容器都包含一个定期创建工件并保存到数据库的作业,并且它们保存的内容是确定性的,我应该如何防止冗余操作?

我是否应该先检查数据库中的键是否存在,如果不存在,则开始保存操作?工件创建过程很长,因此很可能一个容器可能会检查数据库,发现它尚未保存,然后开始工件创建过程......同时,另一个容器可能会做同样的事情.

我意识到拥有同一个容器的多个克隆有助于防止停机/保持应用程序的健壮性,但是您应该如何处理副作用?

【问题讨论】:

    标签: database concurrency containers openshift kubernetes-pod


    【解决方案1】:

    这是一个非常开放的问题,因此如果不了解您的具体情况,就不会有一个明确的答案。

    一般来说,在这种情况下,如果可能,您应该尝试使正在执行的操作具有幂等性,从而在发送多个请求以执行相同操作时消除问题。

    我要问自己的问题是,您的架构和技术堆栈是否适合这项任务。并非所有活动都需要在 Kubernetes 中执行。

    Kubernetes CronJob 会更适合这个吗?

    使用messaging queue 怎么样?

    【讨论】:

    • 是的,我对 Kubernetes 没有选择——它是我们所有部署的必需品。我得到了幂等方面。消息队列如何工作 - 每 x 分钟推送一条消息,然后两个 pod 轮流抓取它并采取所需的操作?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多