บทช่วยสอนการใช้งาน Apache ZooKeeper

⚡ สรุปอย่างชาญฉลาด

คู่มือการใช้งาน Apache ZooKeeper จะแนะนำบริการส่วนกลางสำหรับการกำหนดค่า การตั้งชื่อ การซิงโครไนซ์ และบริการกลุ่มในระบบแบบกระจาย Lessเนื้อหาครอบคลุมถึงสถาปัตยกรรม โมเดลข้อมูล การตรวจสอบ การรวมกลุ่ม การใช้งาน ข้อดี และข้อเสีย

  • 🏛️ บริการประสานงาน: ZooKeeper ทำหน้าที่เป็นโครงสร้างพื้นฐานที่เชื่อถือได้สำหรับการประสานงานและการสร้างฉันทามติของแอปพลิเคชันแบบกระจายศูนย์
  • 🗂️ โครงสร้าง ZNode: ข้อมูลจะถูกจัดเก็บไว้ในพื้นที่ชื่อแบบลำดับชั้นของ ZNodes ซึ่งมีลักษณะคล้ายกับระบบไฟล์
  • 👀 นาฬิกา: ไคลเอ็นต์สมัครรับข้อมูลจากเหตุการณ์ของ ZNode เพื่อรับการแจ้งเตือนเมื่อข้อมูลเปลี่ยนแปลงหรือมีโหนดลูกปรากฏขึ้น
  • 🧩 วงดุริยางค์: การใช้เซิร์ฟเวอร์จำนวนคี่เป็นกลุ่มจะช่วยเพิ่มความทนทานต่อความผิดพลาดและการเขียนข้อมูลตามเสียงข้างมาก
  • ใช้กรณี: การเลือกตั้งผู้นำอำนาจ, ระบบล็อกแบบกระจาย, การค้นหาบริการ และการจัดการการกำหนดค่า
  • 🤖 AI Cluster ช่วยเหลือ: ผู้ช่วย AI อธิบายโหมดความล้มเหลวของ ZooKeeper และสร้างการตั้งค่าแบบกลุ่มที่เหมาะสมกับ Kubernetes

บทช่วยสอน ZooKeeper

ระบบแบบกระจายคืออะไร?

แอปพลิเคชันแบบกระจายคือแอปพลิเคชันที่สามารถทำงานบนระบบหลายระบบในเครือข่ายได้ โดยจะทำงานพร้อมกันโดยประสานงานกันเองเพื่อทำงานบางอย่างให้เสร็จสมบูรณ์ แอปพลิเคชันที่ไม่ได้กระจายอาจใช้เวลาหลายชั่วโมงในการทำงานให้เสร็จสมบูรณ์

Zookeeper คืออะไร?

ผู้ดูแลสวนสัตว์อาปาเช่ เป็นบริการประสานงานแบบโอเพ่นซอร์สแบบกระจายที่ช่วยในการจัดการโฮสต์ชุดใหญ่ การจัดการและการประสานงานในสภาพแวดล้อมแบบกระจายเป็นเรื่องยาก Zookeeper ดำเนินกระบวนการนี้โดยอัตโนมัติ และช่วยให้นักพัฒนามุ่งเน้นไปที่การสร้างคุณสมบัติของซอฟต์แวร์ แทนที่จะกังวลกับลักษณะการกระจายตัวของซอฟต์แวร์

Zookeeper ช่วยให้คุณสามารถจัดการข้อมูลการกำหนดค่า การตั้งชื่อ และบริการกลุ่มสำหรับแอปพลิเคชันแบบกระจาย โดยจะนำโปรโตคอลต่างๆ มาใช้กับคลัสเตอร์เพื่อให้แอปพลิเคชันไม่ต้องทำงานตามลำพัง นอกจากนี้ยังให้มุมมองเดียวที่สอดคล้องกันสำหรับเครื่องต่างๆ หลายเครื่องอีกด้วย

ทำไมต้อง Apache Zookeeper?

