我在现场机器人领域工作,我们有一个中央服务器跟踪整个数据堆,与车辆状态,环境状态,任务,任务分组等有关。有些流程处理这些数据的不同部分,以及需要在特定部分更改时更新的用户界面。
我想要的是系统连接到中央服务器并订阅部分数据的方法。他们将所有数据传输给他们,并在发生任何变更时发送。此外,我希望能够提名某些更新可以合并:如果车辆已经移动了3次但是连接的UI没有比仅发送最新位置更多的带宽。
目前我正在考虑一个内存数据库,它跟踪客户端订阅查询并计算发送给它们的增量。是否有更好的方法或现有的解决方案来分发数据模型?
答案 0 :(得分:2)
您可能需要tuple space。在java中,有JavaSpaces,它是Jini的一部分。我不知道它是否支持开箱即用的更改通知,或者您是否必须自己添加某种通知。
答案 1 :(得分:0)
对于这种情况,我可能会(某种类型的ab-)使用Apache ServiceMix。使用面向消息的中间件只会使您的项目受益。
从高层次的观点描述我的解决方案:
我看到它的方式,在稍微抽象问题时,我们谈论的是发生的事件,需要根据(业务)规则进行处理。根据这些业务规则,其他通信伙伴需要同步或异步通知。
因此,当事件发生时,您的各个工作站可以向ServiceMix的ActiveMQ组件发送相当简单的JMS消息。然后,ApacheCamel上运行的业务逻辑将读取这些消息并对其进行处理。 Camel组件为Enterprise Integration Patterns提供了丰富的功能集。在这里实现业务逻辑非常简单明了。需要通知的工作站可以根据用例订阅JMS队列或主题,也可以通过自定义或many existing connectors和data formats之一同步订阅。提示:通过JMS或AMQP发送protocol buffers可以相对容易地用C或C ++实现。这应该允许站上的高效代码,同时消除对JVM的依赖。
使用ServiceMix设置,您有各种优势: