我正在构建一个解决方案,该解决方案将部署在世界各地的多个数据中心,每个数据中心都有一个在每个区域中主动更新的数据的复制副本。我将在每个数据中心中组合多个数据库和文件系统,其状态必须保持一致(在数据中心内)。这些多个存储库将由SOA服务层提供。
我可以容忍复制中的一些延迟,并且需要允许区域脱机,然后再赶上。
鉴于数据的多个后端存储库,我不能轻易依赖每个独立的复制解决方案来维持一致的状态。因此,我引导在应用程序层实现复制 - 通过以某种方式复制SOA请求。我需要确保不会发生复制循环,并且正确地排序了最后的写程序条件。
根据您的经验,解决此问题的最佳模式是什么,是否有应该调查的好产品(免费或其他)?
答案 0 :(得分:2)
Lotus / Domino是您的答案。我已经使用它十年了,它正是你需要的。它可能不是时髦的(我会挑战的感觉),但它强大,适应性强且非常安全,最新版R8是最好的。
答案 1 :(得分:1)
您一定要考虑IBM Lotus Domino。 Lotus Notes数据库可以按预定义的计划在站点之间进行复制。 Notes / Domino中的复制绝对是一个非常强大的功能,可以在站点之间完全复制数据。即使服务器在下次连接时不可用,它也只会复制并重新同步。
就SOA Service层而言,您可以使用Domino Designer编写Web服务。因为Notes / Domino 7.5.x(我相信)Domino已经能够配置和使用webservices。
答案 2 :(得分:1)
正如其他建议的那样,我也会推荐Lotus Notes / Domino。 8.5是非常强大的应用程序开发平台
答案 3 :(得分:0)
您没有提供足够的细节来确定您的需求,但我认为您应该查看SQL Server Merge复制。它允许以完全冲突解决方案异步复制多个数据库。您将需要指定一个全局主数据库,所有其他数据库将复制到该数据库,但所有数据库实例都是完全正常的(读/写),因此您可以按照适合您的任何时间间隔安排复制。如果任何区域脱机,它们可以在没有问题的情况下赶上 - 如果主站脱机,每个人都将独立工作,直到复制可以恢复。
我很想知道这种灵活的其他解决方案(当然,除了Lotus Notes / Domino之外,这些日子不是很流行)。
答案 4 :(得分:0)
我认为您的答案必须基于pub / sub架构。我假设您的数据中心之间有可靠的消息传递,这样您就可以依赖最终收到的已发布更新。如果您对数据存储库的所有访问都是通过服务进行的,则可以向每个更新服务的业务流程添加事件通知,以通知所有感兴趣的数据中心。理想情况下,主数据库是唯一发送这些更新的数据库。如果主数据库是唯一发送更新的数据库,则可以排除将通知路由到首先生成它们的节点,从而避免更新循环。