การเปิดตัว rqlite 7.0 ซึ่งเป็น DBMS ที่ทนต่อข้อผิดพลาดแบบกระจายบนพื้นฐาน SQLite

การเปิดตัว DBMS rqlite 7.0 แบบกระจายเกิดขึ้นซึ่งใช้ SQLite เป็นเครื่องมือจัดเก็บข้อมูลและช่วยให้คุณสามารถจัดระเบียบการทำงานของคลัสเตอร์จากที่เก็บข้อมูลที่ซิงโครไนซ์ระหว่างกัน หนึ่งในคุณสมบัติของ rqlite คือความง่ายในการติดตั้ง การใช้งาน และการบำรุงรักษาพื้นที่จัดเก็บข้อมูลที่ทนต่อข้อผิดพลาดแบบกระจาย ซึ่งค่อนข้างคล้ายกับ etcd และ Consul แต่ใช้แบบจำลองข้อมูลเชิงสัมพันธ์แทนรูปแบบคีย์/ค่า รหัสโครงการเขียนด้วยภาษา Go และเผยแพร่ภายใต้ใบอนุญาต MIT

เพื่อให้โหนดทั้งหมดอยู่ในสถานะซิงโครไนซ์ จึงมีการใช้อัลกอริธึมฉันทามติ Raft Rqlite ใช้ไลบรารี SQLite ดั้งเดิมและไดรเวอร์ go-sqlite3 นอกเหนือจากนั้นยังมีเลเยอร์ที่เปิดตัวซึ่งประมวลผลคำขอของไคลเอ็นต์ ดำเนินการจำลองแบบไปยังโหนดอื่น และติดตามความสำเร็จของความเห็นพ้องต้องกันในการเลือกโหนดชั้นนำ

การเปลี่ยนแปลงฐานข้อมูลสามารถทำได้โดยโหนดที่เลือกเป็นผู้นำเท่านั้น แต่การเชื่อมต่อที่มีการดำเนินการเขียนสามารถส่งไปยังโหนดอื่นในคลัสเตอร์ได้ ซึ่งจะส่งคืนที่อยู่ของผู้นำเพื่อทำซ้ำคำขอ (ในเวอร์ชันถัดไป สัญญาว่าจะเพิ่มการส่งต่อคำขอไปยังผู้นำโดยอัตโนมัติ) จุดเน้นหลักอยู่ที่ความทนทานต่อข้อผิดพลาด ดังนั้น DBMS จะปรับขนาดเฉพาะกับการดำเนินการอ่านเท่านั้น และการดำเนินการเขียนถือเป็นจุดคอขวด เป็นไปได้ที่จะรันคลัสเตอร์ rqlite จากโหนดเดียว และโซลูชันนี้สามารถใช้เพื่อให้การเข้าถึง SQLite ผ่าน HTTP โดยไม่ต้องระบุความทนทานต่อข้อผิดพลาด

ข้อมูล SQLite บนแต่ละโหนดไม่ได้จัดเก็บไว้ในไฟล์ แต่อยู่ในหน่วยความจำ ที่ระดับเลเยอร์ที่มีการใช้งานโปรโตคอล Raft บันทึกของคำสั่ง SQLite ทั้งหมดที่นำไปสู่การเปลี่ยนแปลงฐานข้อมูลจะถูกเก็บไว้ บันทึกนี้ใช้ในระหว่างการจำลองแบบ (การจำลองที่ระดับของคำขอที่สร้างซ้ำบนโหนดอื่น) เมื่อเริ่มต้นโหนดใหม่ หรือเพื่อกู้คืนจากการสูญเสียการเชื่อมต่อ เพื่อลดขนาดของบันทึก จะใช้การบรรจุอัตโนมัติซึ่งเริ่มต้นหลังจากการเปลี่ยนแปลงตามจำนวนที่ระบุและนำไปสู่การแก้ไขสแน็ปช็อตซึ่งเกี่ยวข้องกับการเริ่มรักษาบันทึกใหม่ (สถานะของฐานข้อมูลในหน่วยความจำคือ เหมือนกับสแน็ปช็อต + บันทึกการเปลี่ยนแปลงสะสม)

