Zookeeper - เวิร์กโฟลว์
เมื่อวง ZooKeeper เริ่มขึ้นมันจะรอให้ลูกค้าเชื่อมต่อ ลูกค้าจะเชื่อมต่อกับโหนดใดโหนดหนึ่งในชุด ZooKeeper อาจเป็นผู้นำหรือโหนดผู้ติดตาม เมื่อเชื่อมต่อไคลเอนต์แล้วโหนดจะกำหนดรหัสเซสชันให้กับไคลเอ็นต์เฉพาะและส่งการตอบรับไปยังไคลเอนต์ หากไคลเอนต์ไม่ได้รับการตอบรับก็เพียงแค่พยายามเชื่อมต่อโหนดอื่นในชุด ZooKeeper เมื่อเชื่อมต่อกับโหนดแล้วไคลเอ็นต์จะส่ง heartbeats ไปยังโหนดในช่วงเวลาปกติเพื่อให้แน่ใจว่าการเชื่อมต่อจะไม่ขาดหายไป
If a client wants to read a particular znode, มันส่งไฟล์ read requestไปยังโหนดที่มีพา ธ znode และโหนดจะส่งคืน znode ที่ร้องขอโดยรับจากฐานข้อมูลของตัวเอง ด้วยเหตุนี้การอ่านจึงรวดเร็วในวง ZooKeeper
If a client wants to store data in the ZooKeeper ensembleจะส่งเส้นทาง znode และข้อมูลไปยังเซิร์ฟเวอร์ เซิร์ฟเวอร์ที่เชื่อมต่อจะส่งต่อคำขอไปยังหัวหน้าและจากนั้นผู้นำจะออกคำขอเขียนใหม่ให้กับผู้ติดตามทั้งหมด หากมีเพียงโหนดส่วนใหญ่เท่านั้นที่ตอบสนองได้สำเร็จคำขอเขียนจะประสบความสำเร็จและจะส่งรหัสส่งคืนที่สำเร็จไปยังไคลเอนต์ มิฉะนั้นคำขอเขียนจะล้มเหลว โหนดส่วนใหญ่ที่เข้มงวดเรียกว่าเป็นQuorum.
โหนดใน ZooKeeper Ensemble
ให้เราวิเคราะห์ผลของการมีจำนวนโหนดที่แตกต่างกันในชุด ZooKeeper
ถ้าเรามี a single nodeจากนั้นชุด ZooKeeper จะล้มเหลวเมื่อโหนดนั้นล้มเหลว มันก่อให้เกิด "จุดเดียวของความล้มเหลว" และไม่แนะนำให้ใช้ในสภาพแวดล้อมการผลิต
ถ้าเรามี two nodes และโหนดหนึ่งล้มเหลวเราก็ไม่มีส่วนใหญ่เช่นกันเนื่องจากหนึ่งในสองไม่ใช่ส่วนใหญ่
ถ้าเรามี three nodesและโหนดหนึ่งล้มเหลวเรามีส่วนใหญ่ดังนั้นจึงเป็นข้อกำหนดขั้นต่ำ จำเป็นสำหรับชุด ZooKeeper ที่จะต้องมีโหนดอย่างน้อยสามโหนดในสภาพแวดล้อมการผลิตจริง
ถ้าเรามี four nodesและสองโหนดล้มเหลวมันล้มเหลวอีกครั้งและคล้ายกับว่ามีสามโหนด โหนดพิเศษไม่ได้ตอบสนองวัตถุประสงค์ใด ๆ ดังนั้นจึงเป็นการดีกว่าที่จะเพิ่มโหนดเป็นจำนวนคี่เช่น 3, 5, 7
เราทราบดีว่ากระบวนการเขียนมีราคาแพงกว่ากระบวนการอ่านใน ZooKeeper ทั้งมวลเนื่องจากโหนดทั้งหมดจำเป็นต้องเขียนข้อมูลเดียวกันในฐานข้อมูล ดังนั้นจึงควรมีจำนวนโหนด (3, 5 หรือ 7) น้อยกว่าการมีโหนดจำนวนมากสำหรับสภาพแวดล้อมที่สมดุล
แผนภาพต่อไปนี้แสดงให้เห็นถึง ZooKeeper WorkFlow และตารางต่อมาจะอธิบายส่วนประกอบต่างๆ
ส่วนประกอบ | คำอธิบาย |
---|---|
เขียน | กระบวนการเขียนถูกจัดการโดยโหนดผู้นำ ผู้นำส่งต่อคำขอเขียนไปยัง znodes ทั้งหมดและรอคำตอบจาก znodes หากครึ่งหนึ่งของ znodes ตอบกลับแสดงว่ากระบวนการเขียนเสร็จสมบูรณ์ |
อ่าน | การอ่านจะดำเนินการภายในโดย znode ที่เชื่อมต่อเฉพาะดังนั้นจึงไม่จำเป็นต้องโต้ตอบกับคลัสเตอร์ |
ฐานข้อมูลจำลอง | ใช้ในการจัดเก็บข้อมูลใน Zookeeper znode แต่ละตัวมีฐานข้อมูลของตัวเองและ znode ทุกตัวจะมีข้อมูลเหมือนกันทุกครั้งด้วยความสม่ำเสมอ |
หัวหน้า | Leader คือ Znode ที่รับผิดชอบในการประมวลผลคำขอเขียน |
ผู้ติดตาม | ผู้ติดตามได้รับคำขอเขียนจากลูกค้าและส่งต่อไปยังผู้นำ znode |
ร้องขอโปรเซสเซอร์ | นำเสนอเฉพาะในโหนดผู้นำ ควบคุมการร้องขอการเขียนจากโหนดผู้ติดตาม |
การออกอากาศของอะตอม | รับผิดชอบในการถ่ายทอดการเปลี่ยนแปลงจากโหนดผู้นำไปยังโหนดผู้ติดตาม |