1

我想部署一个基于 ModeShape 的服务器-客户端架构,但我不知道如何配置 ModeShape 和 Infinispan 来实现我的目标。

这是一个典型的用例:

  • 用户 A 在主服务器存储库上创建一个节点
  • 用户 B 在本地检索此节点并离线编辑其子树和属性
  • 再次上线后,用户 B 将该节点推送回主服务器存储库,并在必要时合并其内容(即该节点在主存储库中也已修改)

所以,我的要求是:

  • 我需要主服务器存储库来保存所有数据。
  • 我需要每个客户端能够从服务器存储库中获取一些特定节点并将其存储在本地。
  • 我需要每个客户端都能够在其本地存储库中脱机工作(即无法访问主服务器存储库)
  • 我需要每个客户端能够在联机后将其本地存储库与主存储库同步,并在必要时合并数据

您是否知道如何通过使用 ModeShape 和/或 Infinispan 的聚类选项来获得这种行为?或者,也许您能想到更好的方法?

4

1 回答 1

1

主服务器的配置非常传统。ModeShape(和 Infinispan)在这里非常灵活,因此更难的部分是决定如何/在何处保留所有 ModeShape 的内容。该项目有相当多的具有各种配置的完整示例,以及许多可能有用的测试用例配置。

至于客户端,我建议让他们将内容存储在持久存储到本地磁盘的本地存储库中,这意味着使用 Infinispan 的 JDBC 缓存存储或文件系统缓存存储。(使用 ModeShape 4.0,甚至还有一些其他 Infinispan 缓存存储可以更好地工作和执行。)

那么问题是如何同步数据。ModeShape 内置了集群,但是让所有存储库实例都相同并不是您想要的。不幸的是,ModeShape 中没有任何东西直接支持此功能,但您可以自己实现。然后客户端可以连接并下载主存储库内容的子集(或根据事件日志信息更改的那些节点),然后更新其本地副本。当然,您可能希望确保没有覆盖任何由客户端更新但尚未同步到服务器的本地内容。

这样做需要一些努力,但完全可以在 ModeShape 之上完成。实际上,大部分工作需要使用每个存储库的事件日志(例如,保存事务的日志和每个事务中更改的内容)合并两个独立更新的存储库的内容。

于 2014-07-14T14:32:54.210 回答