여러 머신 클러스터에 JVM 배포

여러 머신 클러스터에 JVM 배포

빨대에서 매개변수와 용어를 검색하세요.

핵심 속성 은 가상을 위한 것 JVM입니다 V(적어도 이 질문의 맥락에서는). JVM머신 클러스터 전체에 로드 밸런싱을 수행하여 자체적으로 분산되도록 하는 방법은 무엇 입니까 JVM?

약간이것:

분산 JVM

https://www.cacheonix.org/articles/Distributed-Java-application-on-multiple-JVMs.gif

이렇게 하면 응용 프로그램은 다음과 같은 내용만 볼 수 있습니다.싱글 JVM?

답변1

내 의견을 자세히 설명하고 당신이 매우 심오한 것을 생각하지 않았다고 가정하려면 ...

아마도 이 다이어그램을 보고 사용자가 JVM 간의 일부 조정으로 인해 세션 중 언제든지 백엔드에서 JVM과 통신할 수 있는 애플리케이션을 사용하고 있는 것으로 해석하고 있을 것입니다. 그것은 일반적으로 작동하는 방식이 아닙니다. 적어도 널리 사용되는 아키텍처에서는 그렇지 않습니다.

이 다이어그램은 독립 JVM이 있는 클래식 분산 환경을 거의 확실하게 묘사합니다. 클라이언트(사용자 애플리케이션)가 요청 간에 상태를 유지해야 하는 경우(회의) 여러 가지 옵션이 있지만 다른 JVM에 대해 전혀 알지 못한 채 여전히 JVM을 포함합니다.

이를 달성하는 가장 간단하고 일반적인 방법은 소위 말하는 로드 밸런서를 사용하는 것입니다.고정 세션. 간단히 말해서, 이는 일단 고객이신원그런 다음 로드 밸런서는 세션 기간 동안(예: 사용자가 로그아웃할 때까지) 항상 클라이언트의 요청을 동일한 JVM으로 라우팅합니다.

무슨 뜻이야?신원? 일반적으로 이는 사용자가 로그인하고 성공적으로 인증된 후 고유 ID가 선택되고 사용자의 모든 후속 요청과 연결됨을 의미합니다. 웹 애플리케이션(예: RESTful API를 사용하는 애플리케이션)의 경우 이 ID는 일반적으로 HTTP 헤더에 전달됩니다. 이와 같은 헤더를 사용하면 대부분의 로드 밸런서가 ID를 쉽게 추출할 수 있습니다.

또는 고정 세션을 중단하고 세션 상태를 데이터베이스에 저장한 다음 요청을 받을 때마다 세션 ID를 사용하여 상태를 조회하도록 JVM에 요청할 수 있습니다. 이로 인해 약간의 복잡성과 오버헤드가 추가되지만 전례가 없는 것은 아닙니다. 그러나 JVM은 이 모델에서 독립적으로 유지됩니다.

(클라이언트 애플리케이션이 요청하는 모든 세션 상태를 전체적으로 전달하도록 할 수도 있지만 여기에는 무엇보다도 보안 문제가 있습니다.)

관련 정보