Kiến trúc phân tán khác kiến trúc tập trung thế nào?
- Kiến trúc phân tán là gì?
- Kiến trúc tập trung bố trí tài nguyên như thế nào?
- Khác biệt cốt lõi nằm ở cách phân bổ tài nguyên
- Vì sao kiến trúc phân tán có khả năng mở rộng và chịu lỗi tốt hơn?
- Kiến trúc phân tán không phải lúc nào cũng tốt hơn kiến trúc tập trung
- Nên chọn kiến trúc nào dựa trên cách sử dụng tài nguyên?
Điểm khác biệt này kéo theo những hệ quả quan trọng về khả năng mở rộng, tính sẵn sàng, điểm lỗi, độ phức tạp vận hành và cách hệ thống phải phối hợp giữa các nút.
Kiến trúc phân tán là gì?
Kiến trúc phân tán là cách tổ chức hệ thống trong đó nhiều máy tính hoặc nút độc lập cùng thực hiện các phần công việc và phối hợp qua mạng để cung cấp một dịch vụ thống nhất. Mỗi nút có thể sở hữu năng lực tính toán, bộ nhớ và trong nhiều trường hợp là cả dữ liệu hoặc bộ nhớ lưu trữ riêng.
Điểm quan trọng là phân tán không đơn giản có nghĩa là có nhiều máy. Các nút phải có sự phối hợp để hoàn thành mục tiêu chung. Một hệ thống có nhiều máy nhưng mọi hoạt động vẫn phụ thuộc tuyệt đối vào một máy trung tâm vẫn có thể mang đặc trưng điều phối tập trung.
Về mặt bố trí tài nguyên, kiến trúc phân tán thường chia tài nguyên thành nhiều phần:
· Năng lực xử lý được phân bổ cho nhiều nút
· Dữ liệu có thể được phân vùng hoặc sao chép trên nhiều nút
· Dịch vụ có thể được tách thành nhiều thành phần
· Lưu lượng có thể được phân phối cho nhiều máy
· Các nút có thể hoạt động đồng thời và trao đổi thông tin để duy trì trạng thái chung
Vì vậy, người dùng thường nhìn thấy một dịch vụ thống nhất dù phía sau dịch vụ đó có thể là nhiều máy chủ và nhiều thành phần độc lập.

