2017-09-07 1 views
0

Ignite 웹 세션 클러스터링에 대한 디자인 질문이 있습니다.Ignite 웹 세션 클러스터링 디자인 delima

UI가있는 스프링 부츠 앱이 있습니다. 그것은로드 밸런서 뒤의 springboot 앱의 여러 인스턴스 즉, 애플리케이션을 클러스터링했습니다. org.apache.ignite.cache.websession.WebSessionFilter()를 사용하여 요청을 가로 채고 들어오는 요청에 대한 세션을 관리합니다.

나는 2 옵션

  1. 삽입 springboot 응용 프로그램 내부의 점화 노드가 있습니다. 그래서 각 임베디드 점화 노드 (각 스프링 부트 JVM에 있음)를 클러스터에 포함 시키십시오. 이렇게하면 요청 세션이 전체 springboot 클러스터에 복제됩니다. 로드 밸런서에서는 고정 연결을 유지할 필요가 없습니다. 요청은 라운드 로빈 또는 최소로드 알고리즘으로 모든 앱으로 이동할 수 있습니다.

거의 고려

  1. 설계자는 간단하다. 나는 캐시가 다운되는 등의 걱정을하지 않습니다.
  2. 이제 캐쉬가 임베드되면서, CPU와 메모리를 사용합니다 (애플 리케이션 jvm에서 ). 그것은 내 애플 리케이션을 굶주릴 잠재력이있다.

    1. 응용 프로그램 JVM 외부에서 실행되는 클러스터를 시작하십시오. 그래서 이제 springboot 앱에서 클라이언트 노드를 실행하고 주요 발화 클러스터에 연결합니다.

거의 고려 클라이언트 노드가 주요 점화 클러스터에 연결할 수없는 경우 어떤 이유로

  1. . 수동으로 세션을 관리하고 나중에 수동으로 해당 세션 을 눌러 점화 클러스터에?
  2. 로컬에서 세션을 관리하는 경우로드 밸런서 에 고정 연결이 있어야합니다. 나는 가능한 한 피하고 싶습니다.
  3. 나는 2에 ​​접근하고 싶지만 간단하게 만들고 싶다. 클라이언트 노드 세션을 만들 수없는 경우에 따라서는 응용 프로그램을 나타내는 페이지 사용자를 리디렉션 다운되거나 클러스터의 다른 응용 프로그램 노드에있다 ( org.apache.ignite.cache.websession.WebSessionFilter()를 오버라이드 (override)).

내가 취할 수있는 다른 디자인 방법이 있습니까? 두 접근법 중 무엇이든 다 내려다 보입니까?

처리 한 적이 있다면 의견을 나누십시오.

미리 감사드립니다. Shri

답변

1

세션 및 고정 세션 용 로컬 캐시가있는 경우 왜 점화를 사용해야합니까?

그러나 점화와 함께가는 것이 더 좋으며 앱에 HA가있는 경우 일부 노드가 실패하면 전체 앱이 계속 정상적으로 작동합니다. 애플 리케이션 클러스터를 분할하고 클러스터를 점화해야한다는 데 동의하지만, 서버 및 클라이언트 연결 문제는 신경 쓰지 않아도된다고 생각합니다. 이런 종류의 문제로 인해 500 개의 오류가 발생합니다. DB가 다운되거나 연결할 수없는 경우 주 기억 장치를 에뮬레이션 하시겠습니까?

+0

동의합니다. 귀하의 의견을 보내 주셔서 감사합니다. –