Nếu bạn đang sử dụng Apache Kafka để xây dựng các dịch vụ truyền phát tin nhắn thì chắc hẳn bạn đã từng nhìn thấy ở đâu đó biểu thức Zookeeper. Vậy Zookeeper là gì? Cùng ICANTECH tìm hiểu trong bài viết dưới đây nhé!
Zookeeper là một dịch vụ phối hợp nguồn mở, phân tán dành cho các ứng dụng phân tán. Tại đây trình bày một tập hợp đơn giản các nguyên hàm để triển khai các dịch vụ cấp cao hơn nhằm đồng bộ hóa, bảo trì cấu hình cũng như nhóm và đặt tên.
Trong một hệ thống phân tán, có nhiều node hoặc máy cần liên lạc và phối hợp hành động với nhau. ZooKeeper cung cấp một dịch vụ để đảm bảo rằng các node này nhận biết được nhau và có thể phối hợp hành động. Nó thực hiện điều bằng cách duy trì một cây node dữ liệu có thứ bậc được gọi là “Znodes”.
Znodes có thể được sử dụng để lưu trữ và truy xuất dữ liệu cũng như duy trì thông tin trạng thái dữ liệu. ZooKeeper còn cung cấp một tập hợp các hàm có thể được sử dụng để điều phối hành động của các node trong hệ thống phân tán. ZooKeeper cũng cung cấp các tính năng như bầu chọn leader node, chuyển đổi và phục hồi, có thể giúp đảm bảo rằng hệ thống có khả năng phục hồi sau các lỗi. ZooKeeper được sử dụng rộng rãi trong các hệ thống phân tán như Hadoop, Kafka và HBase và nó đã trở thành một thành phần thiết yếu của nhiều ứng dụng phân tán.
Kiến trúc ZooKeeper bao gồm một hệ thống phân cấp các node được gọi là znodes, được tổ chức theo cấu trúc giống cây. Mỗi znode có thể lưu trữ dữ liệu và có một bộ quyền kiểm soát quyền truy cập vào znode.
Các znode được tổ chức trong một không gian tên có thứ bậc, tương tự như một hệ thống tệp. Ở gốc của hệ thống phân cấp là znode gốc và tất cả các znode khác là con của znode gốc. Hệ thống phân cấp tương tự như hệ thống phân cấp hệ thống tệp, trong đó mỗi znode có thể có các cấp nhỏ hơn.
Trong Zookeeper, dữ liệu được lưu trữ trong không gian tên có thứ bậc, tương tự như hệ thống tệp. Mỗi node trong không gian tên được gọi là Znode và nó có thể lưu trữ dữ liệu và có con. Znodes tương tự như các tập tin và thư mục trong hệ thống tập tin. Zookeeper cung cấp một API đơn giản để tạo, đọc, viết và xóa Znodes.
Bên cạnh đó, dịch vụ này cũng cung cấp các cơ chế để phát hiện các thay đổi đối với dữ liệu được lưu trữ trong Znodes, chẳng hạn như đồng hồ và trình kích hoạt. Znodes duy trì cấu trúc thống kê bao gồm: Số phiên bản, ACL, Dấu thời gian, Độ dài dữ liệu
Các loại Znode:
Zookeeper được sử dụng để quản lý siêu dữ liệu trong thế giới Kafka. Ví dụ:
Bộ điều khiển - Controller là một trong những thực thể môi giới quan trọng nhất trong hệ sinh thái Kafka và nó cũng có trách nhiệm duy trì mối quan hệ leader-follower trên tất cả các phân vùng. Nếu một node bị tắt vì lý do nào đó, bộ điều khiển có trách nhiệm yêu cầu tất cả các bản sao đóng vai trò là leader phân vùng để hoàn thành nhiệm vụ của leader phân vùng trên node sắp bị lỗi.
Vì vậy, bất cứ khi nào một node tắt, một bộ điều khiển mới có thể được bầu và cũng có thể đảm bảo rằng tại bất kỳ thời điểm nào, chỉ có một bộ điều khiển và tất cả các follower node đã đồng ý về điều đó.
Cấu hình liên quan đến tất cả các chủ đề bao gồm danh sách các chủ đề hiện có, số lượng phân vùng cho từng chủ đề, vị trí của tất cả các bản sao, danh sách ghi đè cấu hình cho tất cả các chủ đề và node nào là leader node được ưu tiên…
Danh sách kiểm soát truy cập hoặc ACL cho tất cả các chủ đề cũng được duy trì trong Zookeeper.
Zookeeper cũng duy trì một danh sách tất cả các brokers đang hoạt động tại bất kỳ thời điểm nào và là một phần của cụm.
Lưu ý: Không thể chạy các dịch vụ Kafka mà không cài đặt Zookeeper trước. Tuy nhiên, Zookeeper đã được cài đặt và định cấu hình cho cụm CloudKarafka.
Vì Zookeeper là một phần của CloudKarafka nên hầu hết người dùng không bao giờ phải thừa nhận sự hiện diện của nó. Zookeeper được cài đặt và định cấu hình theo mặc định, tùy thuộc vào số lượng node trong cụm và hầu hết khách hàng sẽ không bao giờ chủ động tích hợp với Zookeeper. Do đó, vẫn có tùy chọn tiếp cận Zookeeper từ các gói dành riêng cho Cloudkarafka.
Trong bài viết này, ICANTECH đã cùng bạn đi tìm lời giải đáp cho câu hỏi “zookeeper là gì” cũng như tìm hiểu về Kafka Zookeeper và lý do Zookeeper cần thiết cho Kafka Zookeeper. Hi vọng bài viết đã cung cấp cho bạn các thông tin hữu ích về Zookeeper để ứng dụng cho các chương trình lập trình của mình.
Cảm ơn bạn đã đọc bài viết, nếu bạn đang quan tâm đến học lập trình thì hãy tham khảo ngay các khóa học lập trình dưới đây tại ICANTECH nhé
Nguồn ảnh: ICANTECH.