Dung sai lỗi Erlang (như tôi hiểu) bao gồm việc sử dụng các quy trình giám sát để theo dõi quy trình công nhân, vì vậy nếu một công nhân chết thì người giám sát có thể bắt đầu một quy trình mới.Quy trình giám sát hoạt động như thế nào? Có thể thực hiện tương tự trên JVM không?
Erlang thực hiện giám sát này như thế nào, đặc biệt trong trường hợp phân tán? Làm thế nào nó có thể chắc chắn quá trình đã thực sự chết? Nó có đập nhịp tim không? Có cái gì đó được xây dựng trong môi trường thời gian chạy không? Điều gì xảy ra nếu cáp mạng bị rút phích cắm - liệu nó có cho rằng các quá trình khác đã chết nếu nó không thể liên lạc với chúng? v.v.
Tôi đã suy nghĩ về cách đạt được cùng khả năng chịu lỗi vv được xác nhận bởi Erlang trong JVM (trong Java hoặc Scala). Nhưng tôi đã không chắc chắn nếu nó yêu cầu hỗ trợ xây dựng vào JVM để làm điều đó cũng như Erlang. Tôi đã không đi qua một định nghĩa về cách Erlang hiện nó tuy nhiên như là một điểm so sánh.
Cảm ơn, điều đó có ý nghĩa rất nhiều. Có vẻ như một điều phổ biến là việc gửi tin nhắn giữa các máy khác với việc gửi giữa các quy trình cục bộ (chi phí lớn hơn, nhiều lý do hơn có thể thất bại, v.v.). Vì vậy, mã ứng dụng của bạn để biết về điều này (không có viên đạn bạc để thực hiện cuộc gọi địa phương/từ xa như nhau, do đó, không thử). Điều này có nghĩa là một mô hình tương tự trong JVM chắc chắn là có thể. Chỉ giám sát các quy trình/chủ đề/sợi/diễn viên địa phương/bất cứ điều gì, và mã vào ứng dụng của bạn ping của các nút khác (và phải làm gì nếu bạn không thể đạt được một). –