2009-08-18 5 views
0

필자는 현장 로봇에서 일하고 있으며 차량 상태, 환경 상태, 작업, 작업 그룹화 등과 관련하여 중앙 서버가 전체 데이터 힙을 추적합니다. 이 데이터의 다른 부분을 처리하는 프로세스와 특정 파트가 변경 될 때 업데이트해야하는 사용자 인터페이스가 있습니다.분산 데이터 모델

내가 원하는 것은 시스템이 중앙 서버에 연결하여 데이터의 일부분을 구독하는 방법입니다. 그들은 모든 데이터를 파이프 라인에 연결하고 모든 변경 사항을 전송합니다. 또한 특정 업데이트가 병합 될 수 있음을 추천 할 수 있기를 바랍니다. 차량이 3 번 이동했지만 연결된 UI가 최신 위치를 전송하는 것보다 많은 대역폭을 사용하지 않으면됩니다.

현재 클라이언트 가입 쿼리를 추적하고 델타를 계산하여 메모리에 저장하는 메모리 내장 데이터베이스를 생각하고 있습니다. 데이터 모델을 배포하는 더 좋은 방법이나 기존 솔루션이 있습니까?

답변

2

tuple space을 원할 수도 있습니다. 자바에서는 JavaSpaces이 있는데, 이는 Jini의 일부입니다. 변경 알림을 기본적으로 지원하는지 또는 사용자가 일종의 알림을 추가해야하는지 여부는 알 수 없습니다.

0

아마이 시나리오에서는 Apache ServiceMix (ab의 종류)을 사용합니다. 메시지 지향형 미들웨어를 사용하면 프로젝트에 도움이됩니다. 매우 높은 수준의보기에서 내 솔루션을 묘사

:

내가 조금 문제를 추출 할 때, 우리가 처리해야 할 일이 사건의 이야기를 참조하는 방법 (사업) 규칙에 따라 . 이러한 비즈니스 규칙에 따라 다른 통신 파트너가 동 기적 또는 비동기 적으로 알림을 받아야합니다.

이벤트가 발생하면 다양한 스테이션에서 다소 단순한 JMS 메시지를 ServiceMix의 ActiveMQ 구성 요소로 보낼 수 있습니다. ApacheCamel에서 실행되는 비즈니스 논리는 이러한 메시지를 읽고 처리합니다. Camel 구성 요소는 엔터프라이즈 통합 패턴에 대한 풍부한 기능 세트를 제공합니다. 여기에 비즈니스 논리를 구현하는 것은 간단하고 간단합니다. 통지 될 필요가있는 스테이션은 유스 케이스에 따라 JMS 대기열 또는 주제에 등록하거나 many existing connectorsdata formats 중 하나의 사용자 정의를 통해 동 기적으로 등록 할 수 있습니다. 힌트 : JMS 또는 AMQP를 통해 protocol buffers을 보내는 것은 상대적으로 쉽게 C 또는 C++로 구현 될 수 있습니다. 이렇게하면 스테이션에서 매우 효율적인 코드가 허용되어 JVM에 대한 종속성을 동시에 제거 할 수 있습니다. 비동기 통신을 위해 JMS를 사용하는 경우, 두 이벤트에 대한

  • 내구성 통지 및 구독 및 계산 된 데이터 - 적절하게 설정 한 경우, 어떤 이벤트가 손실되지 않습니다 : ServiceMix를 설정의 사용으로

    , 당신은 여러 가지 장점을 가지고 RAM 기반 솔루션에서는 그렇지 않을 수 있습니다.
  • battle tested environment, 바로 사용할 수 있습니다.
  • 유지 관리 용이성 : 응용 프로그램이 올바르게 계획되어 있으면 업무 로직을 거의 (몇 분의 초)만으로 가동 중지없이 가동 할 수 있습니다. 이는 비즈니스 로직이 OSGi bundles으로 구현되고 해당 번들의 대체가 정상적으로 처리 될 수 있기 때문입니다.
  • 개발의 용이성 : 전체 애플리케이션을 개발할 필요없이 비즈니스 로직, 메시지를 ActiveMQ 및 도메인 모델로 보내는 소프트웨어 만 구현하면됩니다.기존 SOA에서
  • 완벽한 통합
  • 디자인으로, 복잡한 문제는 애자일 개발 절차
을 가능성이 안정성을 향상 여러 작은 것들로 분할하고 완벽하게 일치하는