c# – 在Amazon Web Services上扩展SQL Server

我目前有一个Web应用程序,我想使用Amazon Web Services进行扩展.我的网络应用程序规格:C#ASP.NET SQL Server我为我的用户提供了一个文件存储空间,并为我的所有数据提供了一个SQL Server数据库.我想使用S3扩展Ama...

我目前有一个Web应用程序,我想使用Amazon Web Services进行扩展.

我的网络应用程序规格:

C#ASP.NET SQL Server

我为我的用户提供了一个文件存储空间,并为我的所有数据提供了一个SQL Server数据库.我想使用S3扩展Amazon Web Services.我不确定如何在Amazon Web Services上使用SQL Server进行扩展? Amazon Relational Database Service看起来与SQL Server不同.我会在Windows实例上运行吗?我将如何扩展.

解决方法:

您的应用程序中有两个不同的元素.有应用服务器,它是持有ASP .Net应用程序的服务器,还有数据库服务器.

Web应用程序服务器本质上是无状态的,因此扩展应用程序服务器将非常容易.只需在多个实例上部署应用程序,然后在其前面放置一个负载均衡器.

对于数据库服务器来说,事情要复杂得多.关系数据库由于其事务性和关系性而非常难以扩展,并且通常涉及在应用程序级别编写自定义代码以支持扩展方案.这实际上是一个重要方面,因为通过添加更多硬件(更多机器)不能简单地实现可扩展性,但您还必须投资编码.可能有两种最流行的Sql Server扩展方式是镜像和分区.在云中部署Sql Server时,缩小范围对云本身没有任何帮助,它仍将基于内置选项.

除了涉及非自由数据库解决方案的复杂性之外,水平扩展可能比垂直扩展要昂贵得多.例如,请考虑以下方案:

1 x 10000 $机器1 x 8000 $Sql Server专业许可证= 18000 $

10 x 1000 $机器10 x 8000 $Sql Server专业许可证= 90000 $

因为它只需要一个Sql Server许可证,所以昂贵的机器最终会比使用10个具有10个许可证的廉价机器便宜得多.

而现在我已经达到了在云计算中扩展的程度.云提供商为您提供的基本上是虚拟机.虚拟机非常适合分区CPU和RAM内存,如果需要,您可以通过增加更多CPU功率和更多内存来为您的机器增加更多电量.这很好,但数据库高度依赖于I / O(硬盘)速度,这是虚拟机不是很好的一个领域.

与亚马逊云提供和Sql Server相关我可以推荐this非常好的文章(我实际上是通过遵循@marc_s提供的链接来实现的).为了在扩展方案上实现良好的I / O速度,作者使用了EBS卷.这种方法的问题在于,EBS卷不是部署数据库的服务器内部的硬盘,而是通过网络可访问的存储卷,这会大大降低其效率.

如果您不依赖于亚马逊,那么您可以尝试在其基础架构中提供物理机(专用服务器)的云提供商.据我所知,gogrid正在这样做,但也可能有其他人.我们的想法是在专用服务器上部署数据库(良好的I / O性能)和虚拟机上的应用程序服务器(可以横向扩展).

微软也有一个名为Windows Azure的云产品,它可能是目前最有趣的产品之一,但在我看来,它的关系数据库产品正在被淘汰.他们有一个专门的服务,称为Sql Azure.它的一个主要优点是它比普通的数据库更容易管理,但在缺点方面,它仅限于扩展.唯一的扩展选项是数据库大小,只能达到50Gb.他们没有提到数据库提供的性能,也没有任何相关的配置.有可能性能低于廉价专用服务器(实际上StackOverflow上有帖子,人们抱怨Sql Azure的速度与物理机相比).您可以使用分片进行扩展,但如上所述,这确实会影响和限制DB结构及其在代码中的使用方式.

结论:

>如果您正在构建对关系数据有很大需求的业务应用程序,那么云提供商可能不是您的最佳选择.您可以考虑使用自己的硬件或提供商,使您可以选择使用专用服务器.
>您可以考虑使用nosql数据库解决方案构建应用程序.这些可扩展性更高,但在不利方面,它们有一些功能限制(没有事务,没有连接,有限的索引).如果您对此方法感兴趣,可以使用Sql Table Storage.您可能还会考虑一种混合方法,它将涉及部分数据将保存在关系数据库中,而部分数据将保存在nosql数据库中.
>在缩放数据库之前,请检查是否没有其他选项可以先尝试.例如,检查是否存在低效查询或构建缓存层,这取决于应用程序,可能会从数据库中承受相当大的压力.

本文标题为:c# – 在Amazon Web Services上扩展SQL Server

基础教程推荐