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

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

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

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

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

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

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

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

การเปลี่ยนแปลงนี้ยังขจัดความจำเป็นในการซิงโครไนซ์ข้อมูลเมตาที่แยกต่างหาก และกำจัดการจัดการสถานะ Raft และข้อมูลเมตาที่แยกจากกัน ขณะนี้โหนดรองส่งคำขอไปยังโหนดผู้นำเมื่อจำเป็นเท่านั้น เมื่อพวกเขาต้องการค้นหาที่อยู่ของโหนดผู้นำ API ให้ความสามารถในการรับข้อมูลเกี่ยวกับสถานะของโหนดอื่นๆ ในคลัสเตอร์ มีการเพิ่มคำสั่ง ".sysdump" ลงในอินเทอร์เฟซบรรทัดคำสั่ง

ที่มา: opennet.ru

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