如果我同时部署了多个相同的容器,并且每个容器都包含一个定期创建工件并保存到数据库的作业,并且它们所保存的是确定性的,那么我应该如何防止冗余操作?
我应该检查数据库中的密钥是否首先存在,如果不存在,则开始保存操作?工件创建过程很漫长,因此很可能一个容器可能会检查数据库,发现尚未将其保存到数据库中,然后启动工件创建过程……与此同时,另一个容器可能会执行相同的操作。
我意识到在同一个容器中具有多个克隆可以防止停机或保持应用程序的健壮性,但是您应该如何应对副作用呢?
答案 0 :(得分:0)
这是一个非常开放的问题,因此在不知道您所处情况的确切细节的情况下将不会有一个明确的答案。
通常来说,在这种情况下,如果可能的话,您应该尝试使正在执行的操作具有幂等性,这样,如果发送多个请求来执行同一操作,则可以消除问题。
我要问自己的问题是,您的体系结构和技术堆栈是否适合该任务。并非所有活动都需要在Kubernetes中执行。
Kubernetes CronJob对此是否更合适?
使用messaging queue怎么样?