คุณสมบัติของ rqlite:

  • ปรับใช้คลัสเตอร์ได้ง่าย โดยไม่จำเป็นต้องติดตั้ง SQLite แยกต่างหาก
  • ความสามารถในการรับที่เก็บข้อมูล SQL ที่จำลองแบบอย่างรวดเร็ว
  • พร้อมใช้งานในโครงการผลิต (เกรดการผลิต)
  • การมีอยู่ของ HTTP(S) API ที่ช่วยให้คุณอัปเดตข้อมูลในโหมดแบตช์และกำหนดโหนดนำของคลัสเตอร์ นอกจากนี้ยังมีอินเทอร์เฟซบรรทัดคำสั่งและไลบรารีไคลเอนต์สำหรับภาษาการเขียนโปรแกรมต่างๆ
  • ความพร้อมใช้งานของบริการสำหรับการระบุโหนดอื่นๆ ทำให้คุณสามารถสร้างคลัสเตอร์แบบไดนามิกได้
  • รองรับการเข้ารหัสการแลกเปลี่ยนข้อมูลระหว่างโหนด
  • ความสามารถในการกำหนดระดับการตรวจสอบความเกี่ยวข้องและความสอดคล้องของข้อมูลเมื่ออ่าน
  • ความสามารถเสริมในการเชื่อมต่อโหนดในโหมดอ่านอย่างเดียว ซึ่งไม่ได้มีส่วนร่วมในการกำหนดฉันทามติ และใช้เพื่อเพิ่มความสามารถในการปรับขนาดของคลัสเตอร์สำหรับการดำเนินการอ่าน
  • รองรับรูปแบบธุรกรรมของคุณเองตามคำสั่งรวมในคำขอเดียว (ไม่รองรับธุรกรรมตาม BEGIN, COMMIT, ROLLBACK, SAVEPOINT และ RELEASE)
  • รองรับการสร้างการสำรองข้อมูลแบบ hot

ในรุ่นใหม่:

  • เพิ่มการรองรับการทำคลัสเตอร์ rqlite อัตโนมัติโดยใช้บริการตรวจจับโหนดใหม่ที่สามารถทำงานบนพื้นฐานของการจัดเก็บข้อมูลแบบกระจายของ Consul และ ฯลฯ บริการนี้ช่วยให้โหนด rqlite ค้นหาซึ่งกันและกันได้โดยอัตโนมัติ - ผู้ดูแลระบบเพียงแค่ต้องเปิดใช้หลายโหนดบนเซิร์ฟเวอร์ที่แตกต่างกัน โดยระบุกงสุลทั่วไปหรือที่อยู่คลัสเตอร์ ฯลฯ (เช่น "example.com:8500") และโหนดจะถูกโดยอัตโนมัติ รวมกันเป็นคลัสเตอร์ โหนดนำหน้าจะอัปเดตข้อมูลเกี่ยวกับที่อยู่ในกงสุลหรือที่เก็บข้อมูล ฯลฯ เป็นระยะ ซึ่งช่วยให้คุณสามารถเปลี่ยนผู้นำในภายหลังได้โดยไม่จำเป็นต้องกำหนดค่าโหนดอื่นใหม่ รวมทั้งเพิ่มโหนดใหม่แม้หลังจากเปลี่ยนผู้นำแล้ว บริการโหมด Discovery แบบเดิมที่ทำงานบน AWS Lambda ถูกยกเลิกแล้ว
  • อินเทอร์เฟซ CLI ช่วยให้สามารถระบุโฮสต์หลายรายการพร้อมกัน - หากโหนดแรกไม่พร้อมใช้งาน โฮสต์ถัดไปจะได้รับการติดต่อ
  • ทำใหม่โค้ดสำหรับการแยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่ง rqlited
  • แพ็คเกจ protobuf ที่เลิกใช้แล้วถูกยกเลิกแล้ว
  • พื้นที่เก็บข้อมูล BoltDB ที่ใช้ในการดำเนินการตามโปรโตคอล Raft ถูกแทนที่ด้วย bbolt ซึ่งเป็นทางแยกจากโครงการ etcd

ที่มา: opennet.ru

เพิ่มความคิดเห็น