นี่คือเหตุผลสำคัญเบื้องหลังความนิยมของ Zookeeper:

  • ช่วยให้สามารถแยกและร่วมมือกันระหว่างกระบวนการเซิร์ฟเวอร์ได้
  • ช่วยให้มั่นใจได้ว่าแอปพลิเคชันของคุณทำงานอย่างสม่ำเสมอ
  • กระบวนการทำธุรกรรมจะไม่เสร็จสิ้นเพียงบางส่วน โดยจะมีสถานะเป็นสำเร็จหรือล้มเหลว สถานะแบบกระจายสามารถคงอยู่ได้ แต่ก็ไม่เคยผิด
  • ไม่ว่าเซิร์ฟเวอร์จะเชื่อมต่อด้วยใดก็ตาม ลูกค้าจะสามารถเห็นมุมมองการบริการเดียวกันได้
  • ช่วยให้คุณเข้ารหัสข้อมูลตามกฎชุดเฉพาะ
  • มันช่วยรักษาเนมสเปซลำดับชั้นมาตรฐานที่คล้ายกับไฟล์และไดเร็กทอรี
  • คอมพิวเตอร์ที่ทำงานเป็นระบบเดียวซึ่งสามารถเชื่อมต่อภายในหรือทางภูมิศาสตร์ได้
  • ช่วยให้สามารถเข้าร่วม/ออกจากโหนดในคลัสเตอร์และสถานะโหนดได้แบบเรียลไทม์
  • คุณสามารถเพิ่มประสิทธิภาพได้โดยการปรับใช้เครื่องจักรมากขึ้น
  • ช่วยให้คุณสามารถเลือกโหนดเป็นผู้นำเพื่อการประสานงานที่ดีขึ้น
  • ZooKeeper ทำงานได้อย่างรวดเร็วกับปริมาณงานที่การอ่านข้อมูลเป็นเรื่องธรรมดามากกว่าการเขียน

ZooKeeper Archiเทคเจอร์: มันทำงานอย่างไร?

นี่คือคำอธิบายสั้น ๆ เกี่ยวกับ อาปาเช่ สถาปัตยกรรมผู้ดูแลสวนสัตว์:

  • Zookeeper ติดตามไคลเอนต์เซิร์ฟเวอร์ Archiเทคเจอร์
  • ทุกระบบจัดเก็บสำเนาของข้อมูล
  • ผู้นำจะได้รับเลือกเมื่อเริ่มต้น
Archiเทคเจอร์ของ ZooKeeper
Archiเทคเจอร์ของ ZooKeeper

เซิร์ฟเวอร์: เซิร์ฟเวอร์จะส่งการตอบรับเมื่อไคลเอนต์ใด ๆ เชื่อมต่อ ในกรณีที่ไม่มีการตอบกลับจากเซิร์ฟเวอร์ที่เชื่อมต่อ ไคลเอนต์จะเปลี่ยนเส้นทางข้อความไปยังเซิร์ฟเวอร์อื่นโดยอัตโนมัติ

ไคลเอนต์:ไคลเอนต์คือโหนดหนึ่งในคลัสเตอร์แอปพลิเคชันแบบกระจาย ช่วยให้คุณสามารถเข้าถึงข้อมูลจากเซิร์ฟเวอร์ได้ ไคลเอนต์แต่ละตัวจะส่งข้อความไปยังเซิร์ฟเวอร์เป็นระยะ ๆ เพื่อช่วยให้เซิร์ฟเวอร์ทราบว่าไคลเอนต์กำลังทำงานอยู่

หัวหน้า: หนึ่งในเซิร์ฟเวอร์ถูกกำหนดให้เป็นผู้นำ ให้ข้อมูลทั้งหมดแก่ลูกค้ารวมถึงการรับทราบว่าเซิร์ฟเวอร์ยังมีชีวิตอยู่ มันจะดำเนินการกู้คืนอัตโนมัติหากโหนดที่เชื่อมต่อใด ๆ ล้มเหลว

ผู้ติดตาม: โหนดเซิร์ฟเวอร์ซึ่งปฏิบัติตามคำสั่งของผู้นำเรียกว่าผู้ติดตาม

  • คำขออ่านไคลเอ็นต์ได้รับการจัดการโดยเซิร์ฟเวอร์ Zookeeper ที่เชื่อมต่อตามลำดับ
  • คำขอการเขียนของลูกค้าได้รับการจัดการโดยผู้นำ Zookeeper

วงดนตรี/Cluster: กลุ่มเซิร์ฟเวอร์ Zookeeper ซึ่งเรียกว่า ensemble หรือ a Clusterคุณสามารถใช้โครงสร้างพื้นฐาน ZooKeeper ในโหมดคลัสเตอร์เพื่อให้ระบบมีค่าที่เหมาะสมที่สุดเมื่อคุณกำลังเรียกใช้ Apache

