Tìm hiểu về hệ thống phân tán

535

Chào các bạn,

Ở bài Big data là gì mình có nói rằng các công cụ giải quyết vấn đề về big data đều hoạt động trên các hệ thống phân tán. Vậy hệ thống phân tán là gì, cách hoạt động của nó ra sao thì mình sẽ trình bày với các bạn trong bài viết này nhé.

Lưu ý: Bài viết này chỉ chia sẻ kiến thức tổng quan về hệ thống phân tán, tập trung vào các khái niệm mà sẽ được sử dụng trong big data cơ bản. Nếu bạn tìm kiếm một tài liệu đầy đủ và chi tiết về hệ thống phân tán thì bài viết này không phải cái bạn đang tìm.

I. Hệ thống phân tán là gì?

Hệ thống phân tán hay còn được biết đến với tên khác là điện toán phân tán – là một hệ thống bao gồm nhiều thành phần hoạt động đọc lập, trao đổi và làm việc với nhau (qua mạng) để giải quyết một vấn đề cụ thể.

Các thành phần trong hệ thống phân tán có thể là một máy tính (máy vật lý hoặc máy ảo), container, hay bất kỳ thiết bị kết nối mạng nào, có bộ nhớ local và có thể giao tiếp với nhau thông qua mạng máy tính.

Nếu coi tất cả các thành phần trong hệ thống phân tán là các máy tính, thì có thể hiểu nhanh

Hệ thống phân tán = các máy tính + mạng máy tính.

Các thành phần trong hệ thống phân tán thường phối hợp với nhau theo 2 kiểu như sau:

Cách 1

Tất cả các thành phần trong hệ đều hoạt động với mục đích chung, mỗi thành phần xử lý một phần công việc, và user sẽ nhận kết quả thông qua một máy đại diện. Toàn hệ chỉ có một end-user.

Giống như một team có nhiều member và một leader. Các member sẽ làm các công việc nhất định, sau khi làm xong thì báo kết quả cho leader. Leader sẽ tổng hợp lại thành một kết quả để báo cáo cho các team khác hoặc phòng ban cấp cao hơn.

Cách 2

Mỗi máy đảm nhiệm một nhiệm vụ riêng biệt và có end-user riêng, tuy nhiên các thành phần vẫn trao đổi và chia sẻ thông tin lẫn nhau.

Giống như một công ty có nhiều phòng ban, phòng kỹ thuật chuyên giải quyết các vấn đề như sửa mạng, sửa máy tính. Phòng CSKH chuyên giải quyết các thắc mắc của khách hàng. Về cơ bản, mỗi phòng ban phục vụ một nhóm khách hàng riêng, nhưng giữa các phòng vẫn trao đổi thông tin lẫn nhau.

II. Lợi ích của việc triển khai hệ thống phân tán

Có mấy lý do sau mà chúng ta nên triển khai hệ thống phân tán:

  • Có khả năng mở rộng theo chiều ngang: Vì mỗi thành phần trong hệ thống phân tán là một máy tính (hoặc các thành phần khác như mình đã chỉ ra ở trên) nên có thể dễ dàng thêm bớt khi cần, chi phí cũng rẻ.
  • Khả năng chịu lỗi cao: Vì mỗi thành phần đều hoạt động riêng biệt, nên việc có một thành phần ngừng hoạt động cũng không ảnh hưởng tới toàn hệ thống. Nếu xảy ra lỗi, sẽ dễ dàng thay thế hoặc khôi phục.
  • Hiệu năng: Một trong những lợi ích quan trọng nhất của hệ thống phân tán đó là có hiệu năng cao. Do các công việc sẽ được chia đều cho các máy nên chúng có thể xử lý song song.

Đương nhiên là chúng ta sẽ chỉ triển khai hệ thống phân tán khi gặp phải bài toán có những vấn đề như trên. Chứ không phải tất cả các bài toán đều đều phù hợp để triển khai hệ thống phân tán.

III. Khó khăn khi triển khai hệ thống phân tán

Bên cạnh những lợi ích mà mình đã kể ra ở phần trên, thì có một số khó khăn sau khi bạn triển khai một hệ thống phân tán:

  • Quản lý các thành phần: Mỗi thành phần hoạt động riêng biệt, vì vậy có một khó khăn đó là khả năng quản lý các thành phần trong hệ. Cụ thể như:
    • Vai trò của các thành phần: Các thành phần trong hệ phải có mỗi quan hệ với nhau rõ ràng, nếu không sẽ dễ dàng trở thành một “mớ lộn”.
    • Debug, log giữa của các thành phần: Mỗi thành phần hoạt động riêng biệt nên việc debug, log cũng sẽ phức tạp.
  • Lập lịch chạy: Các công việc đẩy vào hệ phân tán có thể sẽ được lập lịch để chạy, vậy sẽ có các vấn đề như: Khi nào chúng cần chạy, khi nào chúng nên chạy và chạy ở đâu trong hệ.
  • Độ trễ: Các thành phần trao đổi với nhau qua mạng, hơn nữa mỗi thành phần có thể có cấu hình khác nhau, vì vậy mà giữa các thành phần sẽ có một độ trễ nhất định.
  • Quan sát toàn hệ thống: Bạn sẽ gặp khó khăn trong việc thu thập báo cáo giữa các thành phần, giám sát các thành phần bởi vì chúng đều hoạt động riêng biệt.
Bộ sưu tập áo thun cho dân IT, đủ các ngôn ngữ lập trình và hệ điều hành.
Click vào ảnh để xem.
QC Được tài trợ

V. Tổng kết

Tổng kết lại thì hệ thống phân tán đem lại nhiều lợi ích quan trọng, nhưng cũng có không ít khó khăn. Vì vậy mà cần phải cân nhắc kỹ trước khi triển khai một hệ thống phân tán, bởi để có những lợi ích trên thì bạn cũng phải đầu tư kha khá chí phí để giải quyết các khó khăn phát sinh.

Tuy nhiên, khi bài toán bạn gặp phải quá lớn và đạt tới giới hạn xử lý của máy tính ngày nay thì việc triển khai một hệ thống phân tán để xử lý là điều bắt buộc.