分散式分布式应用程序的体系结构

时间:2011-02-27 06:33:15

标签: architecture distributed-computing

我们正在维护一个规划应用程序,该应用程序部署在几个物理上分离的站点上。这些站点使用多主复制(使用Oracle 10g DB),这意味着没有中央站点(分散式系统)。 然而,随着网站数量的增长 - 我们的困境也在增加:应该手动解决的更多冲突。

我们将重新实施该应用程序,并希望考虑此架构的替代方案。

网站之间共享的数据有两种:

  • 地图(仅附加数据,存储为文件。存储在数据库中的元数据)
  • 计划和相关数据(存储为数据库中的关系数据)

所有网站都需要存在所有数据,但要立即提供这些数据并不重要。

即使与网络断开连接,网站也应该能够正常工作。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

最好的架构是适合问题背景的架构:最终形成最佳架构和解决方案的驱动因素是什么?

例如(接受Yuriys的观点):你的困境可能是性能和/或数据管理相关 - 都需要解决,但你不太可能得到一个解决这两个问题的解决方案,它们甚至可能是矛盾的。

在数据管理方面,我建议您需要拥有“真实”数据的主副本。但这对表现来说可能并不那么好 - 当然这取决于方法。

就细节而言:我从数据开始:对其进行建模,确保了解它,了解当前数据流以及它们与业务流程的关系。您希望达到这样的程度:您可以说“我们这样做是因为业务流程合法地要求它”和“我们这样做是因为我们不应该有技术限制”。

一般来说,你需要:

  1. 将问题的上下文作为输入。
  2. 这将有助于确定您的评分标准(这就是您对提出的想法进行评分的方式)。
  3. 定义初始高级解决方案选项 /指示。这些是蓝天讨论,可以相对没有约束:想大,想一想。关键点是不要开始考虑实施 - 甚至是特定的技术。您也可以将业务限制放在一边:“我们这样做是因为当前的业务流程是X,如果我们做Y(使用这种新技术),我们就可以做Z并降低运营成本”。
  4. 根据您的评分标准对这些进行评分和评分
  5. 追求逻辑选项:基本上取3&输出4,并将他们提升到一个新的水平。您可能希望在此时开始考虑企业/设计模式。
  6. 根据您的评分标准对这些进行评分和评分
  7. 追求实施选项:您需要一个组件来执行“X”:您是否可以重复使用,购买或构建?您可以使用最好的工具吗?它们与您当前的基础架构兼容吗?等等。
  8. 根据您的评分标准对这些内容进行评分和评分
  9. 在建筑决策登记册中记录结果(原因)以供将来参考;这应该/必须包括前面步骤的输入和输出。这里的想法是防止那些追随你的人不得不再次完成所有工作 - 或者盲目地用一个糟糕的决定覆盖你经过深思熟虑的决定。
  10. 更新:细则

    • 你正在使用“多主”复制 - 那么关于Master-Slave?
    • 您正在使用数据库复制 - 那么不是以数据库为中心的解决方案呢?
    • 查看特定于数据和/或分布式系统的设计模式; Data Patterns看起来是一个好的开始(我自己没有看过,也许Oracle提供的类似材料可能更适合您平台的细节)。
    • 如果网站处于脱机状态,您是否可以锁定某些表/数据,以便在再次联机之前无法更改这些表/数据?
    • 使用“签出”源代码控制方法确保数据更改得到妥善控制。
    • 看看不同的缓存方法,可能会给你一些有用的想法,因为基本的概念是保持本地数据的副本以便快速访问 - 而不会让它们过时。
    • 了解多租户架构,他们经常需要处理以不同方式隔离数据并在分布式环境中工作。

    是的我确实提供了一般答案 - 但所提供的信息也相当普遍:)