EP6: Types of Failures – Các loại lỗi

Hãy cùng xem bốn loại lỗi cơ bản.

Chúng ta sẽ đề cập đến các nội dung sau:

  • Lỗi dừng (fail-stop)
  • Lỗi sập (crash)
  • Lỗi bỏ sót (omission)
  • Lỗi Byzantine

Có nhiều loại lỗi khác nhau. Hình minh họa sau đây cho thấy các nhóm lỗi cơ bản nhất.

Hãy cùng xem từng loại lỗi một.

1. Lỗi dừng (fail-stop)
Một nút dừng hoạt động và ngừng vĩnh viễn. Các nút khác có thể phát hiện rằng nút này đã gặp lỗi (ví dụ: thông qua việc giao tiếp với nó).

2. Lỗi sập (crash)
Một nút dừng hoạt động một cách âm thầm. Do đó, các nút khác có thể không phát hiện được trạng thái này. Chúng chỉ có thể suy đoán nút đó đã gặp lỗi khi không thể giao tiếp với nó.

3. Lỗi bỏ sót (omission)
Một nút không phản hồi các yêu cầu đến.

4. Lỗi Byzantine
Một nút thể hiện hành vi tùy ý: nó có thể gửi các thông điệp bất kỳ tại những thời điểm bất kỳ, thực hiện các bước xử lý sai, hoặc dừng hoạt động.

Lỗi Byzantine xảy ra khi một nút không hành xử theo đúng giao thức hoặc thuật toán đã được chỉ định. Điều này thường xảy ra khi nút bị xâm nhập bởi tác nhân độc hại hoặc do lỗi phần mềm.

Để đối phó với các loại lỗi này, chúng ta cần những giải pháp phức tạp. Tuy nhiên, hầu hết các công ty triển khai hệ thống phân tán trong những môi trường mà họ giả định là riêng tư và an toàn.

Trong góc nhìn của người xây dựng hệ thống phân tán, lỗi dừng (fail-stop) là loại lỗi đơn giản và thuận tiện nhất. Tuy nhiên, chúng không thực sự phản ánh đúng thực tế. Lý do là trong nhiều trường hợp của các hệ thống thực tế, việc xác định một nút khác có bị sập hay không không hề dễ dàng.

Phần lớn các thuật toán mà chúng ta phân tích trong khóa học này đều hoạt động dựa trên giả định về lỗi sập (crash failures).