Sohbet Etkileşimli bir sistemle iletişim kuran bir terminal kullanıcısının sürecini ifade eder Örneğin, işletim sistemine girme işlemi hesap şifresinden işletim sisteminden çıkmaya kadar olan süreç bir oturum sürecidir. Görüşmeler çoğunlukla ağ üzerinde kullanılır.TCP'nin üç yönlü el sıkışması bir oturum oluşturur ve TCP oturumu kapatmak için bağlantıyı kapatır.
Http protokolü durumsuz bir protokoldür, bu nedenle Oturum, toplantı, celse Oturum açma durumu, ortak bilgiler vb. Gibi kullanıcının durumunu kaydetme mekanizması.
Oturum, toplantı, celse Birden çok sayfa arasında gerçekleştirilebilen bir oturumun ilgili bilgilerini kaydetmek için kullanılır paylaşılan Bu veriler.
Örneğin: Taobao'yu açarsınız ve kişisel hesabınıza giriş yaparsınız.Çok sayıda mağazaya göz atsanız ve sayfa değiştirseniz bile, kullanıcı adı aynı kalır.Bu, Oturum'un işlevidir. Tarayıcıyı kapatana ve Oturum yok edilene kadar, önceki oturum açma kayıtları silinecektir.
Bugün sizinle paylaşın " Nginx + tomcat, yük dengeleme oturumu bekletmeyi gerçekleştirir "Bunun amacı şudur: Web sitesinin bir yük düğümü kapatırsa, istek yeni düğüme tahsis edilir Oturum aynı zamanda oturum tutmayı sağlamak için senkronize edilir ve böylece kullanıcıların Algı yok Göz atmanın.
Nginx yapılandırması
Test ortamında, tek bir sunucu, biri 8080 bağlantı noktasına, diğeri 8090 bağlantı noktasına karşılık gelen iki tomcat açtı.
TomcatA TomcatB oluşturun, sırasıyla tomcat server.xml'yi yapılandırın
Aşağıdaki içeriği Motora kopyalayın
< Motor adı = "Catalina" defaultHost = "localhost" >Bu modülü ekleyin:
< Küme className = "org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions = "8" > < Yönetici className = "org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown = "false" notifyListenersOnReplication = "true" / > < Kanal className = "org.apache.catalina.tribes.group.GroupChannel" > < Üyelik className = "org.apache.catalina.tribes.membership.McastService" adres = "228.0.0.4" bağlantı noktası = "45564" frekans = "500" dropTime = "3000" / > < Alıcı className = "org.apache.catalina.tribes.transport.nio.NioReceiver" adres = "192.168.224.145" bağlantı noktası = "4001" autoBind = "100" selectorTimeout = "5000" maxThreads = "6" / > < Gönderen className = "org.apache.catalina.tribes.transport.ReplicationTransmitter" > < Taşıma className = "org.apache.catalina.tribes.transport.nio.PooledParallelSender" / > < /Gönderen > < Interceptor className = "org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" / > < Interceptor className = "org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" / > < /Kanal > < Valve className = "org.apache.catalina.ha.tcp.ReplicationValve" filter = "" / > < Valve className = "org.apache.catalina.ha.session.JvmRouteBinderValve" / > < Deployer className = "org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir = "/ tmp / war-temp /" deployDir = "/ tmp / war-deploy /" watchDir = "/ tmp / war-listen /" watchEnabled = "false" / > < ClusterListener className = "org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener" / > < ClusterListener className = "org.apache.catalina.ha.session.ClusterSessionListener" / > < /Küme >Uyarılar:
1. sınıf adı, tomcat kümesinin bilgi aktarımı için hangi sınıfı kullanacağını yapılandırır
2. Yönetici, kümenin oturum bilgilerinin nasıl yönetileceğine karar verir
3. Kanal, Tomcat düğümleri arasındaki iletişim için bir araçtır.
4. Üyelik, kümedeki mevcut düğümlerin bir listesini tutar. Yeni düğümleri ve düşen düğümleri tespit etmek için kullanılır
5. Alıcı: Alıcı
Bağlantı noktası 4000 ve autoBind 100 ise, alıcı izleme için 4000-4099 arasında bir bağlantı noktası alacaktır.
6. gönderen: Gönderen, mesajın gönderilmesinden sorumludur
< Interceptor className = "org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" / > < Interceptor className = "org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" / > < /Kanal >7. Vana: filtre
8. Dağıtıcı: Küme altındaki tüm düğümlerin tutarlılığını senkronize edin
9. ClusterListener: Cluster bileşeni tarafından alınan mesajları izleyen Listener.DeltaManager kullanılırken, Cluster tarafından alınan bilgiler, ClusterSessionListener aracılığıyla DeltaManager'a iletilir.
Web.xml'yi yapılandırın
Web kapsayıcısına projenin dağıtılmış bir proje olduğunu söylemek için web.xml'de öznitelikler ekleyin
< dağıtılabilir/ > Web projesi WEB-INF dizinine etiketler ekleyinwebapps / ROOT / index.jsp Oturum kimliğini almak için bir test sayfası oluşturun
tomcatA < % @ page language = "java"% > < html > < baş > < Başlık > TomcatA < /Başlık > < / kafa > < vücut > < h1 > < yazı tipi rengi = "kırmızı" > TomcatA < /yazı tipi > < / h1 > < table align = "center" border = "1" > < tr > < td > Oturum kimliği < / td > < % session.setAttribute ("TomcatA", "TomcatA");% > < td > < % = session.getId ()% > < / td > < / tr > < tr > < td > Tarihinde oluşturuldu < / td > < td > < % = session.getCreationTime ()% > < / td > < / tr > < / tablo > < /vücut > < / html > tomcatB < % @ page language = "java"% > < html > < baş > < Başlık > TomcatB < /Başlık > < / kafa > < vücut > < h1 > < yazı tipi rengi = "kırmızı" > TomcatB < /yazı tipi > < / h1 > < table align = "center" border = "1" > < tr > < td > Oturum kimliği < / td > < % session.setAttribute ("TomcatB", "TomcatB");% > < td > < % = session.getId ()% > < / td > < / tr > < tr > < td > Tarihinde oluşturuldu < / td > < td > < % = session.getCreationTime ()% > < / td > < / tr > < / tablo > < /vücut > < / html >Tarayıcı erişim doğrulaması
Tomcat'te oturum tutmayı sağlamanın pek çok yolu vardır Burada yalnızca Manager nesnesinin uygulaması tanıtılmıştır.Avantajı, oturum saklama yapılandırmasını elde etmek için tomcat'in kendi küme oturumu çoğaltmasını kullanmanın uygun olmasıdır. Dezavantajı, Alibaba Cloud ECS gibi çok noktaya yayını desteklemiyorsa bu şekilde uygulanamamasıdır. . Oturum oturumlarını saklamak için memcache veya redis de kullanabilirsiniz, ancak bunun için tomcat sürümüne karşılık gelen memcache jar paketinin indirilmesi gerekir.