ZooKeeper WebUI: หากคุณต้องการทำงานกับการจัดการทรัพยากร ZooKeeper คุณต้องใช้ WebUI- ช่วยให้สามารถทำงานร่วมกับ ZooKeeper โดยใช้อินเทอร์เฟซผู้ใช้แบบเว็บ แทนที่จะใช้บรรทัดคำสั่ง ให้การสื่อสารที่รวดเร็วและมีประสิทธิภาพด้วยแอปพลิเคชัน ZooKeeper

โมเดลข้อมูลผู้ดูแลสัตว์ (ZDM)

ในบทช่วยสอน ZooKeeper นี้ เราจะมาเรียนรู้เกี่ยวกับ Zookeeper Data Model กัน รูปด้านล่างอธิบายโมเดลข้อมูล Apache Zookeeper:

แบบจำลองข้อมูลผู้ดูแลสัตว์
แบบจำลองข้อมูลผู้ดูแลสัตว์
  • โมเดลข้อมูลผู้ดูแลสวนสัตว์ปฏิบัติตามเนมสเปซแบบลำดับชั้น โดยแต่ละโหนดเรียกว่า ZNode โหนดคือระบบที่คลัสเตอร์ทำงาน
  • ZNode ทุกตัวมีข้อมูล อาจมีหรือไม่มีลูกก็ได้
  • เส้นทาง ZNode:
    • Canonical คั่นด้วยเครื่องหมายทับ และแบบสัมบูรณ์
    • ไม่ใช้การอ้างอิงที่เกี่ยวข้องใดๆ
    • ชื่ออาจมีอักขระ Unicode
  • ZNode รักษาโครงสร้างสถิติและหมายเลขเวอร์ชันสำหรับการเปลี่ยนแปลงข้อมูล

ประเภทของ Zookeeper Nodes

Znodes มีสามประเภท:

การติดตา znode: znode ประเภทนี้ยังมีชีวิตอยู่แม้ว่าไคลเอ็นต์ที่สร้าง znode เฉพาะนั้นจะถูกตัดการเชื่อมต่อก็ตาม ตามค่าเริ่มต้น ในผู้ดูแลสวนสัตว์ โหนดทั้งหมดจะคงอยู่หากไม่ได้ระบุไว้

ชั่วคราว znode: znode ผู้ดูแลสวนสัตว์ประเภทนี้จะมีชีวิตอยู่จนกว่าไคลเอนต์จะมีชีวิตอยู่ ดังนั้น เมื่อไคลเอนต์ได้รับการตัดการเชื่อมต่อจากผู้ดูแลสัตว์ มันก็จะถูกลบไปด้วย นอกจากนี้ โหนดชั่วคราวไม่ได้รับอนุญาตให้มีลูก

เนื่อง znode: znodes ตามลำดับอาจเป็นแบบชั่วคราวหรือถาวรก็ได้ ดังนั้นเมื่อมีการสร้าง znode ใหม่เป็น znode ตามลำดับ คุณสามารถกำหนดเส้นทางของ znode ได้โดยการแนบหมายเลขลำดับ 10 หลักเข้ากับชื่อเดิม

ZDM- นาฬิกา

Zookeeper เป็นเหตุการณ์เฝ้าดูแบบครั้งเดียวที่ส่งไปยังไคลเอนต์ที่ตั้งค่าเฝ้าดู เหตุการณ์นี้เกิดขึ้นเมื่อข้อมูลจากการเฝ้าดูนั้นเปลี่ยนแปลง ZDM watch ช่วยให้ไคลเอนต์ได้รับการแจ้งเตือนเมื่อ znode เปลี่ยนแปลง การดำเนินการอ่าน ZDM เช่น getData(), getChidleren() มีตัวเลือกในการตั้งค่าเฝ้าดู

มีการเรียงลำดับนาฬิกา ลำดับของเหตุการณ์การดูจะสอดคล้องกับลำดับการอัพเดต ลูกค้าจะสามารถดูเหตุการณ์การดูสำหรับ znode ก่อนที่จะเห็นข้อมูลใหม่ที่สอดคล้องกับ znode นั้น

ZDM- รายการควบคุมการเข้าถึง

Zookeeper ใช้ ACL เพื่อควบคุมการเข้าถึง znodes ACL ประกอบด้วยคู่ของ (Scheme: id, สิทธิ์)

สร้างในรูปแบบ ACL:

world: มีไอดีเดียวใครก็ได้

รับรองความถูกต้อง: ไม่ใช้รหัสใด ๆ มันแสดงถึงผู้ใช้ที่ผ่านการรับรองความถูกต้อง

ย่อย: ใช้ชื่อผู้ใช้: รหัสผ่าน

โฮสต์: อนุญาตให้คุณใช้ชื่อโฮสต์ของลูกค้าเป็นข้อมูลประจำตัว ACL id

IP: ใช้ที่อยู่ IP ของโฮสต์ไคลเอ็นต์เป็นข้อมูลประจำตัว ACL id

สิทธิ์ ACL:

  • สร้าง
  • อ่าน
  • เขียน
  • ลบ
  • ADMIN

เช่น (IP: 192.168.0.0/16, อ่าน)

ZKS – สถานะเซสชันและอายุการใช้งาน

ZKS – สถานะเซสชัน
ZKS – สถานะเซสชัน
  • ก่อนที่จะดำเนินการตามคำขอใดๆ สิ่งสำคัญคือลูกค้าต้องสร้างเซสชันกับบริการ
  • ไคลเอนต์การดำเนินการทั้งหมดที่ส่งไปยังบริการจะเชื่อมโยงกับเซสชันโดยอัตโนมัติ
  • ไคลเอนต์สามารถเชื่อมต่อกับเซิร์ฟเวอร์ใดก็ได้ในคลัสเตอร์ แต่จะเชื่อมต่อกับเซิร์ฟเวอร์เพียงตัวเดียวเท่านั้น
  • เซสชั่นให้ "การรับประกันคำสั่งซื้อ" คำขอในเซสชันจะดำเนินการตามลำดับ FIFO
  • สถานะหลักของเซสชันคือ 1) กำลังเชื่อมต่อ 2) เชื่อมต่อแล้ว 3) ปิด 4) ไม่ได้เชื่อมต่อ

วิธีการติดตั้ง ZooKeeper.mq4

ขั้นตอน 1) คลิกที่ดำเนินการต่อเพื่อสมัครสมาชิก
ไปที่นี้ ลิงค์ และคลิก 'สมัครสมาชิกต่อ'

ติดตั้ง ZooKeeper

ขั้นตอน 2) ยอมรับข้อกำหนดและเงื่อนไข
ในหน้าถัดไป ยอมรับข้อตกลงใบอนุญาต

ติดตั้ง ZooKeeper

ขั้นตอน 3) ขอบคุณข้อความที่แสดง
คุณจะเห็นข้อความต่อไปนี้

ติดตั้ง ZooKeeper

ขั้นตอน 4) คลิกที่ดำเนินการต่อเพื่อกำหนดค่า
รีเฟรชหน้าหลังจากผ่านไป 5 นาทีและดำเนินการกำหนดค่า

ติดตั้ง ZooKeeper

ขั้นตอน 5) คลิกที่ 'ดำเนินการต่อเพื่อเปิดตัว'
ในหน้าจอถัดไป เปิด ZooKeeper

ติดตั้ง ZooKeeper

ขั้นตอน 6) ขอแสดงความยินดี
คุณทำเสร็จแล้ว!

แอปพลิเคชัน Apache ZooKeeper

Apache Zookeeper ใช้เพื่อวัตถุประสงค์ต่อไปนี้:

  • การจัดการการกำหนดค่า
  • บริการตั้งชื่อ
  • การเลือกผู้นำ
  • การจัดคิวข้อความ
  • การจัดการระบบการแจ้งเตือน
  • Syncการทำให้เป็นพงศาวดาร
  • กระจาย Cluster การจัดการ

บริษัทที่ใช้ Zookeeper

  • yahoo
  • Facebook
  • อีเบย์
  • X
  • Netflix
  • Zynga
  • Nutanix

