Praktik terbaik

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

Merancang aplikasi Anda untuk menangani cache miss

Anda harus mengikuti praktik terbaik desain cache standar dengan mendesain cache untuk menangani cache yang tidak ditemukan dan layanan yang tidak tersedia. Lihat Perjanjian Tingkat Layanan untuk mengetahui informasi tentang komitmen Memorystore for Memcached terhadap waktu aktif.

Desain aplikasi Anda sehingga kegagalan cache dan waktu non-operasional layanan sementara tidak menghentikan aplikasi Anda mengambil data dari database pokok yang didukung oleh instance Memcached Anda.

Selain itu, jika Anda mengalami keyspace tidak tersedia, tunggu dan coba lagi menggunakan backoff eksponensial. Pastikan untuk menyetel batas waktu setelah itu strategi percobaan ulang Anda berhenti.

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 Discovery Otomatis, tetapi hal ini tidak direkomendasikan karena menyebabkan penurunan performa 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 mengetahui petunjuk tentang 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 langkah-langkah 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 maksimum adalah 1 GiB, dan nilai default adalah 1 MiB. Untuk Memorystore for Memcached, nilai minimum adalah 512 KiB, nilai maksimum adalah 128 MiB, dan nilai default adalah 1 MiB. Selain itu, setiap nilai yang Anda tetapkan untuk konfigurasi ini harus dapat dibagi rata dengan 512 KiB.

Meng-cache entri yang lebih besar dari max-item-size yang dikonfigurasi

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

Menyetel max-item-size ke nilai maksimum

Anda dapat menyelesaikan beberapa masalah dengan parameter max-item-size dengan menyetelnya ke nilai maksimum; namun, ini bukan praktik yang baik, jadi Anda tidak boleh menggunakan strategi ini dalam produksi. Pengelolaan 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, tentukan ukuran item maksimum yang diperlukan untuk cache Anda. Tetapkan max-item-size agar sedikit lebih besar daripada ukuran item terbesar, sebagai margin keamanan.

Perhatikan bahwa ukuran nilai yang ditulis ke cache Anda dapat berubah di aplikasi Anda seiring 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 di aplikasi Anda, sehingga permintaan ditolak jika aplikasi Anda mencoba menyimpan dalam cache item yang lebih besar dari setelan yang dikonfigurasi.

Cara menyeimbangkan cluster Memcached yang tidak seimbang

Cara terjadinya cluster yang tidak seimbang, dan risiko terkait

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

Kluster yang tidak seimbang meningkatkan potensi kehilangan data karena node tidak didistribusikan secara merata. Cluster tidak otomatis menyeimbangkan kembali saat zona yang tidak aktif kembali online.

Cara menyeimbangkan ulang cluster

Anda dapat menyeimbangkan kembali cluster dengan meningkatkan jumlah node dalam cluster untuk sementara, lalu menurunkan skala jumlah node ke jumlah node awal. Tindakan peningkatan dan penurunan skala ini memungkinkan sistem Memorystore for Memcached mendistribusikan ulang node secara merata di seluruh zona yang tersedia.

Keberhasilan metode ini untuk menyeimbangkan ulang 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 tersebut online jika node diseimbangkan dengan benar selama operasi penskalaan.

Praktik terbaik Cloud Monitoring

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

  • 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 Anda digunakan, dan apakah Anda harus mempertimbangkan untuk menambah atau mengurangi ukuran cluster Anda.

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

Sebaiknya Anda menyetel pemberitahuan jika penggunaan memori dan CPU Anda mencapai 80%.

Atau, pelacakan 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 berikutnya