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