GNU/Linux >> Belajar Linux >  >> Linux

Panduan SRE untuk Memcached untuk membangun aplikasi yang dapat diskalakan

Memcached adalah sistem cache memori untuk tujuan umum. Artinya, ini dirancang untuk menyimpan (atau men-cache) jawaban atas pertanyaan yang membutuhkan waktu lama untuk dihitung atau diambil dan kemungkinan akan ditanya lagi . Kasus penggunaan yang umum adalah untuk mempercepat penggunaan database:misalnya, jika kita mengharapkan daftar "nama semua orang yang ada di tim X" berulang kali, kita mungkin meletakkan data ini di Memcached daripada menjalankan kueri SQL setiap waktu. (Catatan:Memcached kadang-kadang disebut sebagai "memcache." Kami akan tetap menggunakan nama lengkapnya di seluruh artikel ini.)

Cache berguna untuk membuat aplikasi dan infrastruktur yang skalabel, yang merupakan inti dari site reliability engineer (SRE). Artikel ini membahas apa yang diperlukan untuk mengoperasikan Memcached secara efektif.

Rekomendasi memori dan daemonisasi Memcached

Memcached berfungsi paling baik jika dibatasi pada jumlah memori yang tersedia di sistem:memcache akan mengusir data ketika membutuhkan lebih banyak ruang daripada batas memori. Beberapa ruang memori akan dibutuhkan untuk apa yang kita sebut "overhead"—memori yang dibutuhkan untuk operasi administratif Memcached, sistem operasi, dan proses tambahan.

Lebih Banyak Konten Hebat

  • Kursus online gratis:Ikhtisar teknis RHEL
  • Pelajari Perintah Linux Tingkat Lanjut
  • Unduh Lembar Cheat
  • Temukan Alternatif Sumber Terbuka
  • Baca Konten Linux Teratas
  • Lihat sumber daya sumber terbuka

Ini disetel melalui -m flag baris perintah, yang kemungkinan merupakan satu-satunya flag yang Anda perlukan untuk menjalankan Memcached. -d (daemonize) flag biasanya tidak berguna:pada sistem operasi modern berbasis systemd, Memcached tidak boleh melakukan daemonize sendiri. Demikian juga, jika Anda menjalankannya di bawah Docker, itu juga tidak akan melakukan daemonisasi dirinya sendiri.

Menjalankan Memcached dalam wadah tidak masalah, tetapi penting untuk mempertimbangkan apa lagi yang berjalan di host dan menyesuaikan kebutuhan memori dengan hati-hati.

Melihat data Memcached dengan statistik

Saat Anda menjalankan Memcached, sering kali merupakan ide yang baik untuk langsung terhubung dan bermain-main untuk melihat apa yang sedang terjadi. Ini cukup aman, bahkan dengan instans produksi, selama Anda sedikit berhati-hati.

Perintah paling aman untuk dijalankan adalah stats . Ini akan menyebabkan Memcached mengeluarkan sejumlah besar statistik dan detail yang seringkali berguna:

$ echo statistik | nc localhost 11211
...
STAT uptime 1346
...
STAT max_connections 1024
STAT curr_connections 2
STAT total_connections 6
STAT ditolak_koneksi 4
...
STAT get_hits 0
STAT get_misses 0
STAT get_expired 0
...
END

Statistik yang paling menarik biasanya adalah "hits", "misses", dan "expired". Ini sering kali dapat menceritakan kisah menarik tentang seberapa efektif cache itu. Jika efektivitas berkurang, hal ini perlu dikhawatirkan, karena dapat menurunkan kinerja aplikasi.

Satu hal yang sedikit kurang aman untuk dicoba adalah menyimpan dan mengambil. Ini adalah cara yang baik untuk "menendang ban" dan mempelajari cara kerjanya:

$ echo statistik | nc localhost 11211
setel kunci_saya 0 0 8
nilai_saya^M
DIsimpan
dapatkan kunci_saya
VALUE kunci_saya 0 8
nilai_saya
END

Setelah mengetik nilai_saya , Anda perlu mengirim akhiran baris bergaya DOS:return dan baris baru. Ini dilakukan di konsol Linux menggunakan Ctrl+V lalu menekan Enter , yang akan menampilkan pengembalian karakter (ASCII 13), lalu tekan Enter seperti biasa untuk menampilkan baris baru karakter (ASCII 10).