Kiến trúc tập trung bố trí tài nguyên như thế nào?
Trong kiến trúc tập trung, một nút trung tâm đảm nhiệm phần lớn hoặc toàn bộ hoạt động xử lý và quản lý tài nguyên. Các máy khách hoặc thành phần khác gửi yêu cầu đến nút này, sau đó nút trung tâm quyết định cách xử lý và trả kết quả.
Mô hình này tạo ra một luồng tương đối rõ:
Client → Nút trung tâm → Xử lý tài nguyên → Kết quả
Ưu điểm trực tiếp của cách bố trí này là quyền kiểm soát và trạng thái quan trọng nằm tại một nơi. Điều đó giúp kiến trúc dễ hình dung, dễ quản trị và thuận tiện khi cần áp dụng một chính sách thống nhất.
Đổi lại, nút trung tâm trở thành thành phần có mức độ phụ thuộc rất cao. Nếu toàn bộ dịch vụ đều cần nút đó để hoạt động, sự cố tại nút trung tâm có thể làm ảnh hưởng đến toàn hệ thống. Đây chính là đặc điểm tạo ra single point of failure trong nhiều kiến trúc tập trung.
Về mở rộng, hệ thống tập trung thường có xu hướng scale up: tăng CPU, bộ nhớ, lưu trữ hoặc năng lực của máy trung tâm thay vì thêm nhiều nút xử lý ngang hàng.
Khác biệt cốt lõi nằm ở cách phân bổ tài nguyên
Nếu chỉ nhìn vào số lượng máy, rất dễ nhầm hai mô hình. Tiêu chí quan trọng hơn là tài nguyên và quyền xử lý được đặt ở đâu.
|
Tiêu chí |
Kiến trúc tập trung |
Kiến trúc phân tán |
|
Nơi xử lý chính |
Một nút trung tâm |
Nhiều nút |
|
Dữ liệu |
Thường tập trung |
Có thể phân vùng hoặc sao chép |
|
Điều phối |
Tập trung |
Phân tán hoặc phối hợp giữa nhiều nút |
|
Mở rộng |
Chủ yếu theo chiều dọc |
Thường thuận lợi hơn với chiều ngang |
|
Điểm lỗi |
Dễ hình thành điểm lỗi trung tâm |
Có thể giảm phụ thuộc vào một nút |
|
Phối hợp |
Đơn giản hơn |
Cần cơ chế phối hợp giữa các nút |
|
Vận hành |
Tương đối dễ quản lý |
Phức tạp hơn |
|
Phù hợp |
Hệ thống nhỏ, cần kiểm soát tập trung |
Hệ thống lớn, tải cao hoặc cần mở rộng |
Sự khác biệt này giải thích vì sao hệ thống phân tán có thể tăng năng lực bằng cách bổ sung thêm máy, trong khi hệ thống tập trung thường phải nâng cấp máy trung tâm.
Vì sao kiến trúc phân tán có khả năng mở rộng và chịu lỗi tốt hơn?
Khi tài nguyên được chia cho nhiều nút, hệ thống không nhất thiết phải phụ thuộc vào năng lực của một máy duy nhất. Có thể bổ sung thêm nút để tiếp nhận một phần tải, hoặc phân phối dữ liệu và công việc cho các nút khác nhau. Đây là cơ sở của horizontal scaling.
Cách bố trí này cũng mở ra khả năng chịu lỗi tốt hơn. Nếu một nút gặp sự cố và hệ thống đã có bản sao hoặc cơ chế chuyển tải phù hợp, các nút khác có thể tiếp tục phục vụ một phần hoặc toàn bộ yêu cầu. Tuy nhiên, điều này không có nghĩa kiến trúc phân tán tự động không có điểm lỗi. Một hệ thống phân tán vẫn có thể thất bại nếu cơ chế phối hợp, mạng, dữ liệu hoặc một thành phần dùng chung trở thành điểm phụ thuộc chung.
Đổi lại, phân tán tạo thêm một bài toán mà hệ thống tập trung đơn giản hơn: phối hợp giữa các nút. Khi nhiều máy cùng thao tác trên dữ liệu hoặc trạng thái chung, hệ thống phải xử lý đồng thời, đồng bộ, truyền thông và các tình huống mất kết nối. Microsoft cũng lưu ý rằng phối hợp giữa các instance là một vấn đề quan trọng khi nhiều thành phần cùng tác động lên trạng thái dùng chung.
Kiến trúc phân tán không phải lúc nào cũng tốt hơn kiến trúc tập trung
Ưu thế của phân tán đi kèm với chi phí về độ phức tạp.
Khi dữ liệu và xử lý nằm trên nhiều nút, hệ thống phải giải quyết thêm các vấn đề như:
· Định tuyến yêu cầu đến đúng nút
· Đồng bộ hoặc sao chép dữ liệu
· Xử lý lỗi mạng
· Phối hợp các thao tác đồng thời
· Theo dõi trạng thái của nhiều nút
· Xử lý trường hợp một nút hoạt động nhưng nút khác không phản hồi
Trong các hệ thống phân tán có dữ liệu dùng chung, việc cân bằng giữa tính nhất quán, tính sẵn sàng và khả năng chịu phân vùng mạng cũng trở thành vấn đề thiết kế quan trọng. Đây là một trong những lý do các hệ thống phân tán khó thiết kế và kiểm thử hơn hệ thống tập trung tương đương.
Ngược lại, nếu hệ thống có quy mô nhỏ, tải không lớn và yêu cầu kiểm soát tập trung cao, một kiến trúc tập trung có thể hợp lý hơn. Việc đưa dữ liệu và logic vào một trung tâm giúp giảm số lượng thành phần phải phối hợp và đơn giản hóa vận hành.
Nên chọn kiến trúc nào dựa trên cách sử dụng tài nguyên?
Có thể nhìn lựa chọn này từ chính đặc điểm phân bổ tài nguyên.
Kiến trúc tập trung phù hợp hơn khi:
· Tải hệ thống tương đối nhỏ
· Dữ liệu cần được kiểm soát tại một trung tâm
· Quy trình xử lý không cần mở rộng trên nhiều nút
· Đơn giản trong vận hành là ưu tiên
· Hệ thống chấp nhận mức phụ thuộc cao vào máy trung tâm
Kiến trúc phân tán phù hợp hơn khi:
· Khối lượng người dùng hoặc dữ liệu lớn
· Tải cần được chia cho nhiều máy
· Cần mở rộng bằng cách bổ sung nút
· Dịch vụ cần hoạt động tại nhiều khu vực
· Cần giảm sự phụ thuộc vào một máy duy nhất
· Các thành phần có thể được tách và vận hành độc lập
Trong thực tế, hai cách tiếp cận cũng có thể kết hợp. Một hệ thống có thể phân tán phần xử lý nhưng vẫn duy trì một số thành phần điều phối hoặc quản trị tập trung. Vì vậy, “phân tán” và “tập trung” nên được hiểu như hai cách tổ chức quyền xử lý và tài nguyên, thay vì hai trạng thái hoàn toàn tách biệt.
Nhìn từ cách bố trí tài nguyên, kiến trúc tập trung đặt phần lớn xử lý, dữ liệu và quyền điều phối tại một nút trung tâm; kiến trúc phân tán chia các tài nguyên đó cho nhiều nút cùng phối hợp. Kiến trúc tập trung đổi lại sự đơn giản và kiểm soát dễ hơn, còn kiến trúc phân tán đổi lấy khả năng mở rộng và khả năng chịu lỗi tốt hơn với chi phí là cơ chế phối hợp phức tạp hơn.
Vì vậy, khác biệt quan trọng không phải là “một máy hay nhiều máy”, mà là hệ thống phụ thuộc vào một trung tâm đến mức nào và tài nguyên được phân bổ, phối hợp giữa các nút ra sao.
