Zookeeper - Quy trình làm việc
Khi nhóm ZooKeeper bắt đầu, nó sẽ đợi các máy khách kết nối. Khách hàng sẽ kết nối với một trong các nút trong nhóm ZooKeeper. Nó có thể là một nhà lãnh đạo hoặc một nút theo dõi. Sau khi một máy khách được kết nối, nút sẽ gán một ID phiên cho máy khách cụ thể và gửi xác nhận cho máy khách. Nếu máy khách không nhận được xác nhận, nó chỉ cần cố gắng kết nối một nút khác trong nhóm ZooKeeper. Sau khi kết nối với một nút, máy khách sẽ gửi nhịp tim đến nút đó trong một khoảng thời gian đều đặn để đảm bảo rằng kết nối không bị mất.
If a client wants to read a particular znode, nó gửi một read requestđến nút có đường dẫn znode và nút trả về znode được yêu cầu bằng cách lấy nó từ cơ sở dữ liệu của chính nó. Vì lý do này, các lần đọc diễn ra nhanh chóng trong nhóm ZooKeeper.
If a client wants to store data in the ZooKeeper ensemble, nó sẽ gửi đường dẫn znode và dữ liệu đến máy chủ. Máy chủ được kết nối sẽ chuyển yêu cầu đến người lãnh đạo và sau đó người lãnh đạo sẽ gửi lại yêu cầu bằng văn bản cho tất cả những người theo dõi. Nếu chỉ đa số các nút phản hồi thành công, thì yêu cầu ghi sẽ thành công và mã trả về thành công sẽ được gửi đến máy khách. Nếu không, yêu cầu ghi sẽ không thành công. Phần lớn các nút được gọi làQuorum.
Các nút trong ZooKeeper Ensemble
Hãy để chúng tôi phân tích tác động của việc có số lượng nút khác nhau trong nhóm ZooKeeper.
Nếu chúng ta có a single node, thì tập hợp ZooKeeper không thành công khi nút đó bị lỗi. Nó góp phần vào “Điểm lỗi duy nhất” và nó không được khuyến khích trong môi trường sản xuất.
Nếu chúng ta có two nodes và một nút không thành công, chúng tôi cũng không có đa số, vì một trong hai không phải là đa số.
Nếu chúng ta có three nodesvà một nút bị lỗi, chúng tôi có đa số và vì vậy, đó là yêu cầu tối thiểu. Bắt buộc đối với một nhóm ZooKeeper phải có ít nhất ba nút trong môi trường sản xuất trực tiếp.
Nếu chúng ta có four nodesvà hai nút bị lỗi, nó lại bị lỗi và tương tự như có ba nút. Nút phụ không phục vụ bất kỳ mục đích nào và vì vậy, tốt hơn là bạn nên thêm các nút theo số lẻ, ví dụ: 3, 5, 7.
Chúng tôi biết rằng quá trình ghi đắt hơn quá trình đọc trong tập hợp ZooKeeper, vì tất cả các nút cần phải ghi cùng một dữ liệu trong cơ sở dữ liệu của nó. Vì vậy, tốt hơn là có số lượng nút ít hơn (3, 5 hoặc 7) hơn là có một số lượng lớn các nút cho một môi trường cân bằng.
Sơ đồ sau mô tả ZooKeeper WorkFlow và bảng tiếp theo giải thích các thành phần khác nhau của nó.
Thành phần | Sự miêu tả |
---|---|
Viết | Quá trình ghi được xử lý bởi nút lãnh đạo. Người lãnh đạo chuyển tiếp yêu cầu viết tới tất cả các znodes và đợi câu trả lời từ các znodes. Nếu một nửa số znodes trả lời, thì quá trình ghi đã hoàn tất. |
Đọc | Việc đọc được thực hiện bên trong bởi một znode được kết nối cụ thể, vì vậy không cần phải tương tác với cụm. |
Cơ sở dữ liệu nhân bản | Nó được sử dụng để lưu trữ dữ liệu trong Zookeeper. Mỗi znode có cơ sở dữ liệu riêng và mọi znode đều có cùng dữ liệu tại mọi thời điểm với sự trợ giúp của tính nhất quán. |
Thủ lĩnh | Leader là Znode chịu trách nhiệm xử lý các yêu cầu ghi. |
Người theo dõi | Người theo dõi nhận được yêu cầu viết từ khách hàng và chuyển tiếp chúng đến znode trưởng. |
Bộ xử lý yêu cầu | Chỉ hiển thị trong nút lãnh đạo. Nó điều chỉnh các yêu cầu ghi từ nút theo dõi. |
Chương trình phát sóng nguyên tử | Chịu trách nhiệm phát các thay đổi từ nút dẫn đầu đến các nút theo dõi. |