0 yang pertama adalah untuk "metadata", dan meneruskan 0 berarti tidak ada metadata yang menarik. Ini diperlakukan sebagai bitmask, jadi 0 memiliki semua bit dimatikan. 0 yang kedua adalah untuk waktu kedaluwarsa. Itu berarti "tidak kedaluwarsa." Secara umum, ini bagus untuk pengujian. Dalam pengaturan produksi, ada baiknya menyetel waktu kedaluwarsa untuk kunci.

Jika ini adalah contoh penting, harus berhati-hati untuk tidak menimpa kunci penting. Namun, kemampuan untuk menyimpan dan mengambil dengan cepat melalui baris perintah memungkinkan memastikan bahwa Memcached berjalan dengan benar.

Berbagi Memcached sebagai layanan

Perhatikan bahwa dalam pengaturan layanan mikro modern, banyak layanan ingin menyimpan data di Memcache, dan ada baiknya membuat strategi untuk mengelolanya. Salah satu opsinya adalah menjalankan Memcache, atau cluster, per layanan. Namun, ini seringkali rumit dan perawatannya tinggi. Seringkali, hal yang benar adalah memiliki layanan yang berbagi Memcache. Dalam hal ini, adalah ide yang baik untuk menerapkan beberapa kebijakan yang masuk akal; misalnya, mengamanatkan awalan nama layanan ke kunci. Ini memungkinkan memeriksa layanan mana yang menggunakan berapa banyak ruang dengan menggunakan cachedump perintah:

$ echo 'item statistik' | nc -w 1 localhost 11211|grep ':number '
Item STAT:1:number 2

Perintah ini akan menampilkan semua ID "slab". Memcache menyimpan kunci berukuran sama di slab; contoh ini hanya memiliki satu slab:

$ echo 'stats cachedump 1 1000' | nc -w 1 localhost 11211
ITEM my_key [8 b; 0 s]
ITEM foo [5 b; 0 detik]
AKHIR

Di sini, ada dua kunci:satu dengan nilai 8-byte dan satu lagi dengan nilai 5-byte.

Dalam skenario yang lebih realistis dengan banyak kunci, Anda mungkin ingin memproses data ini dengan awk atau skrip dan, dengan menggunakan konvensi lokal, cari tahu berapa banyak ruang yang digunakan setiap layanan.

Ini dapat diintegrasikan ke dalam sistem pemantauan, seperti Prometheus, untuk melacak perilaku dari waktu ke waktu.

Selain itu, karena banyak tim berbagi layanan yang sama, ini adalah pedoman yang berguna untuk menyarankan bahwa layanan mengenkripsi dan mengautentikasi data yang mereka cache. Enkripsi simetris pada CPU modern berkinerja baik, dan ini memungkinkan model keamanan yang lebih sederhana. Salah satu contoh library yang mendukung hal ini adalah Fernet kriptografi. (Beri tahu saya di komentar jika Anda ingin membaca lebih lanjut tentang ini.)

Kesimpulan

Memcached adalah teknologi open source yang umum untuk didukung oleh SRE. Dalam artikel ini, saya melihat cara menanyakan statistik umum tentangnya, menawarkan beberapa saran konfigurasi, dan menunjukkan cara membantu beberapa tim berbagi satu kluster Memcached dengan cara yang mudah dipantau dan aman. Apakah Anda memiliki pertanyaan lain tentang cara mengelola Memcached? Tanyakan di komentar, dan saya akan dengan senang hati membagikan lebih banyak tips.


Linux
  1. Panduan terminal Linux untuk pemula

  2. Cara mengemas aplikasi Python untuk Linux

  3. 3 pendekatan manajemen rahasia untuk aplikasi Flatpak

  1. 4 alat untuk membangun sistem Linux tertanam

  2. Panduan Bash For Loop dan Contohnya

  3. Apa Itu Linux? Panduan untuk Pengguna Non-teknis

  1. Menulis aplikasi Python, membangun lab Linux, dan tips lainnya untuk sysadmin

  2. Panduan Lengkap untuk Menggunakan AsciiDoc di Linux

  3. Instal MERN Stack untuk Aplikasi Berbasis JS di Ubuntu 20.04 - Panduan langkah demi langkah?