跳到主要内容
版本:3.5.10

使用 JVM 进行检查点与恢复

QWen Max 中英对照 Checkpoint and Restore With the JVM

Coordinated Restore at Checkpoint(CRaC)是一个 OpenJDK 项目,它定义了一种新的 Java API,允许你在 HotSpot JVM 上对应用程序进行检查点(checkpoint)和恢复(restore)。该项目基于 CRIU,而 CRIU 是一个在 Linux 上实现检查点/恢复功能的项目。

其原理如下:你几乎像平常一样启动应用程序,但使用支持 CRaC 的 JDK 版本,例如 BellSoft Liberica JDK with CRaCAzul Zulu JDK with CRaC。然后在某个时刻(可能是在执行了一些工作负载、通过运行所有常见代码路径对 JVM 进行预热之后),你通过 API 调用、jcmd 命令、HTTP 端点或其他机制触发一个检查点(checkpoint)。

然后,运行中的 JVM 的内存表示(包括其 warmness 状态)会被序列化到磁盘,从而允许在稍后快速恢复,甚至可以在具有相似操作系统和 CPU 架构的另一台机器上进行恢复。恢复后的进程保留了 HotSpot JVM 的所有功能,包括在运行时进一步进行 JIT 优化的能力。

基于 Spring Framework 提供的基础,Spring Boot 为应用程序的检查点(checkpointing)和恢复(restoring)提供了支持,并在有限范围内 开箱即用地管理诸如 socket、文件和线程池等资源的生命周期。对于其他依赖项以及可能涉及此类资源的应用程序代码,还需要额外的生命周期管理。

你可以在 Spring Framework JVM Checkpoint Restore 支持文档 中找到更多关于所支持的两种模式(“按需对运行中的应用程序进行 checkpoint/restore” 和 “启动时自动 checkpoint/restore”)、如何启用 checkpoint 和 restore 支持以及一些指导原则的详细信息。