SQLite дээр суурилсан тархсан, алдааг тэсвэрлэх чадвартай DBMS болох rqlite 6.0 хувилбар

Түгээмэл DBMS rqlite 6.0 хувилбарыг танилцуулж байна, энэ нь SQLite-ийг хадгалах хөдөлгүүр болгон ашигладаг бөгөөд синхрончлогдсон хадгалалтын кластерын ажлыг зохион байгуулах боломжийг олгодог. Qlite-ийн нэг онцлог нь etcd болон Consul-тай зарим талаараа төстэй, гэхдээ түлхүүр/утга форматын оронд харилцааны өгөгдлийн загварыг ашигладаг тархсан гэмтэлд тэсвэртэй хадгалах санг суурилуулах, байршуулах, засвар үйлчилгээ хийхэд хялбар байдаг. Төслийн код нь Go дээр бичигдсэн бөгөөд MIT лицензийн дагуу түгээгддэг.

Бүх зангилаануудыг синхрончлолд байлгахын тулд Raft зөвшилцлийн алгоритмыг ашигладаг. Rqlite нь анхны SQLite номын сан болон стандарт go-sqlite3 драйверийг ашигладаг бөгөөд дээр нь үйлчлүүлэгчийн хүсэлтийг боловсруулах, бусад зангилаа руу хуулбарлах, тэргүүлэх зангилааны сонголт дээр зөвшилцөлд хүрэхийг хянадаг давхарга ажиллуулдаг.

Өгөгдлийн сангийн өөрчлөлтийг зөвхөн удирдагчаар сонгогдсон зангилаа хийх боломжтой, гэхдээ бичих үйлдэлтэй холболтыг кластерын бусад зангилаа руу илгээж болох бөгөөд энэ нь хүсэлтийг давтахын тулд удирдагчийн хаягийг буцаана (дараагийн хувилбарт тэд удирдагч руу хүсэлтийг автоматаар дамжуулахыг амлаж байна). Гол ач холбогдол нь алдааг тэсвэрлэх чадвар юм, тиймээс DBMS нь зөвхөн унших үйлдлээр хэмжигддэг бөгөөд бичих үйлдлүүд нь саад тотгор болдог. Нэг зангилаанаас rqlite кластер ажиллуулах боломжтой бөгөөд энэ шийдлийг алдааг тэсвэрлэхгүйгээр HTTP-ээр дамжуулан SQLite-д хандахад ашиглаж болно.

Зангилаа бүр дээрх SQLite өгөгдөл нь файлд хадгалагддаггүй, харин санах ойд байдаг. Raft протоколыг хэрэгжүүлэх давхаргын түвшинд мэдээллийн санд өөрчлөлт оруулахад хүргэдэг бүх SQLite командуудын бүртгэл хөтөлдөг. Энэ бүртгэлийг хуулбарлах (бусад зангилаанууд дээрх хүсэлтийг хуулбарлах түвшинд хуулбарлах), шинэ зангилаа эхлүүлэх эсвэл холболтын алдагдлыг сэргээх үед ашигладаг. Бүртгэлийн хэмжээг багасгахын тулд автомат сав баглаа боодлыг ашигладаг бөгөөд энэ нь тодорхой тооны өөрчлөлт хийсний дараа эхэлж, дискэн дээрх агшин зуурын зургийг засахад хүргэдэг бөгөөд үүнтэй холбоотойгоор шинэ бүртгэл (санах ой дахь мэдээллийн сангийн төлөв) хадгалагдаж эхэлдэг. агшин зуурын зураг + хуримтлагдсан өөрчлөлтийн бүртгэлтэй ижил байна).

rqlite-ийн онцлогууд:

  • Тусдаа SQLite суулгах шаардлагагүйгээр кластер байрлуулахад хялбар.
  • Хуулбарласан SQL санах ойг хурдан олж авах чадвар.
  • Ажлын төслүүдэд ашиглахад бэлэн (Үйлдвэрлэлийн зэрэг).
  • Багц горимд өгөгдлийг шинэчлэх, кластерын тэргүүлэх зангилааг тодорхойлох боломжийг олгодог HTTP(S) API байгаа эсэх. Энэ нь мөн командын мөрийн интерфейс болон SQLite-д зориулан бүтээгдсэн янз бүрийн клиент номын санг ашиглах боломжийг олгодог.
  • Бусад зангилааг тодорхойлох үйлчилгээний хүртээмж нь кластеруудыг динамикаар үүсгэх боломжийг танд олгоно.
  • Зангилаа хоорондын өгөгдлийн солилцоог шифрлэх дэмжлэг.
  • Унших үед өгөгдлийн хамаарал, тууштай байдлыг шалгах түвшинг тохируулах чадвар.
  • Зөвшилцлийг тодорхойлоход оролцдоггүй, унших үйлдлүүдийн хувьд кластерын өргөтгөх чадварыг нэмэгдүүлэхэд ашигладаг зангилаануудыг зөвхөн унших горимд холбох нэмэлт боломж.
  • Нэг хүсэлтэд командуудыг нэгтгэх үндсэн дээр өөрийн гэсэн гүйлгээний хэлбэрийг дэмжих (ЭХЛҮҮЛЭХ, ХАМГААЛАХ, БУЦАХ, ХАДГАЛАХ POINT болон RELEASE дээр суурилсан гүйлгээг дэмждэггүй).
  • Халуун нөөцлөлтийг үүсгэх дэмжлэг.

Шинэ хувилбар нь унших, бичих хүсэлтийг зөв кластер зангилаа руу чиглүүлэх үйл явцыг сайжруулах замаар кластерын найдвартай байдлыг нэмэгдүүлэхэд чиглэсэн томоохон архитектурын өөрчлөлтүүдийг танилцуулж байна. rqlite зангилаанууд одоо Raft протоколоор зангилаа хооронд тогтоосон TCP холболтыг ашиглан өөр хоорондоо олон логик холболтыг олон талт болгох боломжтой. Хэрэв хүсэлт нь удирдагчийн эрх мэдэл шаарддаг боловч хоёрдогч зангилаа руу илгээгдсэн бол хоёрдогч зангилаа нь удирдагчийн хаягийг тодорхойлж, Raft зөвшилцлийн тооцоолол хийхгүйгээр үйлчлүүлэгчид дамжуулж болно.

Өөрчлөлт нь тусдаа мета өгөгдлийн синхрончлолын бүрэлдэхүүн хэсэг байх хэрэгцээг арилгаж, Raft төлөв болон мета өгөгдлүүдийг тусад нь зохицуулахыг арилгасан. Хоёрдогч зангилаанууд нь удирдагч зангилаа руу зөвхөн шаардлагатай үед, тэргүүлэгч зангилааны хаягийг олж мэдэх шаардлагатай үед л хүсэлт илгээдэг. API нь кластер дахь бусад зангилааны төлөв байдлын талаар мэдээлэл авах боломжийг олгодог. ".sysdump" командыг тушаалын мөрийн интерфейс дээр нэмсэн.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх