0

Cân bằng tính nhất quán, khả dụng và dung sai phân vùng trong hệ thống phân tán.

Nguồn: https://www.tuanh.net/blog/oop/balancing-consistency-availability-and-partition-tolerance-in-distributed-systems

Khi công nghệ tiến bộ và kỳ vọng của người dùng tăng cao, hệ thống phân tán trở thành lựa chọn hàng đầu để xử lý lượng dữ liệu khổng lồ. Từ mạng ngang hàng (P2P) đến microservices và mô hình xuất bản-theo dõi, kiến trúc phân tán mang lại khả năng mở rộng và linh hoạt chưa từng có. Tuy nhiên, những lợi ích này đi kèm với chi phí. Trong bài viết này, chúng ta sẽ đi sâu vào những thách thức và phần thưởng của hệ thống phân tán, với trọng tâm đặc biệt vào định lý CAP - một khái niệm cơ bản làm nền tảng cho thiết kế hệ thống phân tán.

1. CAP là gì?

Nguyên tắc CAP (Một quán, Khả dụng, Dung sai phân vùng) đóng vai trò quan trọng trong thiết kế và triển khai các hệ thống phân tán hiện đại. CAP là viết tắt của ba thuật ngữ:

  • C (Một quán): Đảm bảo dữ liệu luôn ở trạng thái hợp lệ và tuân thủ các ràng buộc của hệ thống.
  • A (Khả dụng): Đảm bảo hệ thống luôn sẵn sàng đáp ứng các yêu cầu của người dùng, giảm thiểu thời gian ngừng hoạt động và lỗi.
  • P (Dung sai phân vùng): Hệ thống tiếp tục hoạt động và đáp ứng các yêu cầu của nó ngay cả khi xảy ra phân vùng mạng. Điều này có nghĩa là hệ thống có thể tiếp tục chạy và phục vụ các yêu cầu, ngay cả khi một phần của hệ thống bị ngắt kết nối tạm thời với phần còn lại.

2. Tại sao CAP lại cần thiết?

Cá nhân tôi cho rằng nguyên tắc CAP mang lại những lợi ích sau:

  • Nó cung cấp một khung khổ cho các nhà phát triển ứng dụng để cân bằng giữa các thuộc tính mà họ lựa chọn. Ví dụ, nếu họ đang xây dựng một hệ thống cho ngân hàng, tính toàn vẹn dữ liệu trở thành ưu tiên hàng đầu, và tốc độ có thể không phải lúc nào cũng được ưu tiên.
  • Nó giúp dễ dàng lựa chọn các công nghệ mới để hỗ trợ phát triển và bảo trì hệ thống hiệu quả.
  • Dựa trên nguyên tắc CAP, các nhà phát triển có được cái nhìn sâu sắc về hệ thống họ đang vận hành, giúp họ xác định lỗi và cải thiện hệ thống nhanh chóng và hiệu quả.

3. You Can Only Choose 2 of the 3

Rõ ràng là không có hệ thống nào có thể đảm bảo cả ba thuộc tính: Nhất quán (Consistency), Khả dụng (Availability) và Dung sai phân vùng (Partition Tolerance). Tôi sẽ đưa ra một số ví dụ để minh họa điều này. Dung sai phân vùng là một yêu cầu bắt buộc trong hầu hết các hệ thống phân tán. Do đó, sau khi chọn Dung sai phân vùng, tôi sẽ tiếp tục lựa chọn giữa Nhất quán và Khả dụng. image.png

4.1 Nếu Bạn Chọn Nhất Quán (Consistency)

Điều này có nghĩa là dữ liệu hiển thị trên màn hình của tất cả khách hàng phải giống nhau. Phải có các bước đồng bộ dữ liệu giữa các nút. Điều này làm cho các nút bận rộn hơn và giảm khả năng sẵn sàng của chúng. Do đó, việc thêm Khả dụng (Availability) vào hệ thống trở nên bất khả thi. Các hệ thống yêu cầu cả Dung sai Phân vùng (Partition Tolerance) và Nhất quán thường là những hệ thống cần độ mở rộng cao và độ chính xác, chẳng hạn như ngân hàng, công ty bảo hiểm, tổ chức tài chính, v.v.

4.2 Nếu Bạn Chọn Khả dụng (Availability)

Điều này đảm bảo rằng hệ thống của chúng tôi luôn sẵn sàng phục vụ khách hàng, ngay cả khi một phần của nó bị trục trặc. Tuy nhiên, điều này vô tình hy sinh Nhất quán, vì dữ liệu có thể không đồng nhất khi được hiển thị cho khách hàng. Do đó, việc thêm Nhất quán vào một hệ thống như vậy trở nên bất khả thi. Các hệ thống yêu cầu cả Dung sai Phân vùng và Khả dụng thường là những hệ thống cần độ mở rộng cao và khả năng sẵn sàng cao, thường không nhấn mạnh tính toàn vẹn dữ liệu. Ví dụ bao gồm mạng xã hội, dịch vụ chat trực tuyến, v.v.

4.3 Điều Gì Xảy Ra Nếu Bạn Chọn Khả dụng và Nhất quán Trước Tiên?

Trong trường hợp đó, bạn sẽ kết thúc với một hệ thống đơn khối (Monolithic).

4. Kết luận

Qua bài viết này, tôi hy vọng bạn đã hiểu được các khái niệm cơ bản của nguyên lý CAP và cách áp dụng nó trong các tình huống khác nhau tùy theo yêu cầu của khách hàng. Hiểu rõ bản chất của nó sẽ giúp nhà phát triển nắm vững nền tảng của hệ thống, từ đó dễ dàng bảo trì, nâng cấp hoặc xây dựng một hệ thống mới. Cảm ơn bạn đã đọc. Nếu bạn có bất kỳ câu hỏi nào hoặc thấy có điều gì không đúng, vui lòng bình luận bên dưới để chúng ta thảo luận. Cảm ơn bạn và hẹn gặp lại lần sau.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí