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

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

我一直在考虑建立一个可能获得大量流量的网站。它将是一个具有 wiki 功能的研究网站。因此用户将能够编辑网站上的信息。但是,99% 的用户可能永远不会编辑任何内容,而只是搜索/浏览网站。因此,理论上他们可以通过数据库的只读副本完成大多数操作。

考虑到这一点,我认为把这样的东西放在一起会很好...... 在此处输入图片描述

因此,同一个数据中心会有 3 台物理服务器:

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

我喜欢这种模型,因为它同时提高了可扩展性和可靠性。如果任何一个 Web 服务器发生故障,服务也不会中断。如果主 SQL 服务器发生故障,网站的某些功能将被禁用,但网站仍将处于只读状态。最后,负载平衡器将在两个 Web 服务器之间分配负载,这很好。

但我对此有几个疑问:

  1. 日志传送是实现此目的的好方法吗?
  2. 执行此操作所需的 SQL Server 最低版本是什么?例如,是否可以在主 SQL Server 上运行 SQL Server Web 版本,并在 Web 服务器上运行 SQL Express?

感谢您的帮助。

答案1

您所描述的内容将会起作用。

但是,如果您要处理的主要是只读数据,那么更简单的答案就是查看内存或分布式缓存。例如,当您的 Web 服务器启动时,它们会将“x”量的数据加载到 Web 服务器的内存或缓存服务器中。

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

看一下 Windows Server App Fabric 系统。如果您想要真正的 HA,W​​indows Azure 可以使用相同的功能集,这会使事情变得更加冗余。

相关内容