PayPal açıq mənbəli JunoDB, açar-dəyər məlumatlarını idarə edən xətaya dözümlü verilənlər bazası idarəetmə sisteminə malikdir. Sistem yüksək təhlükəsizlik, üfüqi miqyaslılıq, nasazlığa dözümlülük və proqnozlaşdırıla bilən gecikmə ilə yüz minlərlə paralel əlaqəni idarə etmək qabiliyyəti üçün sıfırdan dizayn edilmişdir. Demək olar ki, bütün PayPal xidmətləri, istifadəçi girişindən tutmuş maliyyə əməliyyatlarının işlənməsinə qədər JunoDB-yə etibar edir. Layihənin kodu Go proqramında yazılmışdır (Java müştəri kitabxanası ilə) və Apache 2.0 lisenziyası ilə lisenziyalaşdırılıb. Gələcək inkişafa icma tərəfindən düzəlişlər, təkmilləşdirmələr və dəyişikliklər daxildir.
JunoDB-nin arxitekturası, müştəri tətbiqlərindən sorğuları qəbul edən və onları eyni vaxtda bir qrupa daxil olan proksi serverlər arasında paylayan yük balanslaşdırıcısının istifadəsinə əsaslanır. serverlər sorğu yerinə yetirilərkən yaddaş. Hər bir proksi server hamısı ilə eyni anda əlaqə qurur. serverlər saxlama və sorğuları etcd paylanmış konfiqurasiya saxlama sistemində saxlanılan bölmə indeksinə əsasən bir qrup saxlama serverinə yönləndirir.

Data bölmələrə bölünür və hashing istifadə edərək saxlama qovşaqlarına təyin edilir, çoxluqdakı qovşaqlar genişləndirildikdə və ya azaldıqda məlumatların hərəkətini azaldır. Arızaya dözümlülüyünü təmin etmək üçün, hər bir məlumat hissəsi fərdi serverlər uğursuz olsa belə, məlumatı qoruyaraq, çoxsaylı saxlama qovşaqlarında təkrarlanır. Coğrafi olaraq paylanmış saxlama sistemləri, müxtəlif məlumat mərkəzlərində yerləşən qovşaq qrupları ilə dəstəklənir.

Məlumatlar RAM-da saxlama qovşaqlarında və ya RocksDB kitabxanasından istifadə edərək yerli yaddaşda saxlanılır. Davamlı saxlama üçün məlumatlar şifrələnmiş şəkildə saxlanılır (şifrələmə açarı müştəri tərəfindən müəyyən edilə və ya proxy səviyyəsində konfiqurasiya edilə bilər).

Proqramlardan verilənlər bazasına daxil olmaq üçün Java, Go və C++ dillərində yazılmış proqramlar üçün API təmin edən müştəri kitabxanası təmin edilir. Müştəri tərəfi mümkün qədər sadələşdirilmişdir, mürəkkəb məntiq və parametrlər mümkün olduqda DBMS tərəfinə köçürülür. Müştəri ilə yük balanslaşdırıcısı və ya proksi arasında əlaqə şifrələnmiş rabitə kanalı vasitəsilə həyata keçirilir. Müştəri API-nin bütün imkanlarını təkrarlayan komanda xətti interfeysi sorğuların idarə edilməsi və göndərilməsi üçün istifadə edilə bilər.
Sistem proqnozlaşdırıla bilən aşağı gecikmələrlə sorğuları emal etmək üçün nəzərdə tutulmuşdur. Məsələn, n1-highmem-32 mühitlərindən (32 Intel Xeon 2.30GHz CPU, 214G RAM və 450G SSD yaddaş) yaradılmış üç saxlama qovşağından və bir proksidən ibarət klaster 95% hallarda və 1902 ms hallarda 2.5 ms-dən çox olmayan sabit gecikmələri təmin edə bildi. paralel TLS əlaqələri və saniyədə 15.000 sorğu axını (3000 paralel əlaqə və saniyədə 80.000 sorğu axını ilə, gecikmələr 95% hallarda 6 ms və 99% -də 15 ms-dən çox olmamışdır). PayPal-ın JunoDB əsaslı xidmətləri gündə təxminən 350 milyard sorğuya cavab verir.

Mənbə: opennet.ru
