Dragonfly төсөл нь Redis болон Memcached-ийг илүү хурдан орлуулах програмыг боловсруулж байна

Dragonfly санах ойн кэшийн системийн анхны хувилбар гарсан бөгөөд энэ нь Memcached болон Redis протоколуудад дэмжлэг үзүүлэх боловч хүсэлтийг илүү өндөр гүйцэтгэлтэй, санах ойн зарцуулалт багатай гүйцэтгэх боломжийг олгодог. Систем нь өгөгдлийг түлхүүр/утга форматаар удирддаг бөгөөд ачаалал ихтэй сайтуудын ажлыг хурдасгах, DBMS-д удаашралтай асуулга болон RAM дахь завсрын өгөгдлийг кэшлэх хөнгөн шийдэл болгон ашиглаж болно. Dragonfly код нь C/C++ хэл дээр бичигдсэн бөгөөд BSL (Business Source License) дагуу тараагддаг.

BSL лицензийг MySQL-ийн үүсгэн байгуулагчид Open Core загвараас өөр хувилбар болгон санал болгосон. BSL-ийн мөн чанар нь дэвшилтэт функцүүдийн кодыг анхлан өөрчлөх боломжтой байдаг боловч арилжааны лиценз худалдаж авах шаардлагатай нэмэлт нөхцөл хангагдсан тохиолдолд л тодорхой хугацаанд үнэ төлбөргүй ашиглаж болно. Dragonfly төслийн лицензийн нэмэлт нөхцлүүд нь кодыг зөвхөн 2.0 оны 1-р сарын 2027-нд Apache XNUMX лиценз рүү шилжүүлэхийг шаарддаг. Энэ хүртэл лиценз нь зөвхөн үйлчилгээ, бүтээгдэхүүнийхээ ажиллагааг хангахын тулд кодыг ашиглахыг зөвшөөрдөг боловч Dragonfly-ийн нэмэлт үүрэг гүйцэтгэдэг төлбөртэй үүлэн үйлчилгээг бий болгоход ашиглахыг хориглодог.

Хөгжүүлэгчид болон үзүүлсэн туршилтуудын дагуу Dragonfly нь хамгийн хурдан санах ой хадгалах систем гэж мэдэгджээ. Redis-тай харьцуулахад Dragonfly нь гүйцэтгэлийг 25 дахин нэмэгдүүлж, ердийн ажлын ачааллын санах ойн хэрэглээг 2 дахин багасгасан. Нэг Dragonfly сервер нь секундэд сая сая хүсэлтийг боловсруулах боломжтой, жишээлбэл, Amazon EC6 c16gn.3.8xlarge орчинд секундэд XNUMX сая хүсэлт гаргах боломжтой байсан.

Dragonfly төсөл нь Redis болон Memcached-ийг илүү хурдан орлуулах програмыг боловсруулж байна

5 ГБ өгөгдөл хадгалах туршилтын хувьд Dragonfly нь Redis-ээс 30% бага санах ой шаарддаг. "bgsave" командыг ашиглан агшин зуурын зураг үүсгэх үед санах ойн зарцуулалт нэмэгддэг боловч оргил үед энэ нь Redis-ээс бараг гурав дахин бага хэвээр байгаа бөгөөд агшин зуурын бичлэг хийх ажиллагаа өөрөө илүү хурдан байдаг (туршилтанд Dragonfly-д агшин зуурын зургийг 30-д бичсэн болно. секунд, харин Редис - 42 секунд).

Dragonfly төсөл нь Redis болон Memcached-ийг илүү хурдан орлуулах програмыг боловсруулж байна

Нөөцийг хуваалцахгүйгээр (хуваалцсан-юу ч биш) олон урсгалтай архитектурын ачаар өндөр гүйцэтгэлд хүрдэг бөгөөд энэ нь хэлхээ бүрд өгөгдлийн өөрийн гэсэн хэсэг бүхий тусдаа тусдаа процессор хуваарилагдсан, мутекс болон эргэх түгжээгүйгээр ажилладаг гэсэн үг юм. Олон түлхүүртэй ажиллахдаа атомын шинж чанарыг хангахын тулд хөнгөн VLL түгжээг ашигладаг. Мэдээллийг санах ойд үр дүнтэй хадгалахын тулд хуваалттай хэш хүснэгтийн төрлийг хэрэгжүүлдэг самбарын бүтцийг ашигладаг.

Эхний хувилбарт байгаа боломжуудын дунд RESP2 протокол болон 130 Redis тушаалын дэмжлэгийг тэмдэглэсэн бөгөөд энэ нь Redis 2.8 хувилбарын функцтэй ойролцоо байна. Нэмж дурдахад, Dragonfly нь CAS-аас бусад бүх санах ойд хадгалагдсан командуудыг дэмждэг (шалгах ба тохируулах), агшин зуурын зураг үүсгэх асинхрон үйлдлүүдийг дэмждэг, санах ойн хэрэглээг урьдчилан таамаглах, суурилуулсан Lua 5.4 орчуулагчаар хангах, хэш гэх мэт нарийн төвөгтэй өгөгдлийн төрлүүдийг дэмждэг. багц, жагсаалт (ZSET, HSET, LIST, SETS болон STRING).

Кэшлэх горимыг тусад нь ашиглах боломжтой бөгөөд чөлөөт санах ой дууссаны дараа хуучин өгөгдлийг шинэ мэдээллээр автоматаар солих боломжтой. Өгөгдлийг хамааралтай гэж үзсэн өгөгдөлд насан туршдаа хавсаргах боломжтой. Хадгалалтын төлөвийг дахин эхлүүлсний дараа сэргээхийн тулд арын дэвсгэр дээр диск рүү угааж болно. Системийг удирдахын тулд HTTP консол (TCP порт 6379-д холбогддог) болон Prometheus-тэй нийцтэй хэмжигдэхүүнийг буцаах API-г өгсөн. Ирээдүйн хувилбаруудад бид Redis командуудын дэмжлэгийг өргөжүүлж, алдааг тэсвэрлэх, ачааллыг тэнцвэржүүлэх зорилгоор санах ойн хуулбарлах чадварыг хэрэгжүүлэхээр төлөвлөж байна.

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

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