JVM 檢查點和恢復

協調檢查點恢復 (CRaC) 是一個 OpenJDK 專案,它定義了一個新的 Java API,允許你在 HotSpot JVM 上對應用程式進行檢查點和恢復。它基於 CRIU,一個在 Linux 上實現檢查點/恢復功能的專案。

其原理如下:你幾乎像往常一樣啟動應用程式,但使用支援 CRaC 的 JDK 版本,例如 BellSoft Liberica JDK with CRaCAzul Zulu JDK with CRaC。然後在某個時刻,可能是在執行了所有常見程式碼路徑以預熱 JVM 後,你透過 API 呼叫、jcmd 命令、HTTP 端點或不同的機制觸發檢查點。

正在執行的 JVM 的記憶體表示(包括其預熱狀態)隨後會被序列化到磁碟,以便稍後能夠快速恢復,可能是在具有類似作業系統和 CPU 架構的另一臺機器上。恢復後的程序保留了 HotSpot JVM 的所有功能,包括在執行時進一步的 JIT 最佳化。

基於 Spring Framework 提供的基礎,Spring Boot 提供了對應用程式檢查點和恢復的支援,並 在有限的範圍內 開箱即用地管理諸如套接字、檔案和執行緒池等資源的生命週期。對於其他依賴項以及可能涉及這些資源的應用程式程式碼,預計還需要額外的生命週期管理。

你可以在 Spring Framework JVM 檢查點恢復支援文件 中找到有關兩種支援模式(“按需檢查點/恢復正在執行的應用程式”和“啟動時自動檢查點/恢復”)、如何啟用檢查點和恢復支援以及一些指南的更多詳細資訊。

© . This site is unofficial and not affiliated with VMware.