Cách tốt nhất để duy trì trạng thái khi khởi động lại quy trình bị lỗi là gì?Làm cách nào để khôi phục trạng thái quy trình sau sự cố?
Tôi có một giám sát viên trong một ứng dụng OTP, những gì đồng hồ một số gen_servers "hệ thống con".
Ví dụ: một hệ thống con "thời tiết" tạo trạng thái thời tiết mới sau mỗi 15 phút và xử lý các truy vấn cho trạng thái hiện tại của thời tiết. (Hãy suy nghĩ trò chơi đứng chanh)
Nếu gen_server đó bị lỗi, tôi muốn khởi động lại, nhưng nó phải được khởi động lại với trạng thái thời tiết gần đây nhất, không phải trạng thái bất kỳ được mã hóa cứng trong init(). Nó sẽ không có ý nghĩa cho tình trạng mô phỏng đột nhiên đi từ "cơn bão mưa đá" để "dễ chịu và mát mẻ" chỉ vì vụ tai nạn.
Tôi ngần ngại sử dụng mnesia hoặc ETS để lưu trữ trạng thái sau mỗi lần cập nhật do tính phức tạp thêm vào; Có cách nào dễ hơn không?
Giám sát viên nên chứa càng ít càng logic càng tốt và chỉ chịu trách nhiệm khởi động lại. Một lỗi duy nhất trong logic đó có thể dẫn đến một toàn bộ cây con bị hỏng. –