cap-theorem-understand

Hiểu hơn về CAP Theorem trong System Design

Một số bạn mới bắt đầu làm quen với System Design khi thấy CAP Theorem không khỏi bỡ ngỡ. Theorem – Định lý, nghe thôi là đã thấy nhức đầu. Tuy nhiên trong System Design thì CAP không quá phức tạp.

Biết về CAP Theorem giúp ta có cái nhìn tổng quan hơn, tốt hơn khi thiết kế hệ thống. Không những vậy còn tránh những sai sót không đáng có khi thiết kế.

Bắt đầu ngay thôi nào!

1. CAP Theorem là gì?

CAP bao gồm 3 từ consistency, availability, và partition tolerance. (Tính nhất quán, tính khả dụng và dung sai phân vùng).

The CAP theorem applies a similar type of logic to distributed systems—namely, that a distributed system can deliver only two of three desired characteristics: consistency, availability, and partition tolerance (the ‘C,’ ‘A’ and ‘P’ in CAP).

Định lý CAP áp dụng một loại logic tương tự cho các hệ thống phân tán (Distributed Systems) — cụ thể là hệ thống phân tán chỉ có thể cung cấp hai trong ba đặc tính mong muốn: tính nhất quán, tính khả dụng và dung sai phân vùng (chữ ‘C,’ ‘A’ và ‘P’ trong CAP ).

2. Cap Theorem và Cloud Applications

Đọc qua định nghĩa phía trên chắc một số bạn sẽ thắc mắc về Hệ thống phân tán. (Distributed System)

A distributed system is a network that stores data on more than one node (physical or virtual machines) at the same time. Because all cloud applications are distributed systems, it’s essential to understand the CAP theorem when designing a cloud app so that you can choose a data management system that delivers the characteristics your application needs most.

Hệ thống phân tán và mạng lưới lưu trữ dữ liệu trên nhiều hơn một node (vật lý hoặc máy ảo) trong cùng một thời điểm. Bởi vì tất cả các cloud applications là hệ thống phân tán, điều cần thiết là phải hiểu định lý CAP khi thiết kế ứng dụng đám mây. Để sau này có gì còn có thể chọn hệ thống quản lý dữ liệu phù hợp nhất với ứng dụng đang phát triển.

Đấy, hiểu biết về CAP Theorem cũng là một điểm cộng lớn, cần thiết để nâng cao skills khi làm việc với cloud applications. Phân tích sâu hơn vào từng chữ cái ha.

2.1 Consistency – tính nhất quán

Giả sử bạn đang thiết kế hệ thống bán vé máy bay. Sau khi thiết kế xong xuôi, hệ thống đưa vào vận hành.

Giá vé từ HCM- Thailand có thay đổi, cập nhật từ $300 lên $350. Client A load website trước khi giá cập nhât, thấy giá vé chỉ $300. Client B vào ngay sau đó, lại thấy giá $350.

Chính sự khác biệt này được gọi là không nhất quán, dữ liệu hiển thị cho client tốt nhất nên giống nhau về tất cả nội dung.

Consistency means that all clients see the same data at the same time, no matter which node they connect to. For this to happen, whenever data is written to one node, it must be instantly forwarded or replicated to all the other nodes in the system before the write is deemed ‘successful.’

Nhất quán ở đây mang ý nghĩ client luôn thấy cùng một data. Bất kể client đang được liên kết tới node nào. Để được vậy, phải thực hiện đồng bộ dữ liệu cho tất cả. Lặp lại cho tất cả các nốt.

Thiết kế sao cho dữ liệu trong toàn bộ hệ thống được nhất quán, giống nhau ở tất cả các client, giống nhau ở cùng hoặc một thời điểm client load máy. Đó là đảm bảo cho chữ C – Consistency – Tính nhất quán trong CAP Theorem

2.2 Availability – tính sẵn sàng

Phần thứ hai trong CAP Theorem là Availability – tính sẵn sàng. Ngoài chuyện dữ liệu phải đảm bảo tính nhất quán. Dữ liệu cũng phải sẵn sàng cho người dùng.

Availability means that that any client making a request for data gets a response, even if one or more nodes are down.

Tính sẵn sàng được hiểu rằng bất cứ khi nào client gửi request. Họ đều sẽ nhận được response. Thậm chí một hoặc vài node bị down.

Tính sẵn sàng cũng là một phần đáng nhớ. Thực tế ứng dụng rất nhiều trong micro service. Khi một node hoặc một service con down, các service khác vẫn có thể hoạt động độc lập.

2.3 Partition tolerance – dung sai phân vùng

Chỗ này dịch dung sai phân vùng thì không biết có đúng không nữa. Thôi thì điểm xuyết qua cái lý thuyết bên tiếng Anh xem sao.

Partition tolerance means that the cluster must continue to work despite any number of communication breakdowns between nodes in the system.

Dung sai phân vùng ở đây được hiểu rằng cụm máy tính vẫn nên tiếp tục hoạt động, cho dù một số kết nối giữa các nối bị hư hại.

À, vậy là từ Partition tolerance dung sai phân vùng ở đây phải được hiểu như bên kỹ thuật. Khi thực hiện hàn, cắt, ghép với độ chính xác cao, sẽ có một con số có thể chấp nhận là dung sai

Phía bên hệ thống phân bán, lúc thiết kế phải đảm bảo sao cho khi một số node die, cả hệ thống vẫn hoạt động bình thường.

3. Tổng kết

The CAP theorem is also called Brewer’s Theorem, because it was first advanced by Professor Eric A. Brewer during a talk he gave on distributed computing in 2000

CAP Theorem cũng có tên khác là Brewer’s Theorem, bởi vì nó xuất hiện lần đầu khi giá sư Brewer nói chuyện về distributed computing năm 2000

4. Tham khảo

Bài viết về CAP

Một số bài viết hay khác về Design System.

Có gì thắc mắc cứ comment đây nha! - Please feel free to comment here!