Praktik terbaik

Halaman ini menjelaskan praktik terbaik yang harus diikuti saat menggunakan Memorystore for Memcached.

Mendesain aplikasi untuk menangani cache yang tidak ditemukan

Anda harus mengikuti praktik terbaik desain cache standar dengan mendesain cache untuk menangani cache-miss dan ketidaktersediaan layanan. Lihat Perjanjian Tingkat Layanan untuk mengetahui informasi tentang komitmen Memorystore for Memcached terhadap waktu beroperasi.

Desain aplikasi Anda sehingga cache yang tidak ada dan periode nonaktif layanan sementara tidak menghentikan aplikasi Anda mengambil data dari database pokok yang didukung instance Memcached Anda.

Selain itu, jika Anda mengalami ketidaktersediaan ruang kunci, tunggu dan coba lagi menggunakan backoff eksponensial. Pastikan untuk menetapkan batas waktu setelah strategi percobaan ulang Anda dihentikan.

Menghubungkan ke node Memcached

Saat membuat kueri node Memcached dengan perintah seperti set, get, dan delete, Anda harus terhubung langsung ke alamat IP node. Anda dapat menjalankan perintah ini di endpoint Auto Discovery, tetapi hal ini tidak direkomendasikan karena menyebabkan penurunan performa untuk aplikasi Anda.

Sebaiknya gunakan layanan Penemuan Otomatis Memorystore for Memcached. Layanan ini mengotomatiskan pengelolaan alamat IP cluster saat menambahkan atau menghapus node dari cluster Anda. Untuk petunjuk cara menyiapkan penemuan otomatis untuk cluster Anda, lihat Menggunakan Layanan Penemuan Otomatis.

Mengonfigurasi parameter max-item-size dengan benar

Bagian ini menjelaskan cara terbaik untuk mengonfigurasi parameter max-item-size. Untuk mengetahui langkah-langkah dalam menyesuaikan parameter konfigurasi ini, lihat Mengonfigurasi instance Memcached. Untuk mengetahui daftar lengkap parameter konfigurasi Memcached yang tersedia, lihat Konfigurasi Memcached.

Nilai yang didukung dan nilai default

Untuk Memcached open source, nilai minimum untuk max-item-size adalah 1KiB, nilai maksimumnya adalah 1 GiB, dan nilai defaultnya adalah 1 MiB. Untuk Memorystore for Memcached, nilai minimumnya adalah 512 KiB, nilai maksimumnya adalah 128 MiB, dan nilai defaultnya adalah 1 MiB. Selain itu, nilai apa pun yang Anda tetapkan untuk konfigurasi ini harus dapat dibagi rata dengan 512 KiB.

Menyimpan entri dalam cache yang lebih besar dari max-item-size yang dikonfigurasi

Saat Anda mencoba meng-cache entri yang lebih besar dari max-item-size yang dikonfigurasi, Memcached akan gagal melakukan operasi dan menampilkan nilai salah. Jika memungkinkan, buat logika ke dalam aplikasi Anda untuk menampilkan error ini dari klien OSS Memcached sehingga Anda dapat men-debug-nya. Mencoba menyimpan entri dalam cache yang lebih besar dari max-item-size yang dikonfigurasi dapat menyebabkan latensi tinggi untuk instance Anda.

Menetapkan max-item-size ke nilai maksimum

Anda dapat menyelesaikan beberapa masalah dengan parameter max-item-size dengan menetapkannya ke nilai maksimum; namun, ini bukan praktik yang baik, jadi Anda tidak boleh menggunakan strategi ini dalam produksi. Manajemen memori Memcached didasarkan pada slab, dan menyimpan item yang lebih besar dari slab akan menyebabkan alokasi memori yang tidak efisien.

Menghindari masalah konfigurasi max-item-size

Pertama, cari tahu ukuran item maksimum yang diperlukan untuk cache Anda. Tetapkan max-item-size agar sedikit lebih besar dari ukuran item terbesar, sebagai margin keamanan.

Perhatikan bahwa ukuran nilai yang ditulis ke cache dapat berubah di aplikasi Anda dari waktu ke waktu. Selain itu, cluster dapat salah dikonfigurasi (misalnya, saat bermigrasi dari satu lingkungan ke lingkungan lain). Tindakan tambahan yang dapat Anda lakukan adalah memvalidasi ukuran item maksimum dalam aplikasi, sehingga permintaan ditolak jika aplikasi Anda mencoba menyimpan item dalam cache yang lebih besar dari setelan yang dikonfigurasi.

Cara menyeimbangkan cluster Memcached yang tidak seimbang

Cara cluster yang tidak seimbang terjadi, dan risiko terkait

Dalam beberapa kasus yang jarang terjadi, saat Anda membuat instance Memcached, node dapat didistribusikan secara tidak merata di seluruh zona dalam region. Hal ini terjadi saat zona tidak tersedia pada saat yang sama saat Anda menyediakan cluster.

Cluster yang tidak seimbang meningkatkan potensi kehilangan data karena node tidak didistribusikan secara merata. Cluster tidak otomatis melakukan penyeimbangan ulang saat zona yang nonaktif kembali online.

Cara menyeimbangkan ulang cluster

Anda dapat menyeimbangkan kembali cluster dengan meningkatkan jumlah node dalam cluster untuk sementara, lalu menskalakan jumlah node ke jumlah node asli. Tindakan penskalaan ke atas dan penskalaan ke bawah ini memungkinkan sistem Memorystore for Memcached mendistribusikan ulang node secara merata di seluruh zona yang tersedia.

Keberhasilan metode ini untuk menyeimbangkan kembali cluster Anda bergantung pada ketersediaan zona yang dimaksud. Google Cloud saat ini tidak mencantumkan zona yang tersedia/tidak tersedia, sehingga Anda hanya dapat mengetahui apakah zona sedang online jika node diseimbangkan dengan benar selama operasi penskalaan.

Praktik terbaik Cloud Monitoring

Untuk melacak performa cache dari waktu ke waktu, Anda harus menggunakan Cloud Monitoring untuk memantau beberapa metrik Memorystore untuk Memcached yang penting:

  • Penggunaan memori (memcache.googleapis.com/node/cache_memory)
  • Persentase penggunaan CPU (memcache.googleapis.com/node/cpu/utilization)

Melacak kedua metrik ini dari waktu ke waktu akan membantu Anda menentukan seberapa efisien cluster digunakan, dan apakah Anda harus mempertimbangkan untuk meningkatkan atau mengurangi ukuran cluster.

Misalnya, jika metrik menunjukkan bahwa penggunaan memori dan penggunaan CPU telah meningkat seiring waktu menjadi lebih dari 80%, ada kemungkinan tren ini akan berlanjut. Akibatnya, Anda dapat meningkatkan ukuran instance lebih awal sehingga cache memiliki ruang untuk menyimpan nilai baru saat persyaratan resource aplikasi meningkat.

Sebaiknya tetapkan pemberitahuan saat penggunaan memori dan penggunaan CPU mencapai 80%.

Atau, melacak metrik ini dari waktu ke waktu dapat menunjukkan bahwa Anda tidak menggunakan semua ruang dan resource CPU yang saat ini Anda miliki. Dalam hal ini, akan lebih hemat biaya jika Anda mengurangi ukuran cluster.

Langkah selanjutnya