Projek Dragonfly sedang membangunkan pengganti yang lebih pantas untuk Redis dan Memcached

Keluaran pertama sistem caching dalam memori Dragonfly tersedia, menyediakan sokongan untuk protokol Memcached dan Redis, tetapi membenarkan pertanyaan dilaksanakan dengan prestasi yang lebih tinggi dan penggunaan memori yang lebih sedikit. Sistem memanipulasi data dalam format kunci/nilai dan boleh digunakan sebagai penyelesaian ringan untuk mempercepatkan kerja tapak beban tinggi, menyimpan cache pertanyaan perlahan ke DBMS dan data perantaraan dalam RAM. Kod Dragonfly ditulis dalam C/C++ dan diedarkan di bawah BSL (Lesen Sumber Perniagaan).

Lesen BSL telah dicadangkan oleh pengasas bersama MySQL sebagai alternatif kepada model Open Core. Intipati BSL ialah kod fungsi lanjutan pada mulanya tersedia untuk pengubahsuaian, tetapi untuk beberapa waktu boleh digunakan secara percuma hanya jika syarat tambahan dipenuhi, yang memerlukan pembelian lesen komersial untuk memintas. Syarat lesen tambahan bagi projek Dragonfly memerlukan kod untuk dipindahkan ke lesen Apache 2.0 hanya pada 1 Jun 2027. Sehingga masa ini, lesen membenarkan penggunaan kod hanya untuk memastikan operasi perkhidmatan dan produknya, tetapi melarang penggunaan untuk penciptaan perkhidmatan awan berbayar yang bertindak sebagai tambahan kepada Dragonfly.

Menurut pembangun dan ujian yang ditunjukkan, Dragonfly mendakwa sebagai sistem storan memori terpantas. Berbanding dengan Redis, Dragonfly mencapai peningkatan 25 kali ganda dalam prestasi dan pengurangan tiga kali ganda dalam penggunaan memori untuk beban kerja biasa. Satu pelayan Dragonfly boleh memproses berjuta-juta permintaan sesaat, contohnya, dalam persekitaran Amazon EC2 c6gn.16xlarge adalah mungkin untuk mencapai prestasi 3.8 juta permintaan sesaat.

Projek Dragonfly sedang membangunkan pengganti yang lebih pantas untuk Redis dan Memcached

Dalam ujian untuk menyimpan 5 GB data, Dragonfly memerlukan 30% kurang memori daripada Redis. Apabila mencipta syot kilat dengan arahan "bgsave", penggunaan memori meningkat, tetapi pada saat puncak ia kekal hampir tiga kali lebih rendah daripada di Redis, dan operasi rakaman syot kilat itu sendiri adalah lebih pantas (dalam ujian, syot kilat dalam Dragonfly ditulis dalam 30 saat, manakala Redis - dalam 42 saat).

Projek Dragonfly sedang membangunkan pengganti yang lebih pantas untuk Redis dan Memcached

Prestasi tinggi dicapai berkat seni bina berbilang benang tanpa berkongsi sumber (shared-nothing), yang bermaksud bahawa setiap thread diberikan pemproses berasingan yang berasingan dengan bahagian datanya sendiri, berfungsi tanpa mutex dan kunci putaran. Untuk memastikan atomicity apabila bekerja dengan berbilang kunci, kunci VLL ringan digunakan. Untuk menyimpan maklumat dengan cekap dalam ingatan, struktur jadual pemuka digunakan, yang melaksanakan jenis jadual cincang yang dipartisi.

Antara ciri yang tersedia dalam keluaran pertama, sokongan untuk protokol RESP2 dan 130 arahan Redis dicatatkan, yang kira-kira sepadan dengan fungsi keluaran Redis 2.8. Selain itu, Dragonfly menyokong semua perintah memcached kecuali CAS (semak dan tetapkan), menyediakan sokongan untuk operasi tak segerak untuk mencipta syot kilat, menyediakan penggunaan memori yang boleh diramal, menyediakan penterjemah Lua 5.4 terbina dalam dan menyokong jenis data yang kompleks seperti cincang, set, dan senarai (ZSET, HSET, LIST, SETS dan STRING).

Mod caching tersedia secara berasingan, yang secara automatik menggantikan data lama dengan data baharu selepas memori kosong kehabisan. Adalah mungkin untuk melampirkan seumur hidup pada data semasa data itu dianggap relevan. Keadaan storan boleh disiram ke cakera di latar belakang untuk pemulihan kemudian selepas dimulakan semula. Untuk mengurus sistem, konsol HTTP disediakan (berikat pada port TCP 6379) dan API untuk metrik pengembalian, serasi dengan Prometheus. Dalam versi akan datang, kami merancang untuk mengembangkan sokongan untuk arahan Redis dan melaksanakan keupayaan untuk meniru storan untuk memberikan toleransi kesalahan dan pengimbangan beban.

Sumber: opennet.ru

Tambah komen