Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengkonfigurasi ElastiCache klien Anda untuk penyeimbangan beban yang efisien (Memcached)
catatan
Bagian ini berlaku untuk klaster Memcached multisimpul yang dirancang sendiri.
Untuk secara efektif menggunakan beberapa node ElastiCache Memcached, Anda harus dapat menyebarkan kunci cache Anda di seluruh node. Cara mudah untuk menyeimbangkan beban klaster dengan simpul n adalah dengan menghitung hash dari kunci objek dan melakukan modulus pada hasilnya dengan n - hash(key) mod n
. Nilai yang dihasilkan (0 sampai n–1) adalah jumlah simpul tempat Anda menempatkan objek.
Pendekatan ini sederhana dan berfungsi dengan baik selama jumlah simpul (n) adalah konstan. Namun, setiap kali Anda menambahkan atau menghapus simpul dari klaster, jumlah kunci yang perlu dipindahkan adalah (n - 1)/n (dengan n adalah jumlah baru simpul). Jadi, pendekatan ini menghasilkan sejumlah besar kunci yang dipindahkan, yang berarti ada sejumlah besar cache miss awal, terutama seiring bertambahnya jumlah simpul. Dalam kasus terbaik, penskalaan dari 1 ke 2 simpul menghasilkan pemindahan kunci (2-1) / 2 (50 persen). Penskalaan dari 9 ke 10 simpul menghasilkan pemindahan kunci (10–1)/10 (90 persen). Jika Anda menaikkan skala karena lonjakan lalu lintas, Anda tidak ingin memiliki banyak cache miss. Banyaknya jumlah cache miss akan menghasilkan hit pada basis data, yang sudah kelebihan beban karena lonjakan lalu lintas.
Solusi untuk dilema ini adalah melakukan hashing secara konsisten. Hashing konsisten menggunakan algoritma sehingga setiap kali simpul ditambahkan atau dihapus dari klaster, jumlah kunci yang harus dipindahkan adalah kira-kira 1 / n (dengan n adalah jumlah baru simpul). Dalam kasus terburuk, penskalaan dari 1 ke 2 simpul menghasilkan pemindahan kunci 1/2 (50 persen). Penskalaan dari 9 ke 10 simpul menghasilkan pemindahan kunci 1/10 (10 persen).
Sebagai pengguna, Anda mengontrol jenis algoritma hashing yang digunakan untuk klaster multisimpul. Sebaiknya konfigurasikan klien Anda untuk menggunakan hashing konsisten. Untungnya, ada banyak pustaka klien Memcached dalam bahasa yang paling populer yang menerapkan hashing konsisten. Periksa dokumentasi untuk pustaka yang Anda gunakan untuk melihat apakah mendukung hashing konsisten dan cara menerapkannya.
Jika Anda bekerja di Java, PHP, atau .NET, kami sarankan Anda menggunakan salah satu pustaka ElastiCache klien Amazon.
Hashing konsisten Menggunakan Java
Klien Java ElastiCache Memcached didasarkan pada klien Java spymemcached open-source, yang memiliki kemampuan hashing yang konsisten bawaan. Pustaka menyertakan KetamaConnectionFactory kelas yang mengimplementasikan hashing yang konsisten. Secara default, hashing konsisten dinonaktifkan pada spymemcached.
Untuk informasi lebih lanjut, lihat KetamaConnectionFactory dokumentasi di KetamaConnectionFactory
Hashing konsisten menggunakan PHP dengan Memcached
Klien PHP ElastiCache Memcached adalah pembungkus di sekitar perpustakaan PHP Memcached bawaan. Secara default, hashing konsisten dinonaktifkan oleh pustaka PHP Memcached.
Gunakan kode berikut untuk mengaktifkan hashing konsisten.
$m = new Memcached(); $m->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
Selain kode sebelumnya, sebaiknya Anda juga mengaktifkan memcached.sess_consistent_hash
pada file php.ini Anda.
Untuk informasi selengkapnya, lihat dokumentasi konfigurasi run-time untuk PHP Memcached di http://php. net/manual/en/memcached.configuration.phpmemcached.sess_consistent_hash
.
Hashing konsisten menggunakan .NET dengan Memcached
Klien ElastiCache Memcached .NET adalah pembungkus di sekitar Enyim Memcached. Secara default, hashing konsisten diaktifkan oleh klien Enyim Memcached.
Untuk informasi selengkapnya, lihat memcached/locator
dokumentasi di https://github.com/enyim/EnyimMemcached/wiki/MemcachedClient-Configuration# user-content-memcachedlocator