Dragonfly 1.0 шығарылымы, жедел жадтағы деректерді кэштеу жүйесі

Dragonfly жадтағы кэштеу және сақтау жүйесі шығарылды, ол деректерді кілт/мән пішімінде өңдейді және жоғары жүктелген сайттардың жұмысын жеделдету, ДҚБЖ баяу сұрауларды кэштеу және ЖЖҚ-дағы аралық деректерді жеңіл шешім ретінде пайдалануға болады. Dragonfly Memcached және Redis протоколдарын қолдайды, ол бар клиенттік кітапханаларды пайдалануға және Memcached және Redis көмегімен жобаларды кодты қайта өңдеусіз Dragonfly жүйесіне тасымалдауға мүмкіндік береді.

Redis-пен салыстырғанда, Dragonfly Amazon EC2 c6gn.16xlarge ортасындағы әдеттегі жұмыс жүктемелері үшін өнімділіктің 25 есе артуына (секундына 3.8 миллион сұрау) қол жеткізді. AWS c6gn.16xlarge ортасында Memcached-пен салыстырғанда, Dragonfly секундына 4.7 есе көп жазу сұрауларын (3.8 мыңға қарсы 806 миллион) және секундына 1.77 есе көп оқу сұрауларын (3.7 миллионға қарсы 2.1 миллион) орындай алды.

Dragonfly 1.0 шығарылымы, жедел жадтағы деректерді кэштеу жүйесі

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

Dragonfly 1.0 шығарылымы, жедел жадтағы деректерді кэштеу жүйесі

Жоғары өнімділікке ресурстарды ортақ пайдаланбай (ортақ – ештеңе) көп ағынды архитектураның арқасында қол жеткізіледі, бұл әрбір ағынға мутекстерсіз және айналдыру құлыптарысыз жұмыс істейтін деректердің өзіндік бөлігі бар бөлек бөлек процессор тағайындалғанын білдіреді. Бірнеше кілттермен жұмыс істегенде атомдылықты қамтамасыз ету үшін жеңіл VLL құлыптары қолданылады. Ақпаратты жадта тиімді сақтау үшін бөлінген хэш кестесінің түрін жүзеге асыратын сызба құрылымы қолданылады.

Dragonfly кейбір ерекшеліктері:

  • Бос жад таусылғаннан кейін ескі деректерді автоматты түрде жаңа деректермен алмастыратын кэштеу режимі.
  • Деректер маңызды деп есептелетін өмір бойы деректермен байланыстыруды қолдау.
  • Қайта іске қосқаннан кейін кейінірек қалпына келтіру үшін фондық режимде дискіге жад күйін тазалауға қолдау.
  • Жүйені басқаруға арналған HTTP консолінің (TCP 6379 портына байланыстырылады) және Prometheus бағдарламасымен үйлесімді көрсеткіштерді қайтаруға арналған API болуы.
  • 185 Redis пәрменін қолдау, бұл шамамен Redis 5 шығарылымының функционалдығына баламалы.
  • CAS (тексеру және орнату) қоспағанда, барлық Memcached пәрмендерін қолдайды.
  • Суреттерді жасау үшін асинхронды операцияларды қолдау.
  • Болжалды жад тұтынуы.
  • Кірістірілген Lua 5.4 аудармашы.
  • Хэштер, жинақтар, тізімдер (ZSET, HSET, LIST, SETS және STRING) және JSON деректері сияқты күрделі деректер түрлерін қолдайды.
  • Ақауларға төзімділік пен жүктемені теңестіру үшін жад репликациясын қолдайды.

Dragonfly коды C/C++ тілінде жазылған және BSL (Business Source License) бойынша таратылады. BSL лицензиясын MySQL негізін қалаушылар Open Core үлгісіне балама ретінде ұсынған. BSL мәні мынада: кеңейтілген функционалдылық коды бастапқыда модификация үшін қол жетімді, бірақ айналып өту үшін коммерциялық лицензияны сатып алуды талап ететін қосымша шарттар орындалған жағдайда ғана белгілі бір уақыт бойы тегін пайдалануға болады. Dragonfly жобасына арналған қосымша лицензия шарттары кодты 2.0 жылдың 15 наурызында Apache 2028 лицензиясына көшіруді талап етеді. Осы уақытқа дейін лицензия кодты тек оның қызметтері мен өнімдерінің жұмысын қамтамасыз ету үшін пайдалануға мүмкіндік береді, бірақ Dragonfly қосымшасы ретінде әрекет ететін ақылы бұлттық қызметтерді жасау үшін пайдалануға тыйым салады.

Dragonfly 1.0 нұсқасы бастапқы серверден екінші серверге деректерді репликациялауды қолдауды жүзеге асыруымен ерекшеленеді. Дегенмен, Dragonfly деректерін Dragonfly негізіндегі немесе Redis негізіндегі негізгі серверден алатын қосымша сақтау орны ретінде пайдалану үшін теңшеуге болады. Репликацияны басқару API интерфейсі Redis бағдарламасымен үйлесімді және ROLE және REPLICAOF (SLAVEOF) пәрмендерін пайдалануға негізделген.

Ақпарат көзі: opennet.ru

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