CAP theorem – Consistency vs Availability
Theo nguyên tắc CAP(CAP theorem) thì 1 hệ thống thiết kế phân tán sẽ không thể thỏa mãn cả 3 điều kiện:
Consistency(nhất quán) : trong 1 hệ thống phân tán,mọi request tới hệ thống phải có phản hồi kết quả là lần ghi cuối cùng hoặc thông báo lỗi.
Availability(có hiệu lực) : trong 1 hệ thống phân tán, có nhiều server(node), request của bạn tới tất cả các server đều trả kết quả (yêu cầu gửi đi phải có phúc đáp).
Partition tolerance(phân mảnh): hệ thống vẫn hoạt động được(thực hiện chức năng hoặc đáp trả query) ngay cả khi mạng bị lỗi (1 bộ phận bị lỗi hay cô lập) hoặc có độ trễ khi gửi message (hoặc mất mesage) giữa các node.
PA – Trường hợp hệ thống đảm bảo được tính sẳn sàng(A) và cho phép phân mảnh, mất kết nối mạng (P): Ứng dụng web bán hàng, trong nghiệp vụ xử lí đơn hàng, phân hệ thanh toán và phân hệ đơn hàng cùng nhận được yêu cầu xử lí đơn hàng. Mặc dù phân hệ đơn hàng mất kế nối với db nhưng phân hệ thanh toán vẫn được xử lí bình thường. Việc này đã làm giảm nhất quán (C) giữa db đơn hàng và db thanh toán, tuy nhiên ứng dụng vẫn sẳn sàng (A) phản hồi trạng thái xử lí đơn hàng thành công.
PA là mô hình thường được áp dụng với các hệ thống phân tán.
PC – Trường hợp hệ thống đảm bảo được tính nhất quán(C), cho phép phân mảnh, mất kết nối mạng(P): Hệ thống web đọc tin mất kết nối với db, ứng dụng vẫn cho phép đọc tin tức (P) với dữ liệu lưu trong cache, mặc dù không đọc được bài mới, không xuất bản được bài viết mới do mất kết nối với db. Node ghi log visit cũng không sẳn sàng(A), không thực hiện lưu ký được.
PC là trường hợp sảy ra khi các node trong hệ thống phân tán xử lí dữ liệu độc lập. Các lớp ứng dụng này thường sử dụng thêm các hệ thống phụ trợ như memcache, redis, hbase,..
AC – Hệ thống vẫn đảm bảo sẳn sàng và giữ cho nhất quán nhưng không cho phép bị phân mảnh. Ứng dụng mất kế nối với db. Bản chất hiện tượng này, ứng dụng vẫn sẳn sàng(hiển thị lỗi, hiển thị thông báo từ chối dịch vụ hoặc không hiển thị nội dụng) và vẫn đảm bảo tính nhất quán của dữ liệu.
Trường hợp AC dễ thấy và là đặc điểm thông thường của các ứng dụng nguyên khối 3 lớp giản dị; thuần túy sử dụng cơ sở dữ liệu quan hệ.
Rất khó cân bằng giữa 2 điều kiện Consistency và Availability. Tùy theo hệ thống mà việc thiết kế sẽ phải hi sinh độ cân bằng của 2 đặc tính này. Khi sự cân bằng bị mất nghĩa là đã xuất hiện phân mảnh. Trường hợp hệ thống xuất hiện phân mảnh gần như không có. Không hệ thống phân tán nào muốn xảy ra partiting vì khi nó xảy ra, hệ thống đó không còn được gọi là phân tán. Trong trường hợp đó giải pháp thường được áp dụng là là giảm tính nhất quán để đánh đổi tính sẳn sàng (A) và cho phép phân mảnh (P). Với AP người ta thay thế nhất quán (Consistency) bằng nhất quán cuối (Eventually Consistency)
Nhất quán cuối
Theo Werner Vogels – CIO của Amazon và là cựu giáo sư khoa Khoa học Máy tính của trường Đại học Cornell (Mỹ). Werner đề xuất một hướng đi mới trong việc xây dựng các hệ thống dữ liệu lớn, tách khỏi cách tiếp cận của các hệ QT CSDL quan hệ truyền thống. Cách tiếp cận mới này giúp tăng khả năng sẵn sàng (A – availability) và mở rộng (scalability) lên rất nhiều, vốn là các ưu tiên hàng đầu của các hệ thống lớn trên Internet. Werner đã tạo “cơ sở lý luận” vững chắc cho phong trào NoSQL (Not Only SQL) đang phát triển rất mạnh. Đại biểu của phong trào này là các hệ thống mới phát triển gần đây như Dynamo (phát triển/áp dụng tại Amazon), Cassandra (Facebook, Digg), CouchDB, MongoDB. Werner khái niệm eventual consistency – trong đó hệ thống cam kết rằng, một cập nhật xảy ra tại một điểm sẽ được lan truyền và sau một khoảng thời gian (không phải ngay tức khắc) sẽ lan truyền đến mọi điểm trong hệ thống và cuối cùng (eventually) hệ thống sẽ trở lại trạng thái nhất quán. Thuật ngữ này tạm dịch là “nhất quán cuối cùng”. Hầu như ae VN đều sử dụng thuật ngữ này nên chúng ta sẽ thống nhất gọi là “nhất quán cuối” hoặc “nhất quá muộn“.
Xem thêm:
availability keywords: cluster, .. citrix balancing, caching, ngix balancing, ..
consistency keywords:raft , Apache ZooKeeper™, ..
consistency keywords:raft , Apache ZooKeeper™, ..
Nhận xét
Đăng nhận xét