rqlite 7.0 buraxılışı, SQLite əsasında paylanmış xətaya dözümlü DBMS

SQLite-dən saxlama mühərriki kimi istifadə edən və bir-biri ilə sinxronlaşdırılmış anbarlardan klasterin işini təşkil etməyə imkan verən paylanmış DBMS rqlite 7.0 buraxıldı. Rqlite-nin xüsusiyyətlərindən biri, etcd və Consul-a bir qədər oxşar olan, lakin açar/dəyər formatı əvəzinə əlaqəli məlumat modelindən istifadə etməklə paylanmış nasazlığa davamlı yaddaşın quraşdırılması, yerləşdirilməsi və saxlanmasının asanlığıdır. Layihə kodu Go-da yazılmışdır və MIT lisenziyası altında paylanmışdır.

Bütün qovşaqları sinxron vəziyyətdə saxlamaq üçün Raft konsensus alqoritmi istifadə olunur. Rqlite orijinal SQLite kitabxanasından və go-sqlite3 drayverindən istifadə edir, bunun üzərinə müştəri sorğularını emal edən, digər qovşaqlara replikasiyanı həyata keçirən və aparıcı node seçimində konsensusun əldə olunmasına nəzarət edən təbəqə işə salınır.

Verilənlər bazasında dəyişikliklər yalnız lider kimi seçilmiş qovşaq tərəfindən edilə bilər, lakin yazma əməliyyatları ilə əlaqələr də klasterdəki digər qovşaqlara göndərilə bilər ki, bu da sorğunu təkrarlamaq üçün liderin ünvanını qaytaracaq (növbəti versiyada onlar sorğuların liderə avtomatik yönləndirilməsini əlavə etməyə söz verin). Əsas diqqət xətalara dözümlülükdür, buna görə də DBMS yalnız oxu əməliyyatları ilə ölçülür və yazma əməliyyatları darboğazdır. Tək bir qovşaqdan rqlite klasterini işə salmaq mümkündür və bu həll xətaya dözümlülük təmin etmədən HTTP üzərindən SQLite-a girişi təmin etmək üçün istifadə edilə bilər.

Hər bir node üzrə SQLite məlumatları faylda deyil, yaddaşda saxlanılır. Raft protokolunun tətbiqi ilə səviyyə səviyyəsində verilənlər bazasında dəyişikliklərə səbəb olan bütün SQLite əmrlərinin jurnalı saxlanılır. Bu jurnal replikasiya zamanı (digər qovşaqlarda sorğuların təkrar istehsalı səviyyəsində replikasiya), yeni node işə salındıqda və ya əlaqə itkisini bərpa etmək üçün istifadə olunur. Jurnalın ölçüsünü azaltmaq üçün müəyyən sayda dəyişiklikdən sonra başlayan və yeni bir jurnalın saxlanmağa başladığı bir şəkilin fiksasiyasına səbəb olan avtomatik qablaşdırma istifadə olunur (yaddaşdakı verilənlər bazasının vəziyyəti snapshot ilə eynidir + yığılmış dəyişiklik jurnalı).

rqlite xüsusiyyətləri:

  • Ayrı bir SQLite quraşdırılmasına ehtiyac olmadan klasteri yerləşdirmək asandır.
  • Tez təkrarlanan SQL yaddaşını əldə etmək imkanı.
  • İstehsal layihələrində istifadəyə hazırdır (istehsal dərəcəsi).
  • Toplu rejimdə məlumatları yeniləməyə və klasterin aparıcı nodeunu təyin etməyə imkan verən HTTP(S) API-nin olması. Komanda xətti interfeysi və müxtəlif proqramlaşdırma dilləri üçün müştəri kitabxanaları da təmin edilmişdir.
  • Dinamik olaraq klasterlər yaratmağa imkan verən digər qovşaqları müəyyən etmək üçün xidmətin mövcudluğu.
  • Düyünlər arasında məlumat mübadiləsini şifrələmək üçün dəstək.
  • Oxuyarkən məlumatların uyğunluğunun və ardıcıllığının yoxlanılması səviyyəsini konfiqurasiya etmək imkanı.
  • Konsensusun müəyyən edilməsində iştirak etməyən və oxunma əməliyyatları üçün klasterin miqyasını artırmaq üçün istifadə edilən qovşaqları yalnız oxumaq üçün rejimdə birləşdirmək üçün isteğe bağlı imkan.
  • Əmrləri bir sorğuda birləşdirməyə əsaslanan öz əməliyyat formalarınız üçün dəstək (BAŞLAMA, TƏRƏF ET, GERİ DÖNÜŞ, YAXŞI POINT və RELEASE əsasında əməliyyatlar dəstəklənmir).
  • İsti ehtiyat nüsxələrinin yaradılması üçün dəstək.

Yeni buraxılışda:

  • Konsul və etcd paylanmış saxlama əsasında işləyə bilən yeni node aşkarlama xidmətindən istifadə edərək avtomatik rqlite klasterləşdirilməsi üçün əlavə dəstək. Xidmət rqlite qovşaqlarına avtomatik olaraq bir-birini tapmağa imkan verir - administrator sadəcə ümumi Konsul və ya etcd klaster ünvanını (məsələn, “example.com:8500”) göstərərək müxtəlif serverlərdə bir neçə qovşaq işə salmalıdır və qovşaqlar avtomatik olaraq açılacaqdır. klaster halında birləşdirilir. Aparıcı qovşaq vaxtaşırı Konsul və ya etcd anbarında öz ünvanı haqqında məlumatları yeniləyir, bu, sonradan digər qovşaqların konfiqurasiyasına ehtiyac olmadan lideri dəyişdirməyə, həmçinin lideri dəyişdirdikdən sonra da yeni qovşaqlar əlavə etməyə imkan verir. AWS Lambda üzərində işləyən köhnə Kəşf rejimi xidməti dayandırıldı.
  • CLI interfeysi eyni anda bir neçə hostu təyin etməyə imkan verir - əgər birinci node mövcud deyilsə, növbəti hostlarla əlaqə saxlanılacaq.
  • Qlited komanda xətti arqumentlərinin təhlili üçün kod yenidən işlənmişdir.
  • Köhnəlmiş protobuf paketi dayandırıldı.
  • Raft protokolunun həyata keçirilməsində istifadə edilən BoltDB yaddaşı etcd layihəsindən olan çəngəl olan bbolt ilə əvəz edilmişdir.

Mənbə: opennet.ru

Добавить комментарий