鉴于基于JDBC的应用程序,它不是为在从计算机A上运行的应用程序的一个实例到在双向同步模式中在计算机B上运行的另一个实例的实时传播而设计的。如何在不使用Symmetric DS的情况下优雅地完成这项工作?
我们使用XMPP和XStream,将POJO转换为XML或JSON,通过XMPP,Smack API将它们发送到预先配置的“聊天室”,其他机器人会监听,重播他们收到的数据。因此,即使是离线客户端应用程序,也会通过发送最后一个“自时间戳”来接收“DiscussionHistory”。
我在Java中甚至在H2中都看到了“近实时数据库更改传播”,但是在注册的每个节点之间传播了更改,但我能想到的唯一解决方案是使用XMPP协议,在它周围建立一个“机器人”聊天室,让节点在那里发送数据,而其他人则监听变化。
所谓的“机器人”是不同计算机上的应用程序实例,应用程序实例应允许在同一数据库上进行实时协作,但允许进行脱机修改(因此没有集中式服务器来存储更改)。 / p>
答案 0 :(得分:0)
一种常见的方法是构建缓存,以便应用程序始终在未找到特定条目时查询数据库。然后,您只需要同步缓存驱逐以强制组中的所有节点重新加载某个条目。使用例如spring方法缓存和ehcache很容易实现这一点。