我正在使用 CQRS 样式模式(无事件源)我只是将我的读取和写入分成 2 个单独的应用程序边界。
目前,该应用程序适用于一个 SQL 2008 数据库。我想添加多个读取数据库来分配工作量,因为容量开始变高。
我需要 SQL 2008 中的解决方案,我可以在其中更新单个数据库,并将更改实时复制/传播到其他节点。这只需要单向传播,因为应用程序只会写入单个“主”数据库。
我已阅读有关点对点事务复制的信息。任何使用过它的人,更新子节点有多少延迟?
还有其他解决方案吗?
我正在使用 CQRS 样式模式(无事件源)我只是将我的读取和写入分成 2 个单独的应用程序边界。
目前,该应用程序适用于一个 SQL 2008 数据库。我想添加多个读取数据库来分配工作量,因为容量开始变高。
我需要 SQL 2008 中的解决方案,我可以在其中更新单个数据库,并将更改实时复制/传播到其他节点。这只需要单向传播,因为应用程序只会写入单个“主”数据库。
我已阅读有关点对点事务复制的信息。任何使用过它的人,更新子节点有多少延迟?
还有其他解决方案吗?
如果您没有在域/命令端使用事件溯源,那很好。但这并不一定会阻止您将读取端的所有事件存储在某种“事件”表中。在这样做时,它允许您销毁视图模型表并从存储在读取模型数据库的“事件”表中的所有事件中重建。
这样做的原因是扩展您的读取端。由于您现有的读取数据库面临压力并且无法再维持负载,而不是尝试从主“读取数据库”复制 - 只需在其他一些硬件上创建另一个数据库实例,该实例会从“事件”表中填充自身。然后让这个额外的读取数据库订阅您的域生成的事件。(一旦您了解发生了什么,您实际上会想先订阅然后填充表格,这样您就不会错过已发布的事件)
这允许您拥有两个同级但不相互通信的读取数据库。他们只是监听来自域的事件,更新读取模型表,并将接收到的事件添加到某种本地“事件”表中。