【问题标题】:what happen to the current transaction when kubernetes container goes down当 kubernetes 容器宕机时当前事务会发生什么
【发布时间】:2020-08-03 08:33:19
【问题描述】:

我有一个分布式调度程序。现在我必须选择记录并处理它们。 就我而言,我将创建一个事务并处理记录。

现在假设 Kubernetes 容器在处理过程中发生故障。在这种情况下,释放锁并回滚事务会发生什么

【问题讨论】:

  • 你用的是什么调度器?
  • Spring 启动调度器

标签: spring-boot docker kubernetes


【解决方案1】:

何时应该终止一个 pod:

一个 SIGTERM 信号被发送到每个容器中的主进程 (PID 1),“宽限期”倒计时开始(默认为 30 秒 - 请参阅下文以更改它)。

收到 SIGTERM 后,每个容器都应开始正常关闭正在运行的应用程序并退出。

如果一个容器没有在宽限期内终止,则会发送一个 SIGKILL 信号,容器会被暴力终止。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
    name: test
spec:
    replicas: 1
    template:
        spec:
            containers:
              - name: test
                image: ...
            terminationGracePeriodSeconds: 60

因此,在您的 Spring Boot 应用程序中,您需要处理 SIGTERM 信号并回滚任何事务或将其持久化以供以后重试。

【讨论】:

  • 感谢您的回答。所以我们必须明确地处理这些事务。我的理解是,当容器关闭时,所有事务都会回滚并释放锁。不是这样吗?
  • 我希望 spring 会自动完成它..但我不认为它会这样做..btw 它注意到特定于 kubernetes
猜你喜欢
  • 2020-07-10
  • 1970-01-01
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 2015-02-26
  • 1970-01-01
相关资源
最近更新 更多