我使用的是CQRS风格的模式(无事件源),我只是将我的读写分离到两个独立的应用程序边界中。
现在,该应用程序在一个SQL 2008数据库上运行。我想添加多个读取数据库来分配工作负载,因为数据量开始变高。
我需要SQL 2008中的一个解决方案,在这个解决方案中,我可以更新单个数据库,并将更改实时复制/传播到其他节点。这只需要是单向传播,因为应用程序将只写入单个“主”数据库。
我读过关于对等事务复制的文章。任何使用过它的人,更新子节点的延迟有多长?
还有其他的解决方案吗?
发布于 2011-03-20 13:12:15
如果你没有在域/命令端使用事件源,那也没问题。但这并不一定会阻止您将读取端的所有事件存储在某种“事件”表中。在这样做时,它允许您销毁视图模型表,并从read model数据库中" events“表中存储的所有事件重建。
这样做的原因是为了扩展你的阅读端。由于您现有的read DB承受着压力,无法再承受负载,而不是尝试从主"read数据库“进行复制--只需在其他一些硬件上创建另一个数据库实例,该实例将从"events”表中填充自身。然后让这个额外的读取数据库订阅由您的域生成的事件。(一旦您了解了发生了什么,您实际上会希望首先订阅,然后填充表,这样您就不会错过发布的事件)
这允许您拥有两个读取数据库,它们是兄弟数据库,但彼此之间不进行通信。它们只是监听来自域的事件,更新读取的模型表,并将接收到的事件添加到某种本地“事件”表中。
https://stackoverflow.com/questions/5363060
复制相似问题