Jeffrey Cross
Jeffrey Cross

Memcached dan prestasi tinggi MySQL

Memcached adalah sistem caching objek yang diedarkan yang pada asalnya dibangunkan untuk meningkatkan prestasi LiveJournal dan kemudiannya digunakan sebagai strategi skala untuk beberapa laman beban tinggi. Ia berfungsi sebagai jadual hash besar dan sangat cepat yang boleh disebarkan di banyak pelayan dan diakses serentak dari pelbagai proses. Ia direka untuk digunakan untuk hampir apa-apa keperluan caching back-end, dan untuk aplikasi web berprestasi tinggi, ia adalah pelengkap yang hebat kepada pangkalan data seperti MySQL.

Dalam persekitaran yang biasa, pemaju web mungkin menggunakan kombinasi caching peringkat proses dan caching query terbina dalam MySQL untuk mengeluarkan sedikit tambahan prestasi daripada aplikasi. Masalahnya ialah caching dalam proses terhad kepada proses web yang dijalankan pada pelayan tunggal. Dalam konfigurasi beban yang seimbang, setiap pelayan mengekalkan cachenya sendiri, mengehadkan kecekapan dan saiz cache yang tersedia. Begitu juga, cache pertanyaan MySQL adalah terhad kepada pelayan bahawa proses MySQL sedang dijalankan. Cakera pertanyaan juga terhad kerana ia hanya boleh menghasilkan hasil baris cache. Dengan memcached anda boleh menyediakan pelayan cache nombor yang boleh menyimpan apa-apa jenis objek bersiri dan data ini boleh dikongsi oleh semua pelayan web loadbalanced. Percuma, tidak?

Untuk menyediakan pelayan memcached, anda mudah memuat turun daemon dan jalankan dengan beberapa parameter. Dari laman web memcached:

Pertama, anda memulakan daemon memcached pada seberapa banyak mesin ganti seperti yang anda ada.Daemon tidak mempunyai fail konfigurasi, hanya beberapa pilihan baris arahan, hanya 3 atau 4 yang mungkin anda gunakan:

# ./memcached -d -m 2048 -l 10.0.0.40 -p 11211

Ini bermula memcached sebagai daemon, menggunakan memori 2GB, dan mendengar pada IP 10.0.0.40, port 11211. Oleh kerana proses 32-bit hanya dapat menangani 4GB memori maya (biasanya lebih kurang, bergantung pada sistem operasi anda), jika anda mempunyai pelayan 32-bit dengan memori 4-64GB menggunakan PAE anda hanya boleh menjalankan pelbagai proses pada mesin, masing-masing menggunakan memori 2 atau 3GB.

Ini mengenai semudah itu. Tiada konfigurasi sebenar. Tiada pengesahan. Ia hanya jadual hash gigantor. Jelas sekali, anda akan menetapkan ini pada rangkaian yang tidak dapat ditangani secara peribadi. Dari situ, kerja pertanyaan dan pengemaskinian cache adalah sepenuhnya sehingga pereka aplikasi. Anda diberikan fungsi asas set, dapatkan, dan padam. Berikut adalah contoh mudah dalam PHP:

$ memcache = baru Memcache; $ memcache-> addServer ('10.0.0.40 ', 11211); $ memcache-> addServer ('10.0.0.41 ', 11211);

$ value = "Data untuk cache";

$ memcache-> set ('keykey ', $ value, 60); echo "Caching selama 60 saat: nilai $
“;

$ retrieved = $ memcache-> get ('thekey'); echo "Diperoleh: $ semula
“;

Pustaka PHP mengurus kerja kotor bersiri dengan apa-apa nilai yang anda lulus ke cache, jadi anda boleh menghantar dan mendapatkan array atau bahkan menyelesaikan data objek.

Dalam lapisan data aplikasi anda, bukannya memukul pangkalan data dengan segera, kini anda boleh memcached terlebih dahulu. Sekiranya item itu ditemui, tidak perlu memukul pangkalan data dan memasang objek data. Sekiranya kunci tidak ditemui, anda memilih data yang berkaitan dari pangkalan data dan menyimpan objek yang ditemui dalam cache. Begitu juga, anda mengemas kini cache apabila objek data anda diubah dan dikemas kini dalam pangkalan data. Dengan mengandaikan API anda berstruktur dengan baik, hanya beberapa suntingan yang perlu dibuat untuk secara dramatik mengubah skalabiliti dan prestasi permohonan anda.

Saya telah dikaitkan dengan beberapa sumber di bawah di mana anda boleh mendapatkan lebih banyak maklumat tentang menggunakan memcached dalam aplikasi anda. Sebagai tambahan kepada dokumentasi di laman web memcached, Todd Hoff telah menyusun senarai artikel mengenai memcached dan meringkaskan beberapa teknik prestasi memcached. Ia alat yang serba boleh. Bagi anda yang telah menggunakan memcached, berikan kami komen dan berkongsi petua dan tipuan anda.

Memcached Strategies untuk Menggunakan Memcached dan MySQL Lebih Baik Bersama Memcached dan tutorial MySQL (PDF)

Kongsi

Meninggalkan Komen