Keluaran Dragonfly 1.0, sistem caching data dalam memori

Sistem caching dan storan dalam memori Dragonfly telah dikeluarkan, yang memanipulasi data dalam format kunci/nilai dan boleh digunakan sebagai penyelesaian ringan untuk mempercepatkan kerja tapak yang sangat dimuatkan, menyimpan cache pertanyaan perlahan ke DBMS dan data perantaraan dalam RAM. Dragonfly menyokong protokol Memcached dan Redis, yang membolehkan anda menggunakan perpustakaan pelanggan sedia ada dan memindahkan projek menggunakan Memcached dan Redis ke Dragonfly tanpa mengolah semula kod tersebut.

Berbanding dengan Redis, Dragonfly mencapai peningkatan 2 kali ganda dalam prestasi (6 juta permintaan sesaat) untuk beban kerja biasa dalam persekitaran c16gn.25xlarge Amazon EC3.8. Berbanding dengan Memcached dalam persekitaran AWS c6gn.16xlarge, Dragonfly mampu melaksanakan 4.7 kali lebih banyak permintaan tulis sesaat (3.8 juta berbanding 806 ribu) dan 1.77 kali lebih banyak permintaan baca sesaat (3.7 juta berbanding 2.1 juta).

Keluaran Dragonfly 1.0, sistem caching data dalam memori

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-saat puncak ia kekal hampir tiga kali kurang 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).

Keluaran Dragonfly 1.0, sistem caching data dalam memori

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.

Beberapa ciri Dragonfly:

  • Mod caching, yang menggantikan data lama secara automatik dengan data baharu selepas memori kosong habis.
  • Sokongan untuk mengikat data sepanjang hayat di mana data dianggap relevan.
  • Sokongan untuk mengepam keadaan storan ke cakera di latar belakang untuk pemulihan kemudian selepas dimulakan semula.
  • Kehadiran konsol HTTP (berikat pada port TCP 6379) untuk pengurusan sistem dan API untuk metrik pengembalian, serasi dengan Prometheus.
  • Sokongan untuk 185 arahan Redis, yang hampir sama dengan fungsi keluaran Redis 5.
  • Menyokong semua perintah Memcached kecuali CAS (semak dan tetapkan).
  • Sokongan untuk operasi tak segerak untuk mencipta syot kilat.
  • Penggunaan ingatan yang boleh diramalkan.
  • Jurubahasa Lua 5.4 terbina dalam.
  • Menyokong jenis data yang kompleks seperti cincang, set, senarai (ZSET, HSET, LIST, SETS dan STRING) dan data JSON.
  • Menyokong replikasi storan untuk toleransi kesalahan dan pengimbangan beban.

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 untuk projek Dragonfly memerlukan kod untuk dipindahkan ke lesen Apache 2.0 pada 15 Mac 2028. 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.

Versi Dragonfly 1.0 terkenal kerana pelaksanaan sokongan untuk replikasi data dari pelayan utama kepada pelayan kedua. Walau bagaimanapun, Dragonfly boleh dikonfigurasikan untuk digunakan sebagai storan sekunder yang menerima data daripada pelayan utama sama ada berdasarkan Dragonfly atau berdasarkan Redis. API pengurusan replikasi serasi dengan Redis dan berdasarkan penggunaan perintah ROLE dan REPLICAOF (SLAVEOF).

Sumber: opennet.ru

Tambah komen