Rilis Memcached 1.6.0 dengan dukungan untuk penyimpanan eksternal diaktifkan

ambil tempat rilis signifikan dari sistem cache data dalam memori Memcache 1.6.0, yang beroperasi pada data dalam format kunci/nilai dan mudah digunakan. Memcached biasanya digunakan sebagai solusi ringan untuk mempercepat pekerjaan situs yang sarat muatan dengan menyimpan akses ke DBMS dan data perantara dalam cache. Kode disediakan di bawah lisensi BSD.

Versi baru menstabilkan implementasi penyimpanan "extstore", yang sekarang dibuat secara default (untuk menonaktifkan dalam skrip konfigurasi, opsi "-disable-extstore" disediakan), tetapi memerlukan aktivasi eksplisit saat startup (instalasi lama akan terus berfungsi tanpa perubahan setelah pembaruan). Meskipun extstore umumnya dianggap stabil, disarankan untuk berhati-hati saat mengimplementasikannya pada sistem yang sangat besar.

Extstore memungkinkan Anda menggunakan SSD/Flash drive untuk memperluas ukuran cache. Seperti halnya RAM, penyimpanan Flash tidak permanen dan diatur ulang saat restart. Ruang lingkup mode baru ini adalah untuk memastikan penyimpanan data besar yang efisien. Saat menggunakan "extstore", kunci dan metadata, seperti sebelumnya, hanya disimpan di RAM, tetapi data besar yang terkait dengan kunci, yang ukurannya melebihi ambang batas yang ditetapkan, disimpan di penyimpanan eksternal, dan hanya penunjuk yang tersisa di RAM.

Jika kunci dikaitkan dengan data kecil, maka Memcached berfungsi seperti biasa, menyimpan data di memori dan tidak mengakses penyimpanan eksternal. Jika ada banyak memori bebas, maka data yang paling dibutuhkan juga dapat ditempatkan sepenuhnya di cache di RAM (misalnya, Anda dapat menentukan bahwa hanya objek yang lebih besar dari 1024 byte yang belum diakses selama 3600 detik yang disetel ulang ke Flash ).

Implementasinya dioptimalkan untuk memastikan kinerja maksimum dan beban CPU minimal, dengan mengorbankan efisiensi penyimpanan (fragmentasi tingkat tinggi). Untuk memperpanjang umur Flash drive, data di-buffer dan dipindahkan ke penyimpanan secara berurutan. Untuk menyimpan status cache di antara restart, Anda dapat menggunakan kemampuan yang muncul di rilis 1.5.18 untuk membuang dump cache ke file. Pada permulaan berikutnya, Anda dapat memulihkan cache dari file ini untuk menghilangkan puncak beban pada pemroses konten karena cache kosong (cache segera menjadi β€œhangat”).

Perubahan penting kedua di Memcached 1.6 adalah pengerjaan ulang kode komunikasi jaringan, yang disesuaikan untuk memproses permintaan batch secara otomatis dalam satu panggilan sistem. Sebelumnya, ketika mengirimkan beberapa perintah GET dalam satu paket TCP, memcached akan mengirimkan hasilnya dengan panggilan sistem terpisah. Di Memcached 1.6, respons dikumpulkan dan dikembalikan dengan mengirimkan satu panggilan sistem. Hasilnya, kini terdapat rata-rata 1.5 kunci per panggilan sistem, yang dalam pengujian menunjukkan pengurangan beban CPU hingga 25% dan pengurangan latensi hingga beberapa persen.

Desain ulang subsistem jaringan juga memungkinkan peralihan ke alokasi buffer dinamis sesuai kebutuhan, alih-alih menetapkan buffer secara statis. Pengoptimalan ini mengurangi konsumsi memori saat menunggu perintah baru melalui koneksi yang dibuat klien dari 4.5 KB menjadi 400-500 byte, dan juga memungkinkan untuk menghilangkan banyak panggilan ke malloc, realloc, dan gratis, yang menyebabkan fragmentasi memori yang tidak perlu pada sistem dengan jumlah koneksi yang banyak. Setiap thread pekerja kini menangani kumpulan buffer baca dan tulisnya sendiri untuk koneksi klien aktif. Untuk menyesuaikan ukuran buffer ini
opsi β€œ-o resp_obj_mem_limit=N” dan β€œ-o read_buf_mem_limt=N” disediakan.

Cabang 1.6 juga mengumumkan penghentian protokol biner interaksi dengan server. Pemeliharaan protokol biner dan perbaikan bug akan terus berlanjut, namun fitur baru dan pembaruan pada fitur yang sudah ada tidak akan di-porting. Protokol teks akan terus berkembang tanpa perubahan. Protokol biner telah digantikan oleh protokol baru meta (protokol versi teks dengan perintah meta ringkas), menunjukkan kombinasi optimal antara kinerja dan keandalan. Protokol baru ini mencakup semua operasi yang sebelumnya tersedia melalui protokol teks dan biner.

Sumber: opennet.ru

Tambah komentar