Apache Storm - Kiến trúc cụm
Một trong những điểm nổi bật chính của Apache Storm là nó có khả năng chịu lỗi, nhanh chóng mà không có ứng dụng phân tán “Điểm lỗi duy nhất” (SPOF). Chúng ta có thể cài đặt Apache Storm trong nhiều hệ thống nếu cần để tăng dung lượng của ứng dụng.
Chúng ta hãy xem cách cụm Apache Storm được thiết kế và kiến trúc bên trong của nó. Sơ đồ sau đây mô tả thiết kế cụm.
Apache Storm có hai loại nút, Nimbus (nút chính) và Supervisor(nút công nhân). Nimbus là thành phần trung tâm của Apache Storm. Công việc chính của Nimbus là chạy cấu trúc liên kết Storm. Nimbus phân tích cấu trúc liên kết và tập hợp nhiệm vụ được thực thi. Sau đó, nó sẽ phân phối nhiệm vụ cho một người giám sát có sẵn.
Một người giám sát sẽ có một hoặc nhiều quy trình của công nhân. Người giám sát sẽ ủy thác các nhiệm vụ cho các quy trình của công nhân. Quy trình công nhân sẽ sinh ra bao nhiêu người thực thi khi cần thiết và chạy tác vụ. Apache Storm sử dụng một hệ thống nhắn tin phân tán nội bộ để liên lạc giữa nimbus và người giám sát.
Các thành phần | Sự miêu tả |
---|---|
Nimbus | Nimbus là một nút chính của Storm cluster. Tất cả các nút khác trong cụm được gọi làworker nodes. Nút chính chịu trách nhiệm phân phối dữ liệu giữa tất cả các nút công nhân, giao nhiệm vụ cho các nút công nhân và giám sát các lỗi. |
Người giám sát | Các nút tuân theo các chỉ dẫn do nimbus đưa ra được gọi là Người giám sát. Asupervisor có nhiều quy trình của nhân viên và nó điều chỉnh các quy trình của nhân viên để hoàn thành các nhiệm vụ được giao bởi nimbus. |
Quy trình công nhân | Một quy trình công nhân sẽ thực thi các tác vụ liên quan đến một cấu trúc liên kết cụ thể. Quá trình worker sẽ không tự chạy một tác vụ, thay vào đó nó tạo raexecutorsvà yêu cầu họ thực hiện một nhiệm vụ cụ thể. Một quy trình công nhân sẽ có nhiều người thực thi. |
Người thừa hành | Một trình thực thi không là gì khác ngoài một luồng duy nhất được sinh ra bởi một quy trình công nhân. Người thực thi chạy một hoặc nhiều nhiệm vụ nhưng chỉ cho một vòi hoặc chốt cụ thể. |
Bài tập | Một nhiệm vụ thực hiện xử lý dữ liệu thực tế. Vì vậy, nó có thể là một vòi hoặc một bu lông. |
Khung ZooKeeper | Apache ZooKeeper là một dịch vụ được sử dụng bởi một cụm (nhóm các nút) để phối hợp giữa chúng và duy trì dữ liệu được chia sẻ với các kỹ thuật đồng bộ hóa mạnh mẽ. Nimbus là không trạng thái, vì vậy nó phụ thuộc vào ZooKeeper để giám sát trạng thái nút làm việc. ZooKeeper giúp người giám sát tương tác với nimbus. Có trách nhiệm duy trì trạng thái nimbus và giám sát viên. |
Storm không có trạng thái tự nhiên. Mặc dù bản chất không trạng thái có những nhược điểm riêng nhưng nó thực sự giúp Storm xử lý dữ liệu thời gian thực theo cách tốt nhất và nhanh nhất có thể.
Tuy nhiên, Storm không hoàn toàn không có trạng thái. Nó lưu trữ trạng thái của nó trong Apache ZooKeeper. Vì trạng thái có sẵn trong Apache ZooKeeper, một nimbus bị lỗi có thể được khởi động lại và hoạt động từ nơi nó rời đi. Thông thường, các công cụ giám sát dịch vụ nhưmonit sẽ giám sát Nimbus và khởi động lại nó nếu có bất kỳ lỗi nào.
Apache Storm cũng có một cấu trúc liên kết nâng cao được gọi là Trident Topologyvới bảo trì trạng thái và nó cũng cung cấp API cấp cao như Pig. Chúng ta sẽ thảo luận về tất cả các tính năng này trong các chương tới.