Proyek Dragonfly sedang mengembangkan pengganti Redis dan Memcached yang lebih cepat

Rilis pertama sistem cache dalam memori Dragonfly telah tersedia, memberikan dukungan untuk protokol Memcached dan Redis, namun memungkinkan kueri dieksekusi dengan kinerja yang jauh lebih tinggi dan konsumsi memori lebih sedikit. Sistem ini memanipulasi data dalam format kunci/nilai dan dapat digunakan sebagai solusi ringan untuk mempercepat kerja situs dengan beban tinggi, menyimpan kueri lambat ke DBMS dan data perantara dalam RAM. Kode Dragonfly ditulis dalam C/C++ dan didistribusikan di bawah BSL (Business Source License).

Lisensi BSL diusulkan oleh salah satu pendiri MySQL sebagai alternatif model Open Core. Inti dari BSL adalah bahwa kode fungsionalitas tingkat lanjut pada awalnya tersedia untuk dimodifikasi, tetapi untuk beberapa waktu dapat digunakan secara gratis hanya jika kondisi tambahan terpenuhi, yang memerlukan pembelian lisensi komersial untuk menghindarinya. Persyaratan lisensi tambahan proyek Dragonfly mengharuskan kode untuk ditransfer ke lisensi Apache 2.0 hanya pada tanggal 1 Juni 2027. Hingga saat ini, lisensi mengizinkan penggunaan kode hanya untuk memastikan pengoperasian layanan dan produknya, tetapi melarang penggunaan untuk pembuatan layanan cloud berbayar yang bertindak sebagai tambahan pada Dragonfly.

Menurut pengembang dan pengujian yang ditunjukkan, Dragonfly mengklaim sebagai sistem penyimpanan memori tercepat. Dibandingkan dengan Redis, Dragonfly mencapai peningkatan kinerja 25 kali lipat dan pengurangan konsumsi memori tiga kali lipat untuk beban kerja biasa. Satu server Dragonfly dapat memproses jutaan permintaan per detik, misalnya, di lingkungan Amazon EC2 c6gn.16xlarge dimungkinkan untuk mencapai kinerja 3.8 juta permintaan per detik.

Proyek Dragonfly sedang mengembangkan pengganti Redis dan Memcached yang lebih cepat

Dalam pengujian untuk menyimpan data sebesar 5 GB, Dragonfly memerlukan memori 30% lebih sedikit dibandingkan Redis. Saat membuat snapshot dengan perintah "bgsave", konsumsi memori meningkat, tetapi pada momen puncak konsumsi memori tetap hampir tiga kali lebih sedikit dibandingkan di Redis, dan operasi perekaman snapshot itu sendiri jauh lebih cepat (dalam pengujian, snapshot di Dragonfly ditulis dalam 30 detik, sedangkan Redis - dalam 42 detik).

Proyek Dragonfly sedang mengembangkan pengganti Redis dan Memcached yang lebih cepat

Performa tinggi dicapai berkat arsitektur multi-thread tanpa berbagi sumber daya (shared-nothing), yang berarti bahwa setiap thread diberi prosesor terpisah dengan porsi datanya sendiri, bekerja tanpa mutex dan spin lock. Untuk memastikan atomisitas saat bekerja dengan banyak kunci, kunci VLL yang ringan digunakan. Untuk menyimpan informasi secara efisien dalam memori, struktur dashtable digunakan, yang mengimplementasikan jenis tabel hash yang dipartisi.

Di antara fitur-fitur yang tersedia pada rilis pertama, terdapat dukungan untuk protokol RESP2 dan 130 perintah Redis, yang kira-kira sesuai dengan fungsionalitas rilis Redis 2.8. Selain itu, Dragonfly mendukung semua perintah memcached kecuali CAS (check-and-set), menyediakan dukungan untuk operasi asinkron untuk membuat snapshot, menyediakan konsumsi memori yang dapat diprediksi, menyediakan interpreter Lua 5.4 bawaan, dan mendukung tipe data kompleks seperti hash, set, dan daftar (ZSET, HSET, LIST, SETS dan STRING).

Mode caching tersedia secara terpisah, yang secara otomatis mengganti data lama dengan data baru setelah memori bebas habis. Dimungkinkan untuk melampirkan data seumur hidup selama data tersebut dianggap relevan. Status penyimpanan dapat dipindahkan ke disk di latar belakang untuk pemulihan nanti setelah restart. Untuk mengelola sistem, konsol HTTP disediakan (mengikat ke port TCP 6379) dan API untuk mengembalikan metrik, kompatibel dengan Prometheus. Di versi mendatang, kami berencana memperluas dukungan untuk perintah Redis dan menerapkan kemampuan mereplikasi penyimpanan untuk memberikan toleransi kesalahan dan penyeimbangan beban.

Sumber: opennet.ru

Tambah komentar