【问题标题】:Scaling out, Multiple Read Databases with a CQRSish Pattern使用 CQRSish 模式扩展多读取数据库
【发布时间】:2011-07-18 19:06:54
【问题描述】:

我正在使用 CQRS 样式模式(无事件源)我只是将我的读取和写入分成 2 个单独的应用程序边界。

目前,该应用程序适用于一个 SQL 2008 数据库。我想添加多个读取数据库来分配工作量,因为容量开始变高。

我需要 SQL 2008 中的解决方案,我可以在其中更新单个数据库,并将更改实时复制/传播到其他节点。这只需要单向传播,因为应用程序只会写入单个“主”数据库。

我已阅读有关点对点事务复制的信息。有人用过,更新子节点有多少延迟?

还有其他解决方案吗?

【问题讨论】:

    标签: c# sql-server-2008 scalability cqrs


    【解决方案1】:

    如果您没有在域/命令端使用事件溯源,那很好。但这并不一定会阻止您将读取端的所有事件存储在某种“事件”表中。这样做时,它允许您销毁视图模型表并从存储在读取模型数据库的“事件”表中的所有事件中重建。

    这样做的原因是为了扩展您的读取端。由于您现有的读取数据库受到压力并且无法再维持负载,而不是尝试从主“读取数据库”复制 - 只需在其他一些硬件上创建另一个数据库实例,该实例会从“事件”表中填充自身。然后让这个额外的读取数据库订阅您的域生成的事件。 (一旦您了解发生了什么,您实际上会想先订阅然后填充表格,这样您就不会错过已发布的事件)

    这允许您拥有两个同级但互不通信的读取数据库。他们只是监听来自域的事件,更新读取的模型表,并将接收到的事件添加到某种本地“事件”表中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-14
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2021-01-06
      • 2012-10-13
      • 2022-07-27
      • 2021-03-09
      相关资源
      最近更新 更多