Giới thiệu Meerkat: Thử nghiệm về cơ chế đồng thuận toàn cầu tại Cloudflare
Cloudflare giới thiệu Meerkat, một dịch vụ đồng thuận phân tán thử nghiệm dựa trên thuật toán QuePaxa, nhằm giải quyết các thách thức về tính nhất quán và độ sẵn sàng trong mạng lưới toàn...
Tại Cloudflare, việc duy trì trạng thái đồng nhất trên hơn 330 trung tâm dữ liệu toàn cầu là một thách thức lớn. Các dịch vụ nội bộ cần đảm bảo rằng dữ liệu luôn nhất quán, ngay cả khi đối mặt với sự cố mạng, lỗi server hoặc gián đoạn kết nối. Để giải quyết vấn đề này, đội ngũ nghiên cứu của Cloudflare đã phát triển Meerkat – một dịch vụ đồng thuận phân tán thử nghiệm.
Table Of Content
Tại sao cần một hệ thống mới?
Các thuật toán đồng thuận truyền thống như Raft thường dựa vào khái niệm leader (nút lãnh đạo). Trong mô hình này, chỉ có leader mới được phép thực hiện ghi dữ liệu. Nếu leader gặp sự cố hoặc kết nối mạng bị suy giảm, hệ thống sẽ tạm dừng hoạt động cho đến khi một leader mới được bầu chọn. Đối với mạng lưới toàn cầu của Cloudflare, độ trễ không ổn định khiến việc cấu hình timeout cho các thuật toán này trở nên cực kỳ khó khăn.
Meerkat sử dụng thuật toán QuePaxa (được công bố bởi các nhà nghiên cứu tại EPFL vào năm 2023). Điểm khác biệt cốt lõi là mọi replica (bản sao) đều có thể thực hiện ghi dữ liệu tại mọi thời điểm, loại bỏ sự phụ thuộc vào một leader duy nhất và tránh tình trạng gián đoạn do timeout.
Các yêu cầu kỹ thuật cốt lõi
Meerkat được thiết kế để đáp ứng hai tiêu chuẩn khắt khe:
- Tính nhất quán tuyến tính (Linearizability): Đảm bảo mọi thao tác đọc sau khi ghi đều thấy được giá trị mới nhất, giúp lập trình viên dễ dàng quản lý trạng thái hệ thống như trên một máy đơn luồng.
- Khả năng chịu lỗi: Hệ thống phải duy trì khả năng đọc/ghi miễn là đa số các máy chủ (majority) vẫn hoạt động và có thể giao tiếp với nhau.
Cơ chế hoạt động của Meerkat
Meerkat hoạt động bằng cách chuyển đổi các yêu cầu ứng dụng (như get hoặc put trong key-value store) thành các log event. Các sự kiện này được phân phối đến tất cả các replica trong cluster thông qua thuật toán đồng thuận. Nhờ đó, mọi replica đều duy trì một bản ghi log giống hệt nhau.
Khi một client thực hiện yêu cầu, Meerkat đảm bảo rằng các sự kiện được sắp xếp vào các “slot” trong log. Nếu một slot đã được quyết định bởi đa số, các replica khác không thể thay đổi giá trị đó. Điều này ngăn chặn xung đột và đảm bảo tính nhất quán ngay cả khi các yêu cầu được gửi đến các replica khác nhau trên toàn thế giới.
Định hướng tương lai
Hiện tại, Meerkat vẫn đang trong giai đoạn thử nghiệm và được sử dụng nội bộ để quản lý các trạng thái control-plane nhỏ (ví dụ: thông tin về quyền lãnh đạo của các cơ sở dữ liệu). Đây là bước đi đầu tiên của Cloudflare trong việc triển khai QuePaxa ở quy mô công nghiệp, hứa hẹn mang lại độ sẵn sàng cao hơn so với các hệ thống dựa trên Raft truyền thống.
Nguồn tham khảo: Cloudflare Blog



No Comment! Be the first one.