icantech
Lập trình chung
7378
08/12/2023

Zookeeper là gì? Tất cả những kiến thức về Zookeeper bạn nhất định phải biết

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é!

1. Zookeeper là gì?

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.

2. Zookeeper hoạt động như thế nào?

2.1. Kiến trúc của Zookeeper

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. 

zookeeper

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.

2.2. Các thành phần quan trọng của Zookeeper

zookeeper

  • Request Processor: Hoạt động trong Leader node và chịu trách nhiệm xử lý các yêu cầu ghi. Sau khi xử lý, hệ thống sẽ gửi các thay đổi đến các follower node.
  • Atomic Broadcast: Hiện diện ở cả Leader Node và Follower node, chịu trách nhiệm gửi các thay đổi đến các node khác.
  • In-memory Databases (Replicated Databases) - Cơ sở dữ liệu trong bộ nhớ (Cơ sở dữ liệu được sao chép): chịu trách nhiệm lưu trữ dữ liệu trong Zookeeper. Mỗi node chứa cơ sở dữ liệu riêng của nó. Dữ liệu cũng được ghi vào hệ thống tệp để cung cấp khả năng phục hồi trong trường hợp có bất kỳ sự cố nào với cụm.
  • Client - Máy khách: Một trong các node trong cụm ứng dụng phân tán giúp truy cập thông tin từ máy chủ. Mọi máy khách sẽ gửi một tin nhắn đến máy chủ để cho máy chủ biết rằng máy khách đó vẫn còn hoạt động.
  • Server - Máy chủ: Cung cấp tất cả các dịch vụ cho khách hàng. Đưa ra sự thừa nhận cho khách hàng.
  • Ensemble– Nhóm máy chủ Zookeeper. Số lượng node tối thiểu cần thiết để tạo thành một quần thể là 3.

2.3. Mô hình dữ liệu của ZooKeeper

zookeeper

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:

  • Persistence: Tồn tại cho đến khi chúng bị xóa hoàn toàn.
  • Ephemeral: Hoạt động cho đến khi kết nối máy khách còn hoạt động.
  • Sequential: Không giữ lại hoặc linh hoạt.

3. Tìm hiểu về Kafka Zookeeper

3.1. Kafka Zookeeper là gì?

Zookeeper được sử dụng để quản lý siêu dữ liệu trong thế giới Kafka. Ví dụ:

  • Zookeeper theo dõi những brokers nào là một phần của cụm Kafka.
  • Zookeeper được các Kafka brokers sử dụng để xác định brokers nào là leader một phân vùng và chủ đề nhất định và thực hiện các cuộc bình chọn.
  • Zookeeper lưu trữ cấu hình cho chủ đề và quyền.
  • Zookeeper gửi thông báo tới Kafka trong trường hợp có thay đổi (ví dụ: chủ đề mới, brokers không hoạt động, brokers xuất hiện, xóa chủ đề, v.v.)

3.2. Tại sao Zookeeper cần thiết cho Apache Kafka?

  • Controller election

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 chủ đề

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

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.

  • Thành viên của cụm

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.

4. Lời Kết

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.

Share
Tags
Lập trình chung

Bài tương tự