1. Yük dengeleme nedir? Yeni bir web sitesi yükleme dengesi olmamalı, çünkü trafik hacmi büyük değil, bu yüzden bu tür şeylere dahil olmaya gerek yok. Ancak, web sitesi trafiği ve trafiğinin hızla artmasıyla birlikte, tek bir sunucu kendi donanım koşullarıyla sınırlıdır ve bu kadar büyük ziyarete dayanmak zordur. Bu durumda, seçebileceğiniz iki seçenek vardır: 1. Tek bir sunucunun donanımını iki çekirdekten dört çekirdekliye güncelleyin, belleği artırın, vb. 2. Sunucuların yükünü paylaşmak için sunucu sayısını artırın. Ağ bant genişliğini artırmak ve sunucunun işlem gücünü artırmak amacına ulaşmak için. İlk yöntem, her zaman sınırlı olan dikey gelişim olarak anlaşılabilir. İkinci yöntem, problemi çözmek için doğru seçimdir Yük dengeleme yöntemleri iki yöne ayrılabilir: biri yük dengelemesini sağlamak için yazılım kullanmak, diğeri ise donanım yük dengelemesini (donanım ve yazılımın birleştirilmesini dahil) uygulamaktır Yük dengelemesini sağlamak için yazılım kullanın ve yük dengeleme süreci de sistem kaynaklarını tüketir ve tepki süresini artırır. Örneğin, LVS, nginx, haproxy, apache vb. gibi bu uygulama tabanlı yük dengeleme yazılımları, özellikle çok fazla ziyaret yapılmayan web siteleri için uygundur. Sina ve 163 gibi çok sayıda ziyarete sahip bir web siteniz varsa, donanım kullanarak yük dengelemesini uygulamak en bariz seçimdir. Birçok yük dengeleme algoritması vardır; bunlar arasında istek sayısına dayalı yük dengeleme, kök IP adresleri ve trafik tabanlı algoritmalar bulunur. Sıkça kullandığım iki algoritma var. Bunlardan biri istek sayısına dayanır A, her sunucunun müşterinin isteğini eşit şekilde paylaşabileceğini fark edebilir ve sunuculardan biri kapanırsa kötü bir etki yaratmaz. b. Sunucular arasındaki durum, örneğin oturum gibi, senkronize edilmeli ve bu durumları senkronize etmek için başka yöntemler gereklidir. Biri IP A, ip_hash algoritması, bir IP'yi sunucuya eşleyebilir ve bu da oturum senkronizasyonu sorununu çözebilir b. ip_hash kötü yanı, sunuculardan biri kapanırsa, bu sunucuya eşlenen kullanıcıların depresyona girmesi. c, ip_hash kolayca dengesiz yüke yol açabilir, şimdi nehir yengeci hükümeti Google'ın arama anahtar kelimelerini filtreliyor, Google'ın açılmadığını sık sık göreceksiniz, ama bir süre sonra sorun yoluna girmez. Bu durum Google meraklılarını depresyona düşürdü ve birçok kullanıcı ajans bulmak için yurtdışına çıktı. Eğer böyle bir şey olursa, bu proxy'ler aynı sunucuya atanır ve dengesiz yük ve hatta arızaya yol açar.
İkincisi, oturum tutma nedir ve işlevi nedir Oturum tutma, aynı kullanıcıya ait erişim taleplerinin aynı sunucuya dağıtılmasını sağlayan yük dengeleyici üzerindeki bir mekanizmayı ifade eder. Oturum tutma ne yapar, bir örnek ver Bir kullanıcı erişim talebi sunucu A'ya atanıyorsa ve A sunucusuna giriş yaparsa ve kısa sürede bu kullanıcı başka bir istek gönderirse, oturum tutma fonksiyonu yoksa bu kullanıcının isteği muhtemelen sunucu B'ye atanır, şu anda sunucu B'de giriş yoktur, yani tekrar giriş yapmanız gerekir, ancak kullanıcı isteğinin nereye atandığını bilmiyor, kullanıcının hissi giriş yapmış gibi, neden tekrar giriş yapmak zorunda, kullanıcı deneyimi çok kötü. Ve Taobao'da bir şey satın alırsanız, login = "Shoot something=" add address = "to pay" bu bir dizi işlemdir ve aynı zamanda bir işlem süreci olarak da anlaşılabilir, tüm bu işlem serisi tek bir sunucu tarafından tamamlanmalı, yük dengeleyici tarafından farklı sunuculara atalamamalıdır. Oturum tutma süresi sınırlıdır (sabit bir sunucuya eşlenmiş sunucular hariç, örneğin ip_hash), ve çeşitli yük dengeleme araçları bu oturum tutma süresi ayarı, LVS, apache vb. sağlar. PHP dili bile oturum bekleme süresini ayarlamak için bir session.gc_maxlifetime sağlar Oturum tutma süresi, oturum hayatta kalma süresinden daha fazla ayarlanmalıdır, bu da seansların senkronize edilmesi ihtiyacını azaltabilir, ancak ortadan kaldırılamaz. Yani oturumları senkronize etmek hâlâ yapılmalı.
Üçüncüsü, oturum senkronizasyonu Seans senkronizasyonu, oturum tutma hakkında konuşurken bahsedildi. Daha fazla bilgi için, bkz. Bir Web Kümesinde Oturum Senkronizasyonu Üç Yöntemi
Bir web kümesinde oturum senkronizasyonu için üç yöntem vardır
Bir web kümesi yaptıktan sonra kesinlikle önce oturum senkronizasyonunu düşüneceksiniz, çünkü yük dengelemesinden sonra aynı sayfaya aynı IP erişimi farklı sunuculara atanacaktır. Bu makale, bu duruma göre bu problemi çözmek için üç farklı yol sunuyor: Öncelikle, oturumu senkronize etmek için veritabanını kullanın Çoklu sunuculu oturum senkronizasyonu yaparken bu yöntemi kullanmadım, ama bu yöntemi kullanmak zorunda kalsam iki yöntem düşündüm: 1. Web sunucusunun oturumunu depolamak için düşük seviyeli bir bilgisayar kullanarak veya dosya sunucusunda bu özel veritabanını oluşturun; kullanıcı web sunucusuna eriştiğinde, oturum senkronizasyonu amacına ulaşmak için oturum durumunu kontrol etmek için bu özel veritabanına gider. 2. Bu yöntem, oturumun saklandığı tabloyu diğer veritabanı tablolarıyla birlikte koymaktır; eğer mysql de kümelenmişse, her mysql düğümünün bu tabloya sahip olması gerekir ve bu oturum tablosunun veri tablosu gerçek zamanlı olarak senkronize edilmelidir. Açıklama: Veritabanını oturumları senkronize etmek için kullanmak, veritabanının üzerindeki yükü artırır ve bu durum doğası gereği darboğazlara yatkındır. Yukarıdaki iki yöntemden ilki daha iyidir; oturumun yerleştirildiği tabloyu bağımsız olarak ayırır ve gerçek veritabanına olan yükü azaltır 2. Oturumları senkronize etmek için çerezler kullanın oturum, sunucu tarafında dosya durumu, cookie ise istemcide dosya durumudur, senkronizasyon nasıl sağlanır? Yöntem çok basittir; yani kullanıcının ziyaret sayfası tarafından oluşturulan oturumu çereze içine koymak, yani çerezi bir aktarma istasyonu olarak kullanmak. Web sunucusu A'yı ziyaret edersiniz, bir oturum oluşturur ve çereze koyarsınız, erişiminiz web sunucusu B'ye atanır, bu sırada web sunucusu B önce sunucunun bu oturuma sahip olup olmadığını değerlendirir, yoksa istemcinin çerezinde bu oturum olup olmadığını kontrol edersiniz, eğer yoksa, oturum gerçekten kaydedilmemiş demektir, eğer çerezde bir oturum varsa, Çerezdeki sessoin'i web sunucusu B ile senkronize edin ki oturum senkronize edilebilsin. Not: Bu yöntem uygulaması basit ve kullanışlıdır ve veritabanına yük artırmaz, ancak istemci çerezleri devre dışı bırakırsa, oturum senkronize edilemez ve bu da web sitesine zarar verir; Çerezler çok güvenli değildir ve şifrelenmiş olmalarına rağmen yine de sahte yapılabilirler.
3. Oturumları senkronize etmek için memcache kullanın Memcache dağıtılabilir ve bu fonksiyon olmadan oturum senkronizasyonu için kullanılamaz. Web sunucusındaki belleği birleştirerek bir "mempool" oluşturabilir, hangi sunucu sessoin üretirse üretsin, bu "mempool"a konabiliyor ve geri kalan her şey kullanılabilir. Avantajlar: Oturumları bu şekilde senkronize etmek veritabanı üzerindeki yükü artırmaz, güvenlik çerezlere kıyasla büyük ölçüde iyileştirilir ve oturumları hafızaya yerleştirmek, dosyalardan okumaya göre çok daha hızlıdır. Dezavantajlar: memcache belleği birçok depolama bloğu spesifikasyonuna böler, bloklar ve boyutlar vardır; bu yöntem ayrıca memcache'in tam olarak belleği kullanamadığını, bellek parçalanmasına yol açacağını ve depolama bloğu yetersizse bellek taşmasına da yol açtığını belirler.
Dördüncüsü, özet Yukarıdaki üç yöntemin tamamı uygulanabilir Sistemin hızını en çok etkileyen ilk yöntem önerilmez; İkinci yöntem iyi sonuçlar veriyor, ancak güvenlik riskleri aynıdır; Üçüncü yöntem, şahsen üçüncü yöntemin en iyisi olduğunu düşünüyorum, herkese kullanmasını tavsiye ederim;
|