我们有一个 ASP.NET MVC3 Web 应用程序,它包括以下内容:
- 网站 (MVC3)
- 数据访问服务 (WCF + EF)
- 数据库服务器 (SQL Server 2008 R2)
我们被建议实施以下架构以获得性能优势:
- Web服务器集群(网站+数据访问服务)
- 它具有循环负载平衡
- 此集群中的每台服务器都有一个缓存(只读)数据库
- 我们有一组 SP,我们可以清楚地分为两类 -读取 SP和写入 SP
- 每个 Read SP 将连接到Cache DB,每个 Write SP 将连接到Write DB
- 具有复制/镜像功能的数据库服务器
- 这是写数据库。
- 每当它发生更改时,它将所有更改传播到所有缓存数据库
- 除此之外,它还实现了复制/镜像,因此它在出现故障时具有备份。
这是一个非常粗略的想法,我不确定它是否会给我们的系统带来性能提升。
支持它的论点是80%的时间,操作是只读的。它们可以在缓存数据库上制作(因为配置为只读,所以它们更快)。其他20%可以在Write DB上完成上完成。
但是,我有以下问题:
- 只读配置:我们真的可以将缓存数据库配置为只读吗?自从写数据库需要在更改时将更改推送给它们。
- 同步:由于网络上的所有这些复杂性,确保一切同步有多容易? 网络延迟:保持一切同步的网络开销如何?
- 复杂性和维护:增加维护开销和增加系统复杂性真的值得吗?