在工作中,我们在一个集中式 SQL 服务器中有几个带有数据库的应用程序。每当一个应用程序需要处理来自另一个应用程序的数据时,它只是通过数据库查询或更新它。我相信这是 Enterprise Integration Patterns 一书(Hohpe & Woolf)中描述的“共享数据库”模式。

这些跨数据库的依赖让我们很头疼。目前最大的问题是我们在 SQL 服务器上遇到了性能问题,并且由于跨数据库依赖关系而无法横向扩展。我认为我们应该做的是从共享数据库模式转向 EIP 书中描述的消息传递系统。每个应用程序都将负责它自己的所有数据,而其他想要访问该数据的应用程序将通过服务(在消息总线上?)获取这些数据。

  • 我们从哪里开始重构消息模式?
  • 我们是否首先重构其中一个应用程序来管理它自己的应用程序数据库?
  • 那么当前通过数据库与该应用程序集成的其他应用程序呢?
  • 这是解耦数据库依赖关系的最佳方法还是我们应该从其他地方开始?
  • 请您参考如下方法:

    我建议进行 3 相转换。

  • 为每个应用程序添加一个消息传递层。
  • 更改所有跨应用程序数据访问以使用新创建的消息传递层。
  • 根据需要扩展(现在独立的)数据库。

  • 另外,假设您有 3 个应用程序; A、B 和 C。

    您还可以将其视为 3 个单独的过渡:
  • 应用A
  • 向 A 添加消息
  • 将 B 和 C 中的调用更改为 A
  • 应用B
  • 将消息添加到 B
  • 将 A 和 C 中的调用更改为 B
  • 应用C
  • 将消息添加到 C
  • 将 A 和 B 中的调用更改为 C

  • 此时过程中的结果与阶段 2 结束时的结果相同,可以继续进行阶段 3。区别仅在于专注于一种重构还是专注于应用程序是否更有效率。


    评论关闭
    IT干货网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!