Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 11633|Jawab: 0

Penyeimbangan beban, penangguhan sesi, sinkronisasi sesi

[Salin tautan]
Diposting pada 14/05/2015 00.16.44 | | |


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;




Mantan:Sekolah kami sangat kaya
Depan:Musim Kelulusan Tunjukkan foto kelulusan dan foto kelas Anda!
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com