2009-12-23 1 views
3

저는 현재 자바 호환 솔루션은 다음과 같이 내 요구 사항을 해결하기 위해 존재 무엇을 조사하고 있습니다 : 일괄 처리에비동기 배치 작업을 배포하는 방법에는 어떤 것이 있습니까?

  • 타이머 기반/스케줄 작업을
  • 분산, 그리고에 의해 수평
  • 탄력성을 확장 할 수있는 기능을 제공 , SPF가 없습니다.

이러한 작업의 성격 (무거운 XML 생성 및 웹 기반 수신 노드로의 전달)은 Quartz가 아닌 단일 서버에서 실행하는 것을 의미합니다 실행 가능.

Hadoop 및 JavaSpaces와 같은 기술에 대해 들어 봤습니다.이 기술은 문제의 확장 성과 탄력성 문제를 효과적으로 해결했습니다. 이것이 내 요구 사항에 매우 적합한 지 알지 못하고, 다른 기술이 잘 맞는지 알기가 어렵습니다.

나는이 공간에서 사람들이 사용할 수있는 옵션과 각각의 장점을 어떻게 활용했는지 또는 특정 문제를 다른 사람들보다 잘 어울리는 지 궁금해하고있었습니다.

NB : 그 일정 능력은 아마도 현재 우리가하는 일에서 숙취 일 가능성이 있습니다. 예, 특정 시간에 가야 할 과제가 있습니다. 또한 설정 시간에 위임 사항이없는 경우 처리량을 조절하는 데 사용되었습니다.

답변

2

비동기식은 항상 JMS를 생각 나게합니다. 요청 메시지를 대기열로 보냅니다. MessageListener가 풀에서 풀 (pull)되어 처리됩니다.

대기열과 수신기가 원격 서버에있을 수 있기 때문에 확장이 가능합니다. 리스너 스레드 풀의 크기를 구성 할 수 있습니다. 서로 다른 작업에 대해 서로 다른 청취자를 가질 수 있습니다.

업데이트 : 클러스터링 및로드 균형 조정을 통해 단일 지점 오류가 발생하지 않도록 할 수 있습니다.

ActiveMQ (오픈 소스), JBOSS (사용 가능한 오픈 소스 버전) 또는 Java EE 앱 서버를 사용하면 비용없이 JMS를 얻을 수 있으므로 예산은 고려하지 않습니다.

Java를 사용한다는 사실 외에도 JMS를 사용하고 있으므로 잠금 기능이 없습니다.

스프링 메시지 기반 POJO를 사용하는 것이 좋습니다. 커뮤니티 에디션은 물론 오픈 소스입니다.

그럴만하다면 Spring BatchSpring Integration을 살펴보십시오. 둘 모두 유용 할 수 있으며 커뮤니티 에디션은 오픈 소스입니다.

+0

저는 과거 JMS에서 작업 해 왔지만 비동기 적으로 잘 어울리는 반면 Single Point of Failure가되지 않는 것은 사용하지 않았습니다. 물론, 상업적 벤더가 배포 가능하고 탄력적 인 MQ 클러스터의 중금속 버전을 제공한다는 것은 의심의 여지가 없습니다. 예산 부족이나 벤더 종속에 대한 관심이 없습니다. 나는 오픈 소스가 선호하는 커머셜 프레임 워크에서 벗어나고 싶다. –

+0

ActiveMQ 및 RabbitMQ는 클러스터링을 지원하는 두 가지 인기있는 오픈 소스 대기열이므로 대기열을 호스팅하는 서버가 다운 될 경우 사용자가 정체하지 않습니다. http://www.rabbitmq.com/ 및 http://activemq.apache.org/. 둘 다 Java 클라이언트 API를 가지고 있습니다. –

1

GridGain을 들여다 보았습니까? 나는 스케쥴링 문제를 해결하지 못할 것이라고 확신하지만, 그것을 스케일 할 수 있고 "마술처럼"발생한다. 실행될 코드가 노드로 전송되고 거기에서 실행된다. 전송할 데이터베이스 연결이 없을 때 (또는 직렬화 할 수없는 경우) 잘 작동합니다.