用JVM检查点和恢复
协调还原检查点(CRaC)是一个OpenJDK项目,定义了一个新的Java API,允许你在HotSpot JVM上检查点和恢复应用程序。 它基于CRIU项目,该项目在Linux上实现了检查点/恢复功能。
原理如下:你几乎像往常一样开始申请,但使用支持CRaC的JDK版本,比如BellSoft Liberica JDK配合CRaC或Azul Zulu JDK带CRaC。
然后在某个时刻,可能在一些工作负载通过执行所有常见代码路径来预热你的 JVM 之后,你通过 API 调用触发一个检查点,一个JCMD命令、HTTP 端点或其他机制。
运行中的JVM的内存表示(包括其温热)随后被序列化到磁盘,允许在后续时快速恢复,可能在另一台拥有类似作系统和CPU架构的机器上恢复。 恢复后的进程保留了HotSpot JVM的所有功能,包括运行时的进一步JIT优化。
基于 Spring Framework 提供的基础,Spring Boot 支持检查点和恢复应用,并在有限范围内即用管理资源生命周期,如套接字、文件和线程池。 其他依赖以及处理这些资源的应用代码,还需要额外的生命周期管理。
您可以在 Spring Framework JVM 检查点恢复支持文档中找到更多关于支持的两种模式(“按需检查点/恢复运行应用程序”和“启动时自动检查点/恢复”)的详细信息,以及如何启用检查点和恢复支持,以及一些指南。