2011-02-14 3 views
4

CEP 엔진을 찾고 있는데 어떤 엔진이 내 요구 사항을 충족하는지 알 수 없습니다. 내 시스템은 이벤트 데이터의 여러 스트림을 처리하고 복잡한 이벤트를 생성해야하며 이는 거의 모든 CEP 엔진이 완벽하게 적합합니다 (ESPER, Drools).CEP가 필요한 이유 (시스템 상태 및 이벤트 재생)

모든 원시 이벤트를 데이터베이스에 저장합니다 (CEP 부분은 아니지만 이것을 수행합니다). 규칙 (또는 연속적인 쿼리 또는 무언가)을 사용하여 복잡한 이벤트에 대한 사용자 지정 작업을 생성합니다. 그러나 내 규칙 중 일부는 과거의 사건에 의존합니다. 예 : 배우자가 집에 오거나 갈 때마다 센서에서 이벤트를 보내는 센서를 가질 수 있습니다. 내 차와 내 멋진 여성의 차가 집 근처에 있으면 '위험한'SMS가 표시됩니다.

문제는 이벤트 처리 서비스를 다시 시작하면 시스템 상태 (집에있는 아내)에 대한 모든 정보를 잃어 버리고 문제를 해결하기 위해 일정 기간 동안 이벤트를 재생해야합니다. 시스템 상태는 원시 이벤트뿐만 아니라 복잡한 이벤트에도 의존 할 수 있습니다.

과거 복잡한 이벤트에 대한 보고서가 필요할 때도 같은 문제가 발생합니다. 데이터베이스에 저장된 원시 이벤트 데이터가 있고 원시 이벤트를 재생하는 이러한 복잡한 이벤트를 생성 할 수는 있지만 정확한 재생 기간을 알 수는 없습니다.

동시에 대부분의 규칙에서 시스템 상태를 복원하기 위해 과거 (또는 처리 할 이벤트로드 시간)에서 처리 할 이벤트의 수를 자동으로 찾을 수 있음이 분명합니다. 주어진 행동이 집에있는 아내의 존재 여부에 달려있는 경우 CEP 시스템은 마지막 상태 변경을 요청해야합니다. 복잡한 사건에 대한 보고서가 요청되고 복잡한 사건이 이전 기간의 평균 가격에 달려있는 경우이 기간의 모든 가격 변경 이벤트를 재생해야합니다. 등등 ...

내가 무엇인가 놓친다면?

답변

0

현재 CEP 제품이 실시간 데이터로 이전 데이터를 제공하는지 여부는 확실하지 않지만 필요한 경우 Esper를 사용하면 이전 소스 데이터를 라이브 데이터와 연결하는 JDBC 소스에서 데이터를 가져올 수 있습니다 이벤트)를 작성하여 EPL 선언문에 반영하십시오. Esper 웹 사이트를 이미 확인했다면 Esper는 많은 요리 책 예제가있는 훌륭한 문서를 볼 수 있습니다.

그러나 실제 이벤트 후에도 내역 이벤트를 모델링한다고해도 문제가 해결되지 않습니다. 올바른 시간대를 선택하고 작성한대로이 시간대는 유스 케이스에 따라 다릅니다.

3

정확하게 기억하면 RuleCore CEP Server을 사용하면 문제를 해결할 수 있습니다. 다시 시작하면 상태를 잃지 않으며 가상 논리적 시계가 포함되어 있으므로 시간 개념을 사용하여 이벤트를 재생할 수 있습니다.

+0

... 규칙 언어로 위치를 지원하므로 사람 X가 A, B 또는 C 영역에 들어갈 때주의가 필요합니다 ... 물건의 상태를 기억합니다 통화와 엔티티는 기억합니다 부인이 현재있는 곳 – Simon

0

이전 사람들이 언급했듯이 나는 당신의 문제가 실제로 엔진 문제라고 생각하지 않지만 유스 케이스는 더 많이 생각합니다. Drools Fusion과 Esper를 포함한 익숙한 모든 엔진은 들어오는 이벤트를 외부 소스 (데이터베이스와 같은)의 요청에 따라 쿼리 된 기록 데이터 및/또는 상태 데이터와 결합 할 수 있습니다. 관련 변경 사항이 발생했을 때 상태 (또는 "타임 스탬프 체크 포인트")를 유지하고 알 수없는 시간 프레임에 대한 이벤트를 재생하는 대신 재시작시 상태를 다시로드하는 것이 필요하다고 생각합니다.

Drools를 사용하는 경우 기존 규칙 (규칙/쿼리의 반영 유형)을 검사하여 규칙에 필요한 이벤트 유형을 파악하고 모든 요구 사항이 충족되는 특정 시점까지 이벤트 로그를 역 추적 할 수 있습니다 거기에서 세션 클럭을 사용하여 이벤트를로드/재생합니다.

마지막으로 클러스터를 사용하여 다시 시작을 줄일 수는 있지만 설명하는 문제는 해결되지 않습니다.

는 도움이되기를 바랍니다.