2012-03-10 3 views
0

데이터베이스 기록에 매핑되는 영구 쿠키를 기반으로 로그인 된 사용자 종속 작업의 대부분을 수행하는 웹 응용 프로그램을 통해 각 Ajax POST에는 Tomcat 세션이 필요하지 않거나 필요하지 않습니다.조건부 톰캣 끈적한 세션 (클러스터링)

매우 적은 수의 ajax 요청에서 로그인 한 사용자를 위해 저장할 서블릿 세션 데이터가 적어서 브라우저가있는 한 매우 긴 시간 동안 세션을 유지하고 싶습니다 오픈). 오랜 시간 동안 사용하지 않아도.

이제 이해 하겠지만, 톰캣 클러스터에 대한 끈끈한 세션이나 복제 된 세션이 있습니다. 대부분의 경우로드 균형 조정기가 부하가 적은 Tomcat 인스턴스로 트래픽을 보내고 서블릿이 세션을 가져 오거나 생성하지 않기를 원합니다. 아주 드문 경우지만, 세션과 소량의 세션 데이터에 대한 액세스가 필요합니다.

또한 아파치 mod-proxy를 사용하고 있습니다. 이것이 선택의 제약인가?

끈끈한 세션로드 밸런싱을 선택한다면, 끈적 거리지 않아도되는 대다수의 아약스 요청은 어쨌든 동일한 톰캣 서버로 갈 것입니다. 그러나 일부에서는 페일 오버에 대해 걱정하지 않으면 고정 세션이 더 나은 성능을 제공한다고 말합니다.

제 경우에 올바른 선택이 무엇인지 말해 줄 수 있습니까?

tomcat에서 세션을 만들 때마다 tomcat sessionid와 동일한 값으로 설정된 특정 서블릿 (경로)에 대한 MYSESSIONID 쿠키도 생성한다는 생각이 들었습니다. 그런 다음 세션 데이터에 대한 액세스가 필요한 거의 모든 서블릿 요청에서이 하나의 라우팅 서블릿을 통과하고로드 밸런서가 MYSESSIONID 쿠키에 연결된 고정 세션을 만들 수 있습니다. 이것은 좋은 해결책입니까?

앤디

답변

0

세션은 웹 응용 프로그램에 글로벌입니다. webapp의 특정 서블릿과 관련이 없습니다. 라우팅 서블릿은별로 의미가 없습니다.

페일 오버에 대해 걱정하지 않는다면 끈끈한 세션이 더 쉽습니다. 클러스터링이 필요하다면 아마도 동시 사용자가 너무 많을 것입니다. 따라서 평균적으로 부하는 모든 서버에서 비슷해야합니다.

반면 세션에 데이터가 거의없고 응용 프로그램이 거의 수정하지 않으면 세션을 복제 할 때 비용이 많이 들지 않습니다. 추가 이점으로 페일 오버를 사용하고로드 밸런서는 순수 라운드 로빈 알고리즘을 사용하여 각 서버가 다른 서버와 동일한 수의 요청을 수신하도록 할 수 있습니다.