Zookeeper

2024-02-18

distributed synchronization

Khái niệm

Key feature:

  • replicated across multiple servers
  • scale horizontally: add thêm node là chạy
  • Data consistency
  • cluster state: mọi thành viên cần biết vai trò và có cách xử lí khi leader chết

Ứng dụng

Distributed systems coordination:

  • Configuration management
  • Leader election
  • Locks in distributed systems
  • Manage cluster membership

ZNode

Như kiểu hệ thống file system thôi: hỗ trợ các lệnh: create, delete, getData, setData, getChildren, exists, get set ACL.

Key feature:

  • có thể đồng thời: lưu dữ liệu + có child znode
  • lưu current version, last transaction id
  • ACL, authen (user, pass)
  • client có thể đặt watch vào znode: nhận thông báo về change dữ liệu trên nó và child của znode đó (+ thêm, xóa child znode)

Các loại znode

loại đặc điểm ví dụ
Persistent Znode (mặc định) k xóa dữ liệu đi persistent data, save config, schema db
Ephemeral ZNodes xóa dữ liệu (xóa znode đó) khi client hết phiên (k nhận được ping request từ client) 1 znode có các child là list các server, các server sẽ connect tới child đó. nếu server chết thì child đó chết. nếu đặt watch vào node cha sẽ nhận được thông báo về child chết
Ephemeral Sequential Znode như Ephemeral ZNodes, khác cái là các child name sẽ được thêm cái đuôi tăng dần ứng dụng trong việc bầu leader
Persistent Sequential Znode đuôi tăng + persit null

Usecase:

leader election: 3 hướng tiếp cận

cách làm đặc điểm hạn chế
tạo persistent /election. các server tạo ephemeral /leader. bên trong chứa thông tin leader (ip) các server khác không thể tranh làm leader vì đã có 1 /leader rồi. k thể tạo znode /leader nữa khi leader chết, /election sẽ kích hoạt watcher tới tất cả các server, lúc đó sẽ có rất nhiều server tranh nhau ghi vào (k tốt). cách giải quyết ghi (hạn chế số lượng hoặc dùng sequential - cách 2)
thay vì dùng ephemeral /leader, thì dùng ephemeral sequential znode /leader- giải quyết vấn đề ghi chưa giải quyết được vấn đề là watcher sẽ thông báo cho các server(để các server cập nhật leader là ai)
chỉ notify 1 server khi leader down null null

distributed locks: Tạo /lock. thằng nào ghi xong thì xóa session đi cho thằng khác có thể giữ

group Membership/Managing Cluster state: live_node, all_node

active - stand by

Ref

medium