我目前有一个web应用程序,我想使用Amazon Web Services向外扩展。
我的web应用程序规格:
C# ASP.NET SQL Server
我为我的用户提供了文件存储,并为我的所有数据提供了SQL Server数据库。我想使用S3在Amazon Web Services上进行扩展。我不确定如何在Amazon Web Services上使用SQL Server进行扩展?Amazon Relational Database Service与其for SQL Server不同。我会只在windows实例上运行它吗?我该如何扩展。
发布于 2011-09-30 18:09:01
您的应用程序中有两个不同的元素。其中包括应用服务器和数据库服务器,应用服务器是承载ASP应用程序的服务器。
Web应用程序服务器本质上是无状态的,因此向外扩展应用程序服务器将非常容易。只需在多个实例上部署应用程序,然后在它们前面放置一个负载均衡器。
对于数据库服务器来说,事情要复杂得多。由于其事务性和关系性,关系数据库很难向外扩展,这通常需要在应用程序级别编写自定义代码来支持向外扩展方案。这实际上是一个重要的方面,因为可伸缩性不会简单地通过添加更多硬件(更多机器)来实现,但您还必须投资于编码。使用Sql Server向外扩展的两种最流行的方法可能是通过镜像和分区。当Sql Server部署在云中时,云本身对向外扩展没有任何帮助,它仍将基于内置选项。
在非免费的DB解决方案中,除了涉及到一定程度的复杂性之外,水平扩展可能会比垂直扩展昂贵得多。例如,考虑以下场景:
1 x 10000$计算机+1 x 8000$ Sql Server专业许可证= 18000$
10台1000美元的计算机+ 10台8000美元的Sql Server专业许可证=90000美元
因为它只需要一个Sql Server许可证,所以一台昂贵的机器最终将比使用10台带有10个许可证的廉价机器便宜得多。
现在我已经到了在云中进行扩展的时候,事情变得有点复杂。云提供商为您提供的本质上是虚拟机。虚拟机在对CPU和RAM内存进行分区方面做得非常好,如果有必要,您可以通过添加更多CPU功能和更多内存来为您的机器添加更多功能。这很好,但是数据库高度依赖于I/O (硬盘)速度,这是虚拟机不好的一个方面。
关于、亚马逊云产品和Sql Server,我可以推荐一篇this非常好的文章(我实际上是通过@marc_s提供的链接找到它的)。为了在扩展场景时获得良好的I/O速度,作者使用了EBS卷。这种方法的问题是,EBS卷不是您部署数据库的服务器内的硬盘,而是可通过网络访问的存储卷,这会大大降低其效率。
如果您与Amazon没有关联,那么您可以尝试在其基础架构中提供物理机(专用服务器)的云提供商。据我所知,正在做这件事,但也可能还有其他的。其想法是将数据库部署在专用服务器上(良好的I/O性能),将应用程序服务器部署在虚拟机上(这将是水平可扩展的)。
微软也有一个云产品,叫做Windows Azure,它可能是目前最有趣的产品之一,但在我看来,他们的关系数据库产品让它失望了。他们有一个专门的服务,叫做Sql Azure。它的主要优点之一是它比普通数据库更容易管理,但缺点是它仅限于可伸缩性。唯一的扩展选项是数据库大小,它最多只能扩展到50 to。他们没有提到任何关于DB提供的性能的内容,您也不能进行任何与此相关的配置。它的性能可能比便宜的专用服务器要低(事实上,在StackOverflow上有一些帖子,人们抱怨Sql Azure的速度比物理机要快)。您可以使用分片向外扩展,但如上所述,这确实会影响和限制DB结构及其在代码中使用的方式。
在结论中
发布于 2011-09-27 15:22:54
如果你想轻松扩展,你可能想看看Windows Azure (www.microsoft.com/windowsazure)。Azure允许你“按需付费”--为你实际使用的带宽和存储空间付费,同时让它基本上成为一个可扩展的配置设置。
有了Amazon,你能得到的只是一堆虚拟机--如果你想要横向扩展的话,有很多工作要做才能把它们变成一个web服务器场和一个SQL Server集群。此外,SQL Server许可证在群集环境中变得非常昂贵。但是,如果您想从小规模开始,您可以始终拥有一个用于web服务器的Amazon VM,用于托管您的ASP.NET应用程序,以及一个运行SQL server的VM。
https://stackoverflow.com/questions/7564918
复制相似问题