分布式数据模型

时间:2009-08-18 10:14:46

标签: data-modeling distributed

我在现场机器人领域工作,我们有一个中央服务器跟踪整个数据堆,与车辆状态,环境状态,任务,任务分组等有关。有些流程处理这些数据的不同部分,以及需要在特定部分更改时更新的用户界面。

我想要的是系统连接到中央服务器并订阅部分数据的方法。他们将所有数据传输给他们,并在发生任何变更时发送。此外,我希望能够提名某些更新可以合并:如果车辆已经移动了3次但是连接的UI没有比仅发送最新位置更多的带宽。

目前我正在考虑一个内存数据库,它跟踪客户端订阅查询并计算发送给它们的增量。是否有更好的方法或现有的解决方案来分发数据模型?

2 个答案:

答案 0 :(得分:2)

您可能需要tuple space。在java中,有JavaSpaces,它是Jini的一部分。我不知道它是否支持开箱即用的更改通知,或者您是否必须自己添加某种通知。

答案 1 :(得分:0)

对于这种情况,我可能会(某种类型的ab-)使用Apache ServiceMix。使用面向消息的中间件只会使您的项目受益。

从高层次的观点描述我的解决方案:

我看到它的方式,在稍微抽象问题时,我们谈论的是发生的事件,需要根据(业务)规则进行处理。根据这些业务规则,其他通信伙伴需要同步或异步通知。

因此,当事件发生时,您的各个工作站可以向ServiceMix的ActiveMQ组件发送相当简单的JMS消息。然后,ApacheCamel上运行的业务逻辑将读取这些消息并对其进行处理。 Camel组件为Enterprise Integration Patterns提供了丰富的功能集。在这里实现业务逻辑非常简单明了。需要通知的工作站可以根据用例订阅JMS队列或主题,也可以通过自定义或many existing connectorsdata formats之一同步订阅。提示:通过JMS或AMQP发送protocol buffers可以相对容易地用C或C ++实现。这应该允许站上的高效代码,同时消除对JVM的依赖。

使用ServiceMix设置,您有各种优势:

  • 使用JMS进行异步通信时,事件和计算数据的持久通知和订阅 - 如果设置正确,不会丢失任何事件,这可能不是基于RAM的解决方案。
  • A battle tested environment,随时可以使用
  • 易于维护:如果应用程序计划正确,则可以使用很少(几分之一秒)推出业务逻辑更新,无需停机。这是因为业务逻辑将实现为OSGi bundles,并且可以优雅地处理这些捆绑包的替换。
  • 易于开发:您只需要实现业务逻辑,即将消息发送到ActiveMQ和您的域模型的软件,而不需要开发整个应用程序。
  • 在现有SOA中无缝集成
  • 通过设计,复杂问题被分成各种较小的问题,这可能会增强稳定性并完美匹配敏捷开发程序