Uncategorized

CAP Theorem là cái chi?

CAP – Consistency, Availability, Partition Tolerance: Tam giác ba cạnh của hệ thống phân tán

Ở tâm điểm, định lý CAP là một tam giác, nhấn mạnh đến những vấn đề và thách thức khi cố gắng đạt được ba mục tiêu quan trọng cùng một lúc: Consistency, Availability, Partition Tolerance – Tôi xin phép giữ nguyên các tính chất này ở dạng tiếng Anh, vì các thuật ngữ chuyên ngành khi dịch về tiếng Việt thì nghe khá lạ tai.

  • Consistency: Khía cạnh này của định lý CAP quy định rằng tất cả các node trong hệ thống phân tán phải có cùng dữ liệu vào cùng một thời điểm. Nói cách khác, khi một hoạt động write xảy ra, tất cả các hoạt động read sau đó phải trả về giá trị mới nhất. Đạt được tính chất đồng nhất đảm bảo hệ thống hiển thị một cái nhìn thống nhất và mạch lạc về dữ liệu.
  • Availability: Sẵn sàng đảm bảo mỗi yêu cầu đưa ra hệ thống nhận được một phản hồi, mà không cần đảm bảo rằng dữ liệu là mới nhất. Trong tình huống mất kết nối mạng hoặc mất nút, hệ thống sẵn sàng tiếp tục phản hồi các truy vấn. Sự sẵn sàng cao là quan trọng để duy trì tính năng của hệ thống ngay cả trong điều kiện bất lợi.
  • Partition Tolerance: Khả năng chịu lỗi thể hiện ở việc hệ thống vẫn có thể đảm bảo hoạt động trong trường hợp có sự cố xảy ra trong hệ thống phân tán. Các sự cố có thể là chết server một hay nhiều server trong hệ thống, mất kết nối mạng một vài node trong hệ thống.

Sự đánh đổi không thể tránh khỏi

Bản chất của định lý CAP nằm ở khẳng định rằng không thể đồng thời đạt được cả 3 tính chất trên trong một hệ thống phân tán. Trong trường hợp thiết kế hệ thống phân tán, người ta phải chọn giữa việc hy sinh consistency hoặc availability. Sự đánh đổi này hình thành nền tảng cho các kiến trúc và cơ sở dữ liệu hệ thống phân tán. Ví dụ về một vài loại cơ sở dữ liệu chia theo các tính chất trên như sau:

  • Hệ thống CP (Consistency – Partition Tolerance): Những hệ thống này ưu tiên tính chất và khả năng chịu lỗi hơn sẵn sàng. Trong tình huống mất phân tách mạng, chúng có thể chọn trở nên không sẵn sàng thay vì rủi ro dữ liệu không nhất quán. Các database thuộc nhóm này như: Cassandra, Hbase, Riak
  • Hệ thống CA (Consistency – Availability): Những hệ thống này ưu tiên consistency và available nhưng có thể có khả năng chịu lỗi kém. Các database nhóm này thường là các hệ thống SQL như Oracle Database, Microsoft SQL Server, PostgresSQL… Chúng thường được sử dụng trong các hệ thống cần đảm bảo tính nhất quán, chặt chẽ của dữ liệu như tài chính, ngân hàng, thương mại điện tử.
  • Hệ thống AP (Availability – Partition Tolerance): Những hệ thống này ưu tiên tính sẵn sàng và khả năng chịu lỗi. Chúng tiếp tục hoạt động ngay cả trong trường hợp xảy ra lỗi, chấp nhận rủi ro cung cấp dữ liệu có thể lỗi thời hoặc xung đột. Các database thiết kế theo dạng này như Amazon DynamoDB, Couchbase, MongoDB, Elasticsearch… Các database này thường được sử dụng trong các hệ thống lưu trữ cần tải cao, liên tục và không yêu cầu quá chặt chẽ về mặt dữ liệu như lưu trữ log, lưu trữ thông tin từ các sensor của thiết bị IOT.

Những giá trị của định lý CAP

Hiểu định lý CAP là quan trọng đối với các lập trình viên trong việc thiết kế hệ thống phân tán. Việc lựa chọn kiến trúc hệ thống nên tương ứng với các yêu cầu cụ thể và ưu tiên của ứng dụng. Không có một hệ thống nào hoàn hảo ở tất cả các khía cạnh, việc của lập trình viên là phân tích từ nhu cầu thực tế của business để lựa chọn được kiến trúc hợp lý, và tối ưu chi phí.

Kết luận, định lý CAP đóng vai trò như một nguyên tắc hướng dẫn, buộc các lập trình viên phải cân nhắc cẩn thận về những đánh đổi liên quan đến việc xây dựng hệ thống phân tán. Bằng cách hiểu và chấp nhận những đánh đổi này, team phát triển có thể đưa ra quyết định đúng đắn để đáp ứng các mục tiêu mà tổ chức đề ra.

Leave a Reply

Your email address will not be published. Required fields are marked *