끈적 끈적하고 비 스틱 세션
끈적 끈적한 세션과 끈적 거리지 않은 세션의 차이점을 알고 싶습니다. 인터넷에서 읽은 후 이해 한 내용 :
고정 : 단일 세션 개체 만 있습니다.
고정되지 않은 세션 : 각 서버 노드에 대한 세션 객체
웹 사이트가 하나의 웹 서버에서만 제공 될 때 각 클라이언트-서버 쌍에 대해 세션 개체가 만들어지고 웹 서버의 메모리에 남아 있습니다. 클라이언트의 모든 요청은이 웹 서버로 이동하여이 세션 객체를 업데이트합니다. 상호 작용 기간 동안 일부 데이터를 세션 오브젝트에 저장해야하는 경우이 데이터는이 세션 오브젝트에 저장되며 세션이 존재하는 한 계속 유지됩니다.
그러나로드 밸런서 뒤에있는 여러 웹 서버에서 웹 사이트를 제공하는 경우로드 밸런서는 각 요청에 대한 실제 (물리적) 웹 서버를 결정합니다. 예를 들어,로드 밸런서 뒤에 3 개의 웹 서버 A, B 및 C가있는 경우 www.mywebsite.com/index.jsp는 서버 A에서 제공 될 수 있습니다. www.mywebsite.com/login.jsp는 서버 B와 www.mywebsite.com/accoutdetails.php는 서버 C에서 제공됩니다.
이제 (물리적으로) 3 개의 서로 다른 서버에서 요청이 제공되는 경우 각 서버는 사용자를 위해 세션 객체를 생성했으며이 세션 객체는 3 개의 독립적 인 상자에 있기 때문에 세션 객체에 무엇이 있는지 알 수있는 직접적인 방법은 없습니다. 다른 사람의. 이러한 서버 세션간에 동기화하기 위해 세션 데이터를 DB와 같이 모두에게 공통적 인 계층에 쓰거나 읽어야 할 수 있습니다. 이제이 사용 사례에 대해 DB에 데이터를 쓰고 DB에서 데이터를 읽는 것은 좋은 생각이 아닙니다. 이제 여기 sticky-session 의 역할이 있습니다.
로드 밸런서가 고정 세션을 사용하도록 지시받은 경우 다른 서버가 있더라도 모든 실제 상호 작용은 동일한 물리적 서버와 이루어집니다. 따라서이 웹 사이트와의 전체 상호 작용에 걸쳐 세션 개체가 동일합니다.
요약하면, Sticky Sessions의 경우 모든 요청이 동일한 실제 웹 서버로 보내지는 반면, Sticky가 아닌로드 밸런서의 경우 요청을 처리 할 웹 서버를 선택할 수 있습니다.
예를 들어 Amazon의 Elastic Load Balancer 및 고정 세션에 대한 내용은 여기 ( http://aws.typepad.com/aws/2010/04/new-elastic-load-balancing-feature-sticky-sessions.html)를 참조 하십시오.
자세한 내용은 https://stackoverflow.com/a/11045462/592477 에서 답변을 작성했습니다.
또는 거기에서 읽을 수 있습니다 ==>
로드 밸런싱을 사용하면 여러 Tomcat 인스턴스가 있고로드를 분할해야 함을 의미합니다.
- 고정 세션없이 세션 복제를 사용하는 경우 : 웹 앱을 사용하는 사용자가 한 명이고 Tomcat 인스턴스가 3 개 있다고 가정하십시오. 이 사용자는 앱에 여러 요청을 보낸 다음로드 밸런서는 이러한 요청 중 일부를 첫 번째 tomcat 인스턴스로 보내고이 요청 중 일부는 두 번째 인스턴스로 보내고 다른 하나는 세 번째 인스턴스로 보냅니다.
- 복제없이 고정 세션을 사용하는 경우 :웹 앱을 사용하는 사용자가 한 명이고 톰캣 인스턴스가 3 명 있다고 가정합니다. 이 사용자는 여러 요청을 앱에 전송 한 다음로드 밸런서는 첫 번째 사용자 요청을 3 개의 tomcat 인스턴스 중 하나로 보내고 세션 동안이 사용자가 보낸 다른 모든 요청은 동일한 tomcat 인스턴스로 전송됩니다. 이러한 요청 중에이 Tomcat 인스턴스 (사용 된 Tomcat 인스턴스)를 종료하거나 다시 시작하면로드 밸런서는 나머지 요청을 여전히 실행중인 다른 Tomcat 인스턴스로 전송하지만 세션 복제를 사용하지 않는 다른 Tomcat 인스턴스는 수신합니다. 나머지 요청에는 사용자 세션의 사본이 없으므로이 Tomcat의 경우 사용자가 세션을 시작합니다. 사용자가 세션을 느슨하게하고 웹 앱이 여전히 실행 중이지만 웹 앱과 연결이 끊어졌습니다.
- 고정 세션 WITH 세션 복제를 사용하는 경우 :웹 앱을 사용하는 사용자가 한 명이고 톰캣 인스턴스가 3 명 있다고 가정합니다. 이 사용자는 여러 요청을 앱에 전송 한 다음로드 밸런서는 첫 번째 사용자 요청을 3 개의 tomcat 인스턴스 중 하나로 보내고 세션 동안이 사용자가 보낸 다른 모든 요청은 동일한 tomcat 인스턴스로 전송됩니다. 이러한 요청 중에이 Tomcat 인스턴스 (사용 된 Tomcat 인스턴스)를 종료하거나 다시 시작하면로드 밸런서는 세션 복제를 사용할 때 나머지 요청을 여전히 실행중인 다른 Tomcat 인스턴스로 보냅니다. 나머지 요청을 수신하는 인스턴스 Tomcat은 사용자 세션의 사본은 사용자가 세션을 유지합니다. 사용자는 연결을 끊지 않고 웹 앱을 계속 탐색하며 Tomcat 인스턴스의 종료는 사용자 탐색에 영향을 미치지 않습니다.
참고 URL : https://stackoverflow.com/questions/10494431/sticky-and-non-sticky-sessions
'IT story' 카테고리의 다른 글
명령 행을 사용하여 postgres 백업 파일을 복원 하시겠습니까? (0) | 2020.04.18 |
---|---|
Bash의 간단한 논리 연산자 (0) | 2020.04.18 |
Servlet 3.0 API에 대한 Maven 종속성? (0) | 2020.04.18 |
Visual Studio Code에 빠른 변경 탭 기능이 있습니까? (0) | 2020.04.18 |
변경 불가능한 콜렉션에서 변경 불가능한 "add"메소드의 가장 좋은 이름은 무엇입니까? (0) | 2020.04.18 |