Zookeeper - ภาพรวม
ZooKeeper เป็นบริการประสานงานแบบกระจายเพื่อจัดการโฮสต์จำนวนมาก การประสานงานและการจัดการบริการในสภาพแวดล้อมแบบกระจายเป็นกระบวนการที่ซับซ้อน ZooKeeper แก้ปัญหานี้ด้วยสถาปัตยกรรมและ API ที่เรียบง่าย ZooKeeper ช่วยให้นักพัฒนาสามารถมุ่งเน้นไปที่ตรรกะของแอปพลิเคชันหลักโดยไม่ต้องกังวลเกี่ยวกับลักษณะการกระจายของแอปพลิเคชัน
เฟรมเวิร์ก ZooKeeper เดิมสร้างขึ้นที่“ Yahoo!” สำหรับการเข้าถึงแอปพลิเคชันในลักษณะที่ง่ายและมีประสิทธิภาพ ต่อมา Apache ZooKeeper ได้กลายเป็นมาตรฐานสำหรับบริการที่เป็นระบบซึ่งใช้โดย Hadoop, HBase และเฟรมเวิร์กแบบกระจายอื่น ๆ ตัวอย่างเช่น Apache HBase ใช้ ZooKeeper เพื่อติดตามสถานะของข้อมูลที่กระจาย
ก่อนที่จะดำเนินการต่อไปสิ่งสำคัญคือเราต้องรู้หนึ่งหรือสองอย่างเกี่ยวกับแอปพลิเคชันแบบกระจาย ดังนั้นให้เราเริ่มการสนทนาด้วยภาพรวมโดยย่อของแอปพลิเคชันแบบกระจาย
แอปพลิเคชันแบบกระจาย
แอปพลิเคชันแบบกระจายสามารถทำงานบนระบบหลายระบบในเครือข่ายในเวลาที่กำหนด (พร้อมกัน) โดยการประสานงานระหว่างกันเพื่อทำงานเฉพาะให้เสร็จอย่างรวดเร็วและมีประสิทธิภาพ โดยปกติงานที่ซับซ้อนและใช้เวลานานซึ่งจะใช้เวลาหลายชั่วโมงในการดำเนินการโดยแอปพลิเคชันที่ไม่กระจาย (ทำงานในระบบเดียว) สามารถทำได้ภายในไม่กี่นาทีโดยแอปพลิเคชันแบบกระจายโดยใช้ความสามารถในการคำนวณของระบบทั้งหมดที่เกี่ยวข้อง
เวลาในการทำงานให้เสร็จสมบูรณ์สามารถลดลงได้อีกโดยการกำหนดค่าแอปพลิเคชันแบบกระจายให้ทำงานบนระบบมากขึ้น กลุ่มของระบบที่แอปพลิเคชันแบบกระจายกำลังทำงานอยู่เรียกว่าไฟล์Cluster และแต่ละเครื่องที่ทำงานในคลัสเตอร์เรียกว่าไฟล์ Node.
แอปพลิเคชันแบบกระจายมีสองส่วน Server และ Clientใบสมัคร แอ็พพลิเคชันเซิร์ฟเวอร์มีการแจกจ่ายจริงและมีอินเทอร์เฟซทั่วไปเพื่อให้ไคลเอนต์สามารถเชื่อมต่อกับเซิร์ฟเวอร์ใดก็ได้ในคลัสเตอร์และได้รับผลลัพธ์เดียวกัน แอปพลิเคชันไคลเอนต์เป็นเครื่องมือในการโต้ตอบกับแอปพลิเคชันแบบกระจาย
ประโยชน์ของแอปพลิเคชันแบบกระจาย
Reliability - ความล้มเหลวของระบบเดียวหรือสองสามระบบไม่ได้ทำให้ทั้งระบบล้มเหลว
Scalability - ประสิทธิภาพสามารถเพิ่มขึ้นได้ตามต้องการโดยการเพิ่มเครื่องจักรให้มากขึ้นโดยมีการเปลี่ยนแปลงเล็กน้อยในการกำหนดค่าแอปพลิเคชันโดยไม่มีเวลาหยุดทำงาน
Transparency - ซ่อนความซับซ้อนของระบบและแสดงตัวเองเป็นเอนทิตี / แอปพลิเคชันเดียว
ความท้าทายของแอปพลิเคชันแบบกระจาย
Race condition- เครื่องจักรสองเครื่องขึ้นไปพยายามทำงานเฉพาะซึ่งจำเป็นต้องทำเพียงเครื่องเดียวในเวลาใดเวลาหนึ่ง ตัวอย่างเช่นทรัพยากรที่ใช้ร่วมกันควรได้รับการแก้ไขโดยเครื่องเดียวในช่วงเวลาใดเวลาหนึ่ง
Deadlock - การดำเนินการสองอย่างขึ้นไปรอให้กันและกันเสร็จสิ้นโดยไม่มีกำหนด
Inconsistency - ความล้มเหลวบางส่วนของข้อมูล
Apache ZooKeeper หมายถึงอะไร?
Apache ZooKeeper เป็นบริการที่ใช้โดยคลัสเตอร์ (กลุ่มของโหนด) เพื่อประสานงานระหว่างกันเองและรักษาข้อมูลที่แชร์ด้วยเทคนิคการซิงโครไนซ์ที่มีประสิทธิภาพ ZooKeeper เป็นแอปพลิเคชันแบบกระจายที่ให้บริการสำหรับการเขียนแอปพลิเคชันแบบกระจาย
บริการทั่วไปของ ZooKeeper มีดังต่อไปนี้ -
Naming service- การระบุโหนดในคลัสเตอร์ตามชื่อ คล้ายกับ DNS แต่สำหรับโหนด
Configuration management - ข้อมูลการกำหนดค่าล่าสุดและเป็นปัจจุบันของระบบสำหรับโหนดการเชื่อมต่อ
Cluster management - การเข้าร่วม / ออกจากโหนดในคลัสเตอร์และสถานะโหนดตามเวลาจริง
Leader election - การเลือกโหนดเป็นผู้นำเพื่อวัตถุประสงค์ในการประสานงาน
Locking and synchronization service- การล็อคข้อมูลในขณะที่แก้ไข กลไกนี้ช่วยคุณในการกู้คืนความล้มเหลวโดยอัตโนมัติในขณะที่เชื่อมต่อแอปพลิเคชันอื่น ๆ ที่แจกจ่ายเช่น Apache HBase
Highly reliable data registry - ความพร้อมใช้งานของข้อมูลแม้ว่าโหนดหนึ่งหรือสองโหนดจะหยุดทำงาน
แอปพลิเคชันแบบกระจายให้ประโยชน์มากมาย แต่ก็มีความท้าทายที่ซับซ้อนและยากต่อการแตกเช่นกัน กรอบ ZooKeeper เป็นกลไกที่สมบูรณ์เพื่อเอาชนะความท้าทายทั้งหมด สภาพการแข่งขันและการหยุดชะงักถูกจัดการโดยใช้fail-safe synchronization approach. ข้อเสียเปรียบหลักอีกประการหนึ่งคือความไม่สอดคล้องกันของข้อมูลซึ่ง ZooKeeper แก้ไขได้atomicity.
ประโยชน์ของ ZooKeeper
นี่คือประโยชน์ของการใช้ ZooKeeper -
Simple distributed coordination process
Synchronization- การกีดกันซึ่งกันและกันและความร่วมมือระหว่างกระบวนการเซิร์ฟเวอร์ กระบวนการนี้ช่วยใน Apache HBase สำหรับการจัดการการกำหนดค่า
Ordered Messages
Serialization- เข้ารหัสข้อมูลตามกฎเฉพาะ ตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณทำงานอย่างสม่ำเสมอ วิธีนี้สามารถใช้ใน MapReduce เพื่อประสานคิวเพื่อรันเธรดที่รันอยู่
Reliability
Atomicity - การถ่ายโอนข้อมูลประสบความสำเร็จหรือล้มเหลวอย่างสมบูรณ์ แต่ไม่มีการทำธุรกรรมบางส่วน