Zookeeper - Nguyên tắc cơ bản
Trước khi đi sâu vào hoạt động của ZooKeeper, chúng ta hãy xem qua các khái niệm cơ bản của ZooKeeper. Chúng ta sẽ thảo luận về các chủ đề sau trong chương này -
- Architecture
- Không gian tên phân cấp
- Session
- Watches
Kiến trúc của ZooKeeper
Hãy xem sơ đồ sau. Nó mô tả "Kiến trúc Máy chủ-Máy chủ" của ZooKeeper.
Mỗi một trong các thành phần là một phần của kiến trúc ZooKeeper đã được giải thích trong bảng sau.
Phần | Sự miêu tả |
---|---|
Khách hàng | Khách hàng, một trong những nút trong cụm ứng dụng phân tán của chúng tôi, truy cập thông tin từ máy chủ. Trong một khoảng thời gian cụ thể, 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 còn sống. Tương tự, máy chủ sẽ gửi một xác nhận khi một máy khách kết nối. Nếu không có phản hồi từ máy chủ được kết nối, máy khách sẽ tự động chuyển hướng thư đến máy chủ khác. |
Người phục vụ | Máy chủ, một trong những nút trong tập hợp ZooKeeper của chúng tôi, cung cấp tất cả các dịch vụ cho khách hàng. Cung cấp xác nhận cho máy khách để thông báo rằng máy chủ còn sống. |
Tập hợp | Nhóm máy chủ ZooKeeper. Số lượng nút tối thiểu cần thiết để tạo thành một nhóm là 3. |
Thủ lĩnh | Nút máy chủ thực hiện khôi phục tự động nếu bất kỳ nút nào được kết nối không thành công. Các nhà lãnh đạo được bầu khi khởi động dịch vụ. |
Người theo dõi | Nút máy chủ tuân theo hướng dẫn của nhà lãnh đạo. |
Không gian tên phân cấp
Sơ đồ sau đây mô tả cấu trúc cây của hệ thống tệp ZooKeeper được sử dụng để biểu diễn bộ nhớ. Nút ZooKeeper được gọi làznode. Mọi znode được xác định bằng một tên và được phân tách bằng một chuỗi đường dẫn (/).
Trong sơ đồ, đầu tiên bạn có một gốc znodephân tách bằng “/”. Dưới gốc, bạn có hai không gian tên hợp lýconfig và workers.
Các config không gian tên được sử dụng để quản lý cấu hình tập trung và workers không gian tên được sử dụng để đặt tên.
Dưới configkhông gian tên, mỗi znode có thể lưu trữ tối đa 1MB dữ liệu. Điều này tương tự với hệ thống tệp UNIX ngoại trừ znode mẹ cũng có thể lưu trữ dữ liệu. Mục đích chính của cấu trúc này là lưu trữ dữ liệu được đồng bộ hóa và mô tả siêu dữ liệu của znode. Cấu trúc này được gọi làZooKeeper Data Model.
Mỗi znode trong mô hình dữ liệu ZooKeeper duy trì một statkết cấu. Một thống kê chỉ đơn giản là cung cấpmetadatacủa một znode. Nó bao gồm Số phiên bản, Danh sách kiểm soát hành động (ACL), Dấu thời gian và Độ dài dữ liệu.
Version number- Mỗi znode đều có số phiên bản, có nghĩa là mỗi khi dữ liệu liên quan đến znode thay đổi, số phiên bản tương ứng của nó cũng sẽ tăng lên. Việc sử dụng số phiên bản là quan trọng khi nhiều khách hàng quản lý vườn thú đang cố gắng thực hiện các hoạt động trên cùng một znode.
Action Control List (ACL)- ACL về cơ bản là một cơ chế xác thực để truy cập znode. Nó chi phối tất cả các hoạt động đọc và ghi của znode.
Timestamp- Dấu thời gian biểu thị thời gian trôi qua từ việc tạo và sửa đổi znode. Nó thường được biểu thị bằng mili giây. ZooKeeper xác định mọi thay đổi đối với znodes từ “ID giao dịch” (zxid).Zxid là duy nhất và duy trì thời gian cho mỗi giao dịch để bạn có thể dễ dàng xác định thời gian trôi qua từ yêu cầu này đến yêu cầu khác.
Data length- Tổng lượng dữ liệu được lưu trữ trong một znode là độ dài dữ liệu. Bạn có thể lưu trữ tối đa 1MB dữ liệu.
Các loại Znodes
Znodes được phân loại là bền bỉ, tuần tự và phù du.
Persistence znode- Znode tồn tại vẫn tồn tại ngay cả sau khi ứng dụng khách tạo ra znode cụ thể đó bị ngắt kết nối. Theo mặc định, tất cả các znodes là liên tục trừ khi được chỉ định khác.
Ephemeral znode- Các znodes phù du hoạt động cho đến khi khách hàng còn sống. Khi một ứng dụng khách bị ngắt kết nối khỏi nhóm ZooKeeper, thì các znodes tạm thời sẽ tự động bị xóa. Vì lý do này, chỉ những znodes phù du mới không được phép sinh thêm con. Nếu một znode tạm thời bị xóa, thì nút phù hợp tiếp theo sẽ lấp đầy vị trí của nó. Các znodes phù du đóng một vai trò quan trọng trong cuộc bầu cử Thủ lĩnh.
Sequential znode- Các znodes tuần tự có thể là dai dẳng hoặc phù du. Khi một znode mới được tạo dưới dạng znode tuần tự, thì ZooKeeper đặt đường dẫn của znode bằng cách gắn một số thứ tự gồm 10 chữ số vào tên ban đầu. Ví dụ: nếu một znode với đường dẫn/myapp được tạo dưới dạng znode tuần tự, ZooKeeper sẽ thay đổi đường dẫn thành /myapp0000000001và đặt số thứ tự tiếp theo là 0000000002. Nếu hai znode tuần tự được tạo đồng thời, thì ZooKeeper không bao giờ sử dụng cùng một số cho mỗi znode. Các znodes tuần tự đóng một vai trò quan trọng trong Khóa và Đồng bộ hóa.
Phiên
Phiên rất quan trọng đối với hoạt động của ZooKeeper. Các yêu cầu trong một phiên được thực hiện theo thứ tự FIFO. Sau khi máy khách kết nối với máy chủ, phiên sẽ được thiết lập vàsession id được chỉ định cho khách hàng.
Khách hàng gửi heartbeatstại một khoảng thời gian cụ thể để giữ phiên hợp lệ. Nếu nhóm ZooKeeper không nhận được nhịp tim từ máy khách trong hơn khoảng thời gian (thời gian chờ phiên) được chỉ định khi bắt đầu dịch vụ, nó quyết định rằng máy khách đã chết.
Thời gian chờ của phiên thường được biểu thị bằng mili giây. Khi một phiên kết thúc vì bất kỳ lý do gì, các znodes tạm thời được tạo trong phiên đó cũng sẽ bị xóa.
Xem
Đồng hồ là một cơ chế đơn giản để khách hàng nhận thông báo về những thay đổi trong nhóm ZooKeeper. Khách hàng có thể đặt đồng hồ trong khi đọc một znode cụ thể. Đồng hồ gửi thông báo đến khách hàng đã đăng ký về bất kỳ thay đổi nào của znode (mà khách hàng đăng ký).
Thay đổi znode là sửa đổi dữ liệu liên quan đến znode hoặc những thay đổi trong con của znode. Đồng hồ chỉ được kích hoạt một lần. Nếu khách hàng muốn nhận lại thông báo, nó phải được thực hiện thông qua một thao tác đọc khác. Khi một phiên kết nối hết hạn, máy khách sẽ bị ngắt kết nối khỏi máy chủ và các đồng hồ liên quan cũng bị xóa.