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

Түгээмэл DBMS rqlite 7.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 байгаа эсэх. Төрөл бүрийн програмчлалын хэлэнд зориулсан командын мөрийн интерфейс болон үйлчлүүлэгчийн сангууд бас хангагдсан.
  • Бусад зангилааг тодорхойлох үйлчилгээний хүртээмж нь кластеруудыг динамикаар үүсгэх боломжийг танд олгоно.
  • Зангилаа хоорондын өгөгдлийн солилцоог шифрлэх дэмжлэг.
  • Унших үед өгөгдлийн хамаарал, тууштай байдлыг шалгах түвшинг тохируулах чадвар.
  • Зөвшилцлийг тодорхойлоход оролцдоггүй, унших үйлдлүүдийн хувьд кластерын өргөтгөх чадварыг нэмэгдүүлэхэд ашигладаг зангилаануудыг зөвхөн унших горимд холбох нэмэлт боломж.
  • Нэг хүсэлтэд командуудыг нэгтгэх үндсэн дээр өөрийн гэсэн гүйлгээний хэлбэрийг дэмжих (ЭХЛҮҮЛЭХ, ХАМГААЛАХ, БУЦАХ, ХАДГАЛАХ POINT болон RELEASE дээр суурилсан гүйлгээг дэмждэггүй).
  • Халуун нөөцлөлтийг үүсгэх дэмжлэг.

Шинэ хувилбарт:

  • Консул болон etcd түгээсэн хадгалалтын үндсэн дээр ажиллах боломжтой шинэ зангилаа илрүүлэх үйлчилгээг ашиглан автоматаар rqlite кластер хийх дэмжлэг нэмэгдсэн. Энэ үйлчилгээ нь rqlite зангилаануудыг автоматаар бие биенээ олох боломжийг олгодог - администратор нь Консул эсвэл etcd кластерын нийтлэг хаягийг зааж өгөхөд өөр сервер дээр хэд хэдэн зангилаа ажиллуулахад л хангалттай (жишээлбэл, "example.com:8500"), зангилаанууд автоматаар нээгдэнэ. кластер болгон нэгтгэсэн. Тэргүүлэгч зангилаа нь Консул эсвэл etcd хадгалах сан дахь хаягийнхаа мэдээллийг үе үе шинэчилдэг бөгөөд энэ нь дараа нь бусад зангилааг дахин тохируулах шаардлагагүйгээр ахлагчийг өөрчлөх, мөн удирдагчийг өөрчилсний дараа ч шинэ зангилаа нэмэх боломжийг олгодог. AWS Lambda дээр ажилладаг хуучин Discovery горимын үйлчилгээ зогссон.
  • CLI интерфэйс нь хэд хэдэн хостуудыг нэг дор зааж өгөх боломжийг олгодог - хэрэв эхний зангилаа байхгүй бол дараагийн хостуудтай холбогдох болно.
  • rqlited командын мөрийн аргументуудыг задлан шинжлэх кодыг дахин боловсруулсан.
  • Хуучирсан протобуф багцыг зогсоосон.
  • Raft протоколыг хэрэгжүүлэхэд ашигласан BoltDB хадгалах санг etcd төслийн сэрээ bbolt-оор сольсон.

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

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