Dragonfly loyihasi Redis va Memcached uchun tezroq almashtirishni ishlab chiqmoqda

Dragonfly xotirada keshlash tizimining birinchi versiyasi mavjud bo'lib, u Memcached va Redis protokollarini qo'llab-quvvatlaydi, ammo so'rovlarni ancha yuqori ishlash va kamroq xotira sarfi bilan bajarishga imkon beradi. Tizim kalit/qiymat formatidagi ma'lumotlarni manipulyatsiya qiladi va yuqori yuklangan saytlar ishini tezlashtirish, sekin so'rovlarni DBMS va RAMdagi oraliq ma'lumotlarni keshlash uchun engil yechim sifatida ishlatilishi mumkin. Dragonfly kodi C/C++ da yozilgan va BSL (Business Source License) ostida tarqatiladi.

BSL litsenziyasi MySQL asoschilari tomonidan Open Core modeliga muqobil sifatida taklif qilingan. BSL ning mohiyati shundaki, ilg'or funksionallik kodi dastlab o'zgartirish uchun mavjud, ammo chetlab o'tish uchun tijorat litsenziyasini sotib olishni talab qiladigan qo'shimcha shartlar bajarilgan taqdirdagina bir muncha vaqt bepul foydalanish mumkin. Dragonfly loyihasining qoʻshimcha litsenziya shartlari kodni Apache 2.0 litsenziyasiga faqat 1-yil 2027-iyunda oʻtkazishni talab qiladi. Shu vaqtgacha litsenziya koddan faqat uning xizmatlari va mahsulotlarining ishlashini ta'minlash uchun foydalanishga ruxsat beradi, lekin Dragonfly-ga qo'shimcha sifatida ishlaydigan pullik bulut xizmatlarini yaratish uchun foydalanishni taqiqlaydi.

Ishlab chiquvchilar va ko'rsatilgan testlarga ko'ra, Dragonfly eng tez xotira saqlash tizimi deb da'vo qilmoqda. Redis bilan solishtirganda, Dragonfly unumdorlikni 25 baravar oshirishga va odatdagi ish yuklari uchun xotira sarfini uch baravar kamaytirishga erishdi. Bitta Dragonfly serveri soniyasiga millionlab so'rovlarni qayta ishlashga qodir, masalan, Amazon EC2 c6gn.16xlarge muhitida soniyasiga 3.8 million so'rov ko'rsatkichiga erishish mumkin edi.

Dragonfly loyihasi Redis va Memcached uchun tezroq almashtirishni ishlab chiqmoqda

5 GB ma'lumotni saqlash sinovlarida Dragonfly Redisga qaraganda 30% kamroq xotira talab qildi. "Bgsave" buyrug'i bilan suratlarni yaratishda xotira iste'moli ortadi, lekin eng yuqori daqiqalarda u Redis-ga qaraganda deyarli uch baravar kamroq bo'lib qoladi va suratga olish jarayonining o'zi ancha tezroq (sinovda Dragonfly-da oniy rasm 30-da yozilgan. soniya, Redis esa 42 soniyada).

Dragonfly loyihasi Redis va Memcached uchun tezroq almashtirishni ishlab chiqmoqda

Yuqori unumdorlikka ko'p tarmoqli arxitektura tufayli resurslarni almashish (shared-hech narsa) tufayli erishiladi, ya'ni har bir ipga ma'lumotlarning o'ziga xos qismiga ega bo'lgan, mutexes va spin qulflarisiz ishlaydigan alohida alohida protsessor ajratiladi. Bir nechta kalitlar bilan ishlashda atomiklikni ta'minlash uchun engil VLL qulflari qo'llaniladi. Xotirada ma'lumotni samarali saqlash uchun bo'lingan xesh-jadval turini amalga oshiradigan dashtable strukturasidan foydalaniladi.

Birinchi versiyada mavjud bo'lgan xususiyatlar orasida RESP2 protokoli va 130 ta Redis buyruqlarini qo'llab-quvvatlash qayd etilgan, bu taxminan Redis 2.8 versiyasining funksionalligiga mos keladi. Bundan tashqari, Dragonfly CAS (check-and-set) dan tashqari barcha xotirada saqlangan buyruqlarni qo'llab-quvvatlaydi, oniy tasvirlarni yaratish uchun asinxron operatsiyalarni qo'llab-quvvatlaydi, taxmin qilinadigan xotira sarfini ta'minlaydi, o'rnatilgan Lua 5.4 tarjimonini ta'minlaydi va xeshlar kabi murakkab ma'lumotlar turlarini qo'llab-quvvatlaydi, to'plamlar va ro'yxatlar (ZSET, HSET, LIST, SETS va STRING).

Keshlash rejimi alohida mavjud bo'lib, bo'sh xotira tugaganidan keyin eski ma'lumotlarni avtomatik ravishda yangi ma'lumotlar bilan almashtiradi. Ma'lumotlar tegishli deb hisoblangan ma'lumotlarga umr bo'yi biriktirilishi mumkin. Saqlash holatini qayta ishga tushirgandan so'ng keyinroq tiklash uchun fonda diskka o'tkazish mumkin. Tizimni boshqarish uchun HTTP konsoli (TCP 6379 portiga ulanadi) va Prometey bilan mos keladigan ko'rsatkichlarni qaytarish uchun API taqdim etiladi. Kelgusi versiyalarda biz Redis buyruqlarini qo'llab-quvvatlashni kengaytirishni va xatolarga chidamlilik va yuk muvozanatini ta'minlash uchun saqlashni takrorlash qobiliyatini amalga oshirishni rejalashtirmoqdamiz.

Manba: opennet.ru

a Izoh qo'shish