Dragonfly жобасы Redis және Memcached үшін жылдамырақ ауыстыруды әзірлеуде

Memcached және Redis протоколдарына қолдау көрсететін Dragonfly жадтағы кэштеу жүйесінің бірінші шығарылымы қол жетімді, бірақ сұрауларды әлдеқайда жоғары өнімділікпен және жадты аз тұтынумен орындауға мүмкіндік береді. Жүйе деректерді кілт/мән пішімінде манипуляциялайды және жүктемесі жоғары тораптардың жұмысын жеделдету, ДҚБЖ-ға баяу сұрауларды және жедел жадтағы аралық деректерді кэштеу үшін жеңіл шешім ретінде пайдаланылуы мүмкін. Dragonfly коды C/C++ тілінде жазылған және BSL (Business Source License) бойынша таратылады.

BSL лицензиясын MySQL негізін қалаушылар Open Core үлгісіне балама ретінде ұсынған. BSL мәні мынада: кеңейтілген функционалдылық коды бастапқыда модификация үшін қол жетімді, бірақ айналып өту үшін коммерциялық лицензияны сатып алуды талап ететін қосымша шарттар орындалған жағдайда ғана белгілі бір уақыт бойы тегін пайдалануға болады. Dragonfly жобасының қосымша лицензия шарттары кодты Apache 2.0 лицензиясына тек 1 жылдың 2027 маусымында көшіруді талап етеді. Осы уақытқа дейін лицензия кодты тек оның қызметтері мен өнімдерінің жұмысын қамтамасыз ету үшін пайдалануға мүмкіндік береді, бірақ Dragonfly қосымшасы ретінде әрекет ететін ақылы бұлттық қызметтерді жасау үшін пайдалануға тыйым салады.

Әзірлеушілер мен демонстрацияланған сынақтарға сәйкес, Dragonfly жадты сақтаудың ең жылдам жүйесі деп мәлімдейді. Redis-пен салыстырғанда, Dragonfly өнімділікті 25 есе арттыруға және әдеттегі жұмыс жүктемелері үшін жадты тұтынуды үш есеге азайтуға қол жеткізді. Бір Dragonfly сервері секундына миллиондаған сұрауларды өңдей алады, мысалы, Amazon EC2 c6gn.16xlarge ортасында секундына 3.8 миллион сұрау өнімділігіне қол жеткізуге болады.

Dragonfly жобасы Redis және Memcached үшін жылдамырақ ауыстыруды әзірлеуде

5 ГБ деректерді сақтауға арналған сынақтарда Dragonfly Redis-ке қарағанда 30% аз жадты қажет етті. «bgsave» пәрменімен суретті жасау кезінде жадты тұтыну артады, бірақ ең жоғары сәттерде ол Redis-ке қарағанда үш есе аз болып қалады, ал суретті жазу әрекетінің өзі әлдеқайда жылдамырақ (сынақта Dragonfly-де сурет 30-да жазылған. секунд, ал Redis - 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

пікір қалдыру