1. Apa itu penyeimbangan beban Situs web baru tidak boleh seimbang beban, karena volume lalu lintasnya tidak besar, jadi tidak perlu terlibat dalam hal-hal ini. Namun, dengan pertumbuhan lalu lintas dan lalu lintas situs web yang pesat, satu server dibatasi oleh kondisi perangkat kerasnya sendiri, dan sulit untuk menahan jumlah kunjungan yang begitu besar. Dalam hal ini, ada dua opsi untuk dipilih: 1. Perbarui perangkat keras dari satu server, dari dual-core ke quad-core, tingkatkan memori, dll. 2. Menambah jumlah server untuk berbagi beban server. Untuk mencapai tujuan meningkatkan bandwidth jaringan dan meningkatkan daya pemrosesan server. Metode pertama dapat dipahami sebagai pengembangan vertikal, yang selalu terbatas. Metode kedua adalah pilihan yang tepat untuk menyelesaikan masalah Metode penyeimbangan beban dapat dibagi menjadi dua arah, satu adalah menggunakan perangkat lunak untuk mencapai penyeimbangan beban, dan yang lainnya adalah menerapkan penyeimbangan beban perangkat keras (termasuk menggabungkan perangkat keras dan perangkat lunak) Gunakan perangkat lunak untuk mencapai penyeimbangan beban, dan proses pencapaian penyeimbangan beban juga menghabiskan beberapa sumber daya sistem dan meningkatkan waktu respons. Misalnya, LVS, nginx, haproxy, apache, dll., Perangkat lunak penyeimbang beban berbasis aplikasi ini cocok untuk situs web yang tidak memiliki jumlah kunjungan yang sangat banyak. Jika Anda memiliki situs web dengan jumlah kunjungan yang besar seperti sina dan 163, menggunakan perangkat keras untuk menerapkan penyeimbangan beban adalah pilihan yang paling jelas. Ada banyak algoritme penyeimbangan beban, termasuk penyeimbangan beban berdasarkan jumlah permintaan, alamat IP root, dan algoritme berbasis lalu lintas. Ada dua algoritma yang sering saya gunakan. Salah satunya didasarkan pada jumlah permintaan A, dapat menyadari bahwa setiap server dapat membagikan permintaan pelanggan secara merata, dan jika salah satu server turun, itu tidak akan menimbulkan dampak buruk. b. Status antar server harus disinkronkan, seperti sesi, dan cara lain diperlukan untuk menyinkronkan status ini. Salah satunya menurut IP A, algoritma ip_hash dapat memetakan IP ke server, yang dapat memecahkan masalah sinkronisasi sesi b. Hal buruk tentang ip_hash adalah jika salah satu server turun, pengguna yang dipetakan ke server ini akan tertekan. c, ip_hash dapat dengan mudah menyebabkan beban yang tidak seimbang, sekarang pemerintah kepiting sungai menyaring kata kunci pencarian Google, Anda akan sering menemukan bahwa Google tidak dapat membuka, tetapi akan baik-baik saja setelah beberapa saat. Hal ini membuat para penggemar Google itu tertekan, dan banyak pengguna pergi ke luar negeri untuk mencari agen. Jika ini terjadi, proxy ini akan ditetapkan ke server yang sama, menyebabkan beban yang tidak seimbang dan bahkan kegagalan.
Kedua, apa itu sesi holding dan apa fungsinya Penangguhan sesi mengacu pada mekanisme pada penyeimbang beban yang memastikan bahwa permintaan akses yang terkait dengan pengguna yang sama didistribusikan ke server yang sama saat melakukan penyeimbangan beban. Apa yang dilakukan sesi hold, berikan contoh Jika permintaan akses pengguna ditetapkan ke server A, dan masuk ke server A, dan dalam waktu singkat, pengguna ini mengirimkan permintaan lain, jika tidak ada fungsi penahanan sesi, permintaan pengguna ini kemungkinan besar akan ditetapkan ke server B, saat ini tidak ada login di server B, jadi Anda harus masuk lagi, tetapi pengguna tidak tahu di mana permintaannya ditetapkan, perasaan pengguna adalah dia masuk, mengapa dia harus masuk lagi, pengalaman pengguna sangat buruk. Dan jika Anda membeli sesuatu di Taobao, dari login = "Tembak sesuatu=" tambahkan alamat = "membayar", ini adalah serangkaian proses, yang juga dapat dipahami sebagai proses operasi, semua rangkaian proses operasi ini harus diselesaikan oleh satu server, dan tidak dapat ditetapkan ke server yang berbeda oleh penyeimbang beban. Penahanan sesi memiliki batas waktu (kecuali untuk server yang dipetakan ke server tetap, seperti ip_hash), dan berbagai alat penyeimbangan beban akan menyediakan pengaturan waktu penahanan sesi ini, LVS, apache, dll. Bahkan bahasa PHP memberikan session.gc_maxlifetime untuk mengatur waktu tahan sesi Waktu penahanan sesi harus diatur lebih dari waktu bertahan hidup sesi, yang dapat mengurangi kebutuhan untuk menyinkronkan sesi, tetapi tidak dapat dihilangkan. Jadi sinkronisasi sesi masih perlu dilakukan.
Ketiga, sinkronisasi sesi Mengapa sinkronisasi sesi, telah disebutkan ketika berbicara tentang pemeliharaan sesi. Untuk informasi selengkapnya, lihat Tiga Metode Sinkronisasi Sesi dalam Kluster Web
Ada tiga metode sinkronisasi sesi dalam klaster web
Setelah melakukan web cluster, Anda pasti akan mempertimbangkan sinkronisasi sesi terlebih dahulu, karena setelah load balancing, akses IP yang sama ke halaman yang sama akan ditetapkan ke server yang berbeda. Jadi artikel ini memberikan tiga cara berbeda untuk mengatasi masalah ini sesuai dengan situasi ini: Pertama, gunakan database untuk menyinkronkan sesi Saya tidak menggunakan metode ini saat melakukan sinkronisasi sesi multi-server, tetapi jika saya harus menggunakan metode ini, saya memikirkan dua metode: 1. Gunakan komputer kelas bawah untuk membangun database untuk menyimpan sesi server web, atau bangun database khusus ini di server file, ketika pengguna mengakses server web, ia akan pergi ke database khusus ini untuk memeriksa situasi sesi untuk mencapai tujuan sinkronisasi sesi. 2. Metode ini adalah untuk menempatkan tabel tempat sesi disimpan bersama dengan tabel database lainnya, jika mysql juga dikelompokkan, setiap node mysql harus memiliki tabel ini, dan tabel data tabel sesi ini harus disinkronkan secara real time. Penjelasan: Menggunakan database untuk menyinkronkan sesi akan meningkatkan beban pada database, yang secara inheren rentan terhadap kemacetan. Yang pertama dari dua metode di atas lebih baik, yang memisahkan tabel tempat sesi ditempatkan secara independen, mengurangi beban pada database nyata 2. Gunakan cookie untuk menyinkronkan sesi sesi adalah situasi file yang disimpan di sisi server, dan cookie adalah situasi file pada klien, bagaimana cara mencapai sinkronisasi? Metodenya sangat sederhana, yaitu memasukkan sesi yang dihasilkan oleh halaman kunjungan pengguna ke dalam cookie, yaitu menggunakan cookie sebagai stasiun relai. Anda mengunjungi server web A, membuat sesi dan memasukkannya ke dalam cookie, akses Anda ditetapkan ke server web B, saat ini, server web B terlebih dahulu menilai apakah server memiliki sesi ini, jika tidak, pergi untuk melihat apakah ada sesi ini di cookie klien, jika tidak, itu berarti sesi tersebut benar-benar tidak disimpan, jika ada di cookie, Sinkronkan sessoin dalam cookie ke server web B, sehingga sesi dapat disinkronkan. Catatan: Metode ini sederhana dan nyaman untuk diterapkan, dan tidak akan menambah beban pada database, tetapi jika klien menonaktifkan cookie, maka sesi tidak dapat disinkronkan, yang akan membawa kerugian ke situs web; Cookie tidak terlalu aman, dan meskipun telah dienkripsi, cookie masih dapat dipalsukan.
3. Gunakan memcache untuk menyinkronkan sesi Memcache dapat didistribusikan, dan tanpa fungsi ini, tidak dapat digunakan untuk sinkronisasi sesi. Dia dapat menggabungkan memori di server web untuk menjadi "mempool", tidak peduli server mana yang menghasilkan sessoin, itu dapat dimasukkan ke dalam "mempool" ini, dan yang lainnya dapat digunakan. Keuntungan: menyinkronkan sesi dengan cara ini tidak meningkatkan beban pada database, dan keamanannya sangat meningkat dibandingkan dengan menggunakan cookie, dan menempatkan sesi dalam memori jauh lebih cepat daripada membaca dari file. Kekurangan: memcache membagi memori menjadi banyak spesifikasi blok penyimpanan, ada blok dan ukuran, cara ini juga menentukan, memcache tidak dapat memanfaatkan memori sepenuhnya, akan menghasilkan fragmentasi memori, jika blok penyimpanan tidak mencukupi, itu juga akan menghasilkan luapan memori.
Keempat, ringkasan Ketiga metode di atas layak Metode pertama, yang paling memengaruhi kecepatan sistem, tidak disarankan; Metode kedua memiliki hasil yang baik, tetapi bahaya keselamatannya sama; Metode ketiga, saya pribadi berpikir metode ketiga adalah yang terbaik, saya sarankan semua orang untuk menggunakannya;
|