문제

8 개의 노드 클러스터에서 시퀀스/카운터를 복제해야합니다. 이는 각 HTTP 요청이 getNextIntAndIncrement ()와 같은 것을 호출하여 시퀀스 상태가 모든 서버에서 동기화되는 것을 호출함으로써 시퀀스에서 다음 값을 수신 함을 의미합니다. 명확히하기 위해, 이것은 세션이 아닌 응용 프로그램/글로벌 범위에 존재해야합니다. 나는 그것이 끔찍한 아이디어처럼 들리며 의심 할 여지없이 병목 현상으로 이어질 것이지만 이것이 요구 사항입니다.

내 질문은 최상의 솔루션이 무엇입니까? 나는 Stateful Session Beans를 보았지만 하나의 클라이언트를 위해 설계된 것으로 보입니다. 데이터베이스 시퀀스를 고려했습니다. 나는 또한 Terracotta 클러스터링을 보았습니다. 그들은 시퀀스 데모를 가지고 있습니다 http://www.terracotta.org/web/display/orgsite/recipe?recipe=sequencer 그러나 J2EE 솔루션이 존재하면 타사 솔루션을 피하고 싶습니다. Weblogic 8.1을 사용하고 있습니다.

도움이 되었습니까?

해결책

일부 Java EE 공급 업체는 캐시 솔루션 (예 : WebSphere의 객체 그리드) ASND를 지적했습니다. 이미 타사 제품을 식별했지만 휴대용 표준이 존재한다고 생각하지 않습니다.

DB 솔루션에 어떤 문제가 있습니까? 잠금이 필요하다는 것이 분명하므로 DB로 떠나지 않겠습니까? 내 생각에 실제로 진정한 증분 값이 필요한 경우, 값을 놓친 값 등이 없으면 다른 데이터베이스 값과의 트랜잭션 관계가 중요하므로 DB를 사용하십시오.

절대적인 순차적 값 (예 : 갭 허용)이 필요하다면 숫자 세트를 소포하고 경합을 크게 줄일 수 있습니다. 진정으로 순차적 값, 차이가 필요하지 않으면 인스턴스간에 어느 정도의 잠금이 필요하다고 구매하고 있습니다. 현재. 홀수 시퀀스 번호를 잃을 여유가 있다면 훨씬 더 잘합니다. 또는 인스턴스간에 독립적 인 번호 체계를 할 수 있다면 훨씬 더 나은 위치에 있습니다. 예를 들어 서버 A, B, C ... IDS A001, A002, B001, C001, C002 등이 있습니다.

다른 팁

데이터베이스 시퀀스는 특히 고도로 수준의 트랜잭션을 사용하여 요청하는 경우 가장 결정적인 결과를 줄 수 있다고 생각합니다.

그러나 나는 이와 같은 일을하는 타당성에 진지하게 의문을 제기 할 것이지만 그것은 단지 2 센트입니다.

이 질문에 대한 태그에 Weblogic이 있습니다. Weblogic은 클러스터 싱글 톤을 허용합니다. 예를 들어, 장애 조치 지원이있는 클러스터 당 하나의 인스턴스.

이것은 귀하의 요구 사항을 충족시켜야합니다.

http://e-docs.bea.com/wls/docs100/javadocs/weblogic/cluster/singleton/singletonservice.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top