내가 개념 궁금 방법 글래스 피시와 같은 자바 EE 컨테이너와 EJB 수준 (안 웹 세션 복제)에 로드 밸런싱 작동합니다. 내가 리모컨을 수집 한 것에서 인터페이스는 이 많은 서버 중 하나에 대한 호출을 에게 위임하는 프록시입니다.
당신 말이 맞습니다. Glassfish에서 초기 검색은 jndi.properties
파일에 나열된 서버 중 하나에 연결을 시도합니다. 그런 다음 서버는 라운드 로빈에 사용될 클러스터의 다른 모든 노드를 인식합니다. 원격 참조 (프록시)는이를 투명하게 처리합니다. 이론적으로 클러스터에서 노드를 동적으로 추가/제거 할 수 있습니다. Glassfish RMI-IIOP load balancing and fail-over을 참조하십시오.
만약 실패하면 다른 서버에서 을 "완료"할 수 있습니까? I 이로드 균형 조정의 기본 이론 인 을 이해하고 싶습니다. 왜 여러 서버보다 더 좋을까요? 로드 밸런서에 세션 선호도가있는 일반 웹 응용 프로그램을 실행하고 있습니까?
bean이 상태 비 저장 인 경우, 어떤 종류의 선호도가 필요하지 않으며 모든 노드에서 요청을 처리 할 수 있습니다. 각 원격 참조는로드 밸런서 역할을합니다.
빈이 statefull이면 더 털이 있습니다. 클러스터는 빈의 2 복제본을 유지하려고합니다. 요청은이 두 복제본에 대해 전달됩니다. 노드 중 하나가 충돌하면 클러스터는 노드가 돌아올 때까지 다른 복제본을 다시 만듭니다. 실제로 세션 선호도가있는 HTTP 세션 복제와 비슷합니다.
웹 서버와 달리, bean은 트랜잭션 구성 요소입니다. 따라서 예외가 발생하면 상태가 더 이상 일관성이 없기 때문에 트랜잭션이 롤백되고 상태 유지 Bean이 무효화됩니다.
파스칼에 의해 지적 되었 듯이, 특정 종류의 실패에 대해 일종의 장애 조치가 있습니다. 노드를 사용할 수 없으면 요청을 다른 노드로 다시 라우팅 할 수 있습니다. 그러나 노드가 에 실패하고 요청이 처리되지 않으면 다른 곳으로 다시 전송할 수 있는지 여부를 알 수 없습니다.
자세히 알고 싶으면 Guide to GlassFish High Availability과 Cluster Support in Glassfish을 읽어보십시오.