2013-08-23 3 views
0

나는 낙타를 사용하여 DB에서 데이터를로드 한 다음 DB에 저장된 결과를 다시 생성하기 전에 일부 처리를 적용합니다. 이것은 웹 응용 프로그램의 일부입니다.낙타와로드 밸런서

내 전쟁은로드 밸런서에 의해 두 개의 서버로 배포됩니다. 그런 다음 두 경로가 동일한 DB에서 동일한 처리를 수행하는 두 개의 낙타 환경이있게됩니다.

동일한 레코드가 두 경로로 처리되는 경우가 있습니다. 경로가 동일한 작업을 두 번 수행하지 못하도록이 문제를 처리하는 방법?

+0

부하 분산 장치가 두 서버 중 하나만 요청을 보내지 않습니까? 그렇다면 서버 중 하나만 레코드를 처리하고 있습니까? 그렇지 않다면 같은 레코드를 동시에 처리하는 2 CamelContext를 왜 더 잘 설명 할 수 있습니까? –

+0

또한이 질문은 실제로 카멜 특유의 것이 아니며 더 일반적인 아키텍처 문제입니다. –

+0

경로는 "타이머"를 사용하여 주기적으로 실행되도록 구성됩니다. 따라서 두 서버 모두에서 실행됩니다. – Transient

답변

0

각 서버가 동일한 레코드를 수신 할 수 있도록 설정해야하는 경우 idempotent route이 필요합니다. 그리고 당신은 당신의 멱등 (idempotent) 저장소가 당신의 기계들 사이에서 동일하다는 것을 확인해야한다. 데이터베이스를 저장소로 사용하는 것은 쉬운 옵션입니다. 데이터베이스가 없다면 헤이즐리 캐스팅 레포가 옵션 일 수 있습니다.

문제는 주문 번호 나 고객 + 날짜/시간 또는 증가하는 거래 ID 번호와 같은 고유 한 레코드를 결정하는 것입니다.