ข้อเสียของการใช้ Zookeeper

  • ข้อมูลสูญหายอาจเกิดขึ้นได้หากคุณเพิ่มเซิร์ฟเวอร์ Zookeeper ใหม่
  • ไม่อนุญาตให้มีการโยกย้ายสำหรับผู้ใช้
  • ไม่ให้การสนับสนุนสำหรับการวางตำแหน่งและการรับรู้ของชั้นวาง
  • Zookeeper ไม่อนุญาตให้คุณลดจำนวนพ็อดเพื่อป้องกันข้อมูลสูญหายโดยไม่ตั้งใจ
  • คุณไม่สามารถสลับบริการไปยังเครือข่ายโฮสต์ได้หากไม่ได้ติดตั้งใหม่ทั้งหมดเมื่อบริการถูกปรับใช้บนเครือข่ายเสมือน
  • บริการไม่รองรับการเปลี่ยนแปลงข้อกำหนดด้านปริมาณเมื่อการใช้งานครั้งแรกสิ้นสุดลง
  • มีจำนวนโหนดที่เกี่ยวข้องจำนวนมาก ดังนั้นอาจมีจุดล้มเหลวมากกว่าหนึ่งจุด
  • ข้อความอาจสูญหายได้ในเครือข่ายการสื่อสาร ซึ่งต้องใช้ซอฟต์แวร์พิเศษในการกู้คืนอีกครั้ง

คำถามที่พบบ่อย

ZooKeeper ทำหน้าที่ประสานงานแอปพลิเคชันแบบกระจายศูนย์ โดยให้บริการด้านการกำหนดค่า การตั้งชื่อ การซิงโครไนซ์ และการเลือกผู้นำที่สม่ำเสมอ ช่วยลดภาระในการสร้างองค์ประกอบพื้นฐานเหล่านี้ขึ้นมาใหม่ในแต่ละระบบ

เครื่องมือ AI สร้างการกำหนดค่า ZooKeeper แนะนำขนาดของคลัสเตอร์ และวิเคราะห์เมตริก ruok และ mntr นอกจากนี้ยังระบุความเสี่ยงของปัญหา split-brain และเสนอสคริปต์ตรวจสอบสถานะสำหรับคลัสเตอร์ที่ใช้งานจริง

ใช่แล้ว ผู้ช่วย AI จะวิเคราะห์บันทึก zookeeper.out ตรวจจับรูปแบบการสูญเสียโควรัม และแนะนำการปรับแต่งเวลาหมดอายุของเซสชัน นอกจากนี้ยังร่างคู่มือสำหรับการเริ่มต้นใหม่แบบค่อยเป็นค่อยไปและการกู้คืนสแนปช็อตอีกด้วย

กลุ่มเซิร์ฟเวอร์ ZooKeeper ที่ทำงานร่วมกันเรียกว่า "กลุ่มเซิร์ฟเวอร์" (ensemble) การเขียนข้อมูลต้องอาศัยเสียงข้างมากจากเซิร์ฟเวอร์ส่วนใหญ่ ดังนั้นการตั้งค่าใช้งานจริงส่วนใหญ่จึงใช้จำนวนเซิร์ฟเวอร์เป็นเลขคี่ เช่น สาม ห้า หรือเจ็ดเครื่อง

ZNode คือโหนดในเนมสเปซ ZooKeeper ที่เก็บข้อมูลและเมตาเดต้าจำนวนเล็กน้อย ZNode สามารถเป็นแบบถาวร ชั่วคราว หรือแบบเรียงลำดับได้ ซึ่งช่วยให้สามารถล็อกและกำหนดรูปแบบการเลือกผู้นำได้

Kafka 4.0 และโหมด KRaft ได้ยกเลิกการใช้ ZooKeeper และแทนที่ด้วยกลุ่มควบคุมภายในที่ใช้ Raft การติดตั้งใช้งานใหม่จะใช้ KRaft ในขณะที่คลัสเตอร์เก่าสามารถใช้งาน ZooKeeper ต่อไปได้อย่างปลอดภัย

ZooKeeper รองรับการตรวจสอบสิทธิ์แบบ SASL, Kerberos, การรับส่งข้อมูล TLS และการอนุญาตแบบ ACL เปิดใช้งานคุณสมบัติเหล่านี้และแบ่งกลุ่มเซิร์ฟเวอร์ตามผู้เช่าแต่ละรายเพื่อรักษาความเป็นส่วนตัวในสภาพแวดล้อมแบบใช้ร่วมกัน

ผู้เริ่มต้นสามารถเรียนรู้โมเดลข้อมูลและ CLI ได้ภายในหนึ่งสัปดาห์ Operaการติดตั้งระบบเซิร์ฟเวอร์สำหรับใช้งานจริงพร้อมฟังก์ชันสแนปช็อต การตรวจสอบ และ Kerberos โดยทั่วไปแล้วต้องใช้ประสบการณ์จริงประมาณหนึ่งถึงสามเดือน

สรุปโพสต์นี้ด้วย: