具有只读数据库的高可用性和可伸缩的SQL Server?

我一直在考虑build立一个网站,可能会得到很多的stream量。 这将是一个与维基能力的研究网站。 因此用户将能够编辑该网站上的信息。 但是,99%的用户可能永远不会编辑任何东西,只会search/浏览网站。 所以他们理论上可以从数据库的只读副本中完成大部分工作。

考虑到这一点,我认为把这样的东西放在一起会很好。 在这里输入图像说明

所以在同一个数据中心将有3台物理服务器:

  • “主SQL Server”将接收任何UPDATE,INSERT或DELETE操作。
  • 这两个Web服务器将只有这个数据库的只读副本,这个数据库会随日志传送而保持最新。 当用户浏览网站时,这些服务器将被大量查询,并且还将通过IIS提供ASP.NET页面。

我喜欢这个模型同时提高了可扩展性和可靠性。 如果任一个Web服务器出现故障,则不会有服务中断。 如果主SQL Serverclosures,该站点的某些function将被禁用,但该站点仍然处于只读状态,可以这么说。 最后,负载平衡器将在两个Web服务器之间分配负载,这很好。

但是我有几个关于这个问题的问题:

  1. 日志传送是一个很好的方法来完成这个?
  2. SQL Server所需的最低版本是什么? 例如,是否可以在Web服务器上的主SQL Server和SQL Express上运行SQL Server Web版本?

谢谢你的帮助。

你所描述的将会起作用。

但是,如果它主要是只读的,那么你将经常处理更容易的答案是查看内存或分布式caching。 因此,例如,当您的Web服务器启动时,它们会将“x”数量的数据加载到Web服务器或caching服务器上的内存中。

所有的用户请求都会进入内存caching(非常快)。 然后,任何更新都可以触发caching返回到数据库,并获取最新的副本以备将来使用。

看看Windows Server App Fabric系统。 在你想要真正的高可用性的时候,Windows Azure可以使用同样的function,而且会使事情变得更加冗余。