Dragonfly 1.0 versiyasi, xotiradagi ma'lumotlarni keshlash tizimi

Dragonfly xotirada keshlash va saqlash tizimi chiqarildi, u 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 Memcached va Redis protokollarini qo'llab-quvvatlaydi, bu sizga mavjud mijozlar kutubxonalaridan foydalanish va loyihalarni Memcached va Redis-dan Dragonfly-ga kodni qayta ishlamasdan o'tkazish imkonini beradi.

Redis bilan solishtirganda, Dragonfly Amazon EC2 c6gn.16xlarge muhitida odatdagi ish yuklari uchun unumdorlikni 25 baravar oshirishga erishdi (sekundiga 3.8 million so'rov). AWS c6gn.16xlarge muhitidagi Memcached bilan solishtirganda, Dragonfly sekundiga 4.7 marta ko‘proq yozish so‘rovlarini (3.8 mingga nisbatan 806 million) va soniyasiga 1.77 marta ko‘proq o‘qish so‘rovlarini (3.7 millionga nisbatan 2.1 million) bajarishga muvaffaq bo‘ldi.

Dragonfly 1.0 versiyasi, xotiradagi ma'lumotlarni keshlash tizimi

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 qoldi va suratga olish jarayonining o'zi ancha tezroq (sinovda Dragonfly-dagi oniy rasm 30-da yozilgan. soniya, Redis esa 42 soniyada).

Dragonfly 1.0 versiyasi, xotiradagi ma'lumotlarni keshlash tizimi

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.

Dragonfly-ning ba'zi xususiyatlari:

  • Keshlash rejimi, bo'sh xotira tugaganidan keyin eski ma'lumotlarni avtomatik ravishda yangi ma'lumotlar bilan almashtiradi.
  • Ma'lumotlar tegishli deb hisoblanadigan umr bo'yi ma'lumotlarga ulanishni qo'llab-quvvatlash.
  • Qayta ishga tushirilgandan keyin qayta tiklash uchun xotira holatini fonda diskka o'chirishni qo'llab-quvvatlash.
  • Tizim boshqaruvi uchun HTTP konsoli (TCP 6379 portiga ulanadi) va Prometey bilan mos keladigan ko'rsatkichlarni qaytarish uchun API mavjudligi.
  • 185 ta Redis buyrug'ini qo'llab-quvvatlash, bu taxminan Redis 5 versiyasining funksionalligiga teng.
  • CAS (check-and-set) dan tashqari barcha Memcached buyruqlarini qo'llab-quvvatlaydi.
  • Suratlarni yaratish uchun asinxron operatsiyalarni qo'llab-quvvatlash.
  • Prognoz qilinadigan xotira sarfi.
  • O'rnatilgan Lua 5.4 tarjimoni.
  • Xeshlar, to'plamlar, ro'yxatlar (ZSET, HSET, LIST, SETS va STRING) va JSON ma'lumotlari kabi murakkab ma'lumotlar turlarini qo'llab-quvvatlaydi.
  • Xatolarga chidamlilik va yukni muvozanatlash uchun saqlash replikatsiyasini qo'llab-quvvatlaydi.

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 loyihasi uchun qoʻshimcha litsenziya shartlari kodni 2.0-yil 15-martda Apache 2028 litsenziyasiga 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.

Dragonfly 1.0 versiyasi asosiy serverdan ikkinchi darajali serverga ma'lumotlarni ko'paytirishni qo'llab-quvvatlashi bilan ajralib turadi. Biroq, Dragonfly-ni asosiy serverdan Dragonfly yoki Redis-ga asoslangan ma'lumotlarni oladigan ikkilamchi xotira sifatida ishlatish uchun sozlash mumkin. Replikatsiyani boshqarish APIsi Redis bilan mos keladi va ROLE va REPLICAOF (SLAVEOF) buyruqlaridan foydalanishga asoslangan.

Manba: opennet.ru

a Izoh qo'shish