Triển khai khóa phân tán
- Tác giả phát hiện thuật toán Redlock trên trang web Redis, thuật toán này tuyên bố triển khai khóa phân tán chịu lỗi trên Redis.
- Đã có nhiều triển khai độc lập của Redlock, và có thể đã có người đang phụ thuộc vào thuật toán này, nên tác giả quyết định chia sẻ các ghi chú của mình.
- Redis hữu ích khi chia sẻ dữ liệu tạm thời và thay đổi nhanh giữa các máy chủ, nhưng việc mở rộng nó sang lĩnh vực quản lý dữ liệu đòi hỏi tính nhất quán mạnh và độ bền là điều đáng lo ngại.
Mục đích của khóa
- Khóa có vai trò bảo đảm chỉ một trong nhiều nút thực hiện một công việc cụ thể.
- Nếu dùng khóa vì hiệu quả, có thể sẽ tốt hơn khi dùng một instance Redis đơn lẻ.
- Nếu dùng khóa vì tính chính xác, Redlock không phù hợp.
Bảo vệ tài nguyên bằng khóa
- Khóa trong hệ thống phân tán khác với mutex trong ứng dụng đa luồng.
- Nó ngăn các client khác thực hiện cùng một thao tác trong khi một client đang đọc, sửa rồi ghi lại tệp.
Triển khai khóa an toàn bằng fencing
- Có thể triển khai khóa an toàn bằng cách dùng fencing token và đưa nó vào các yêu cầu ghi.
- Redlock không an toàn vì không có khả năng tạo fencing token.
Dùng thời gian cho đồng thuận
- Khác với các thuật toán trong mô hình bất đồng bộ, Redlock đặt ra nhiều giả định về thời gian.
- Nếu đồng hồ hệ thống hoạt động bất thường, thời điểm hết hạn của khóa có thể nhanh hơn hoặc chậm hơn dự kiến.
Phá vỡ các giả định thời gian của Redlock
- Redlock giả định mô hình hệ thống đồng bộ và chỉ hoạt động đúng khi độ trễ mạng, việc tạm dừng tiến trình và lỗi đồng hồ đều bị giới hạn.
- Những trường hợp như sự cố trì hoãn gói tin 90 giây của GitHub có thể đe dọa tính an toàn của Redlock.
Kết luận
- Redlock quá nặng một cách không cần thiết cho các khóa tối ưu hiệu quả, và lại không đủ an toàn cho những tình huống đòi hỏi tính chính xác.
- Nếu cần khóa vì tính chính xác, nên dùng một hệ thống đồng thuận phù hợp như ZooKeeper.
Tóm tắt của GN⁺
- Thuật toán Redlock mang lại một cuộc thảo luận quan trọng về cách triển khai khóa trong hệ thống phân tán.
- Bài viết này nhấn mạnh các vấn đề về giả định thời gian và an toàn trong hệ thống phân tán, đồng thời giải thích tầm quan trọng của việc triển khai khóa đúng cách.
- Bài viết khuyến nghị các hệ thống thay thế như ZooKeeper và giúp hiểu rõ hơn sự phức tạp của hệ thống phân tán.
1 bình luận
Ý kiến trên Hacker News
SET