精华内容
下载资源
问答
  • 当您开始一个新的 Web 项目,或者刚刚开始开发一般的网站应用程序时,您可能希望从小处着手。但是,您可能不会停滞不前。在概念证明阶段,您可能不希望在新的 Web 场上耗费资源,但随着事业不断发展,您无法使用一...

    编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Byron Tardif 撰写。

    当您开始一个新的 Web 项目,或者刚刚开始开发一般的网站和应用程序时,您可能希望从小处着手。但是,您可能不会停滞不前。在概念证明阶段,您可能不希望在新的 Web 场上耗费资源,但随着事业不断发展,您无法使用一小台服务器来实施大型市场营销活动。在 Windows Azure 网站的云中进行开发和部署时也一样。

    在本博客文章中,我将向您介绍您可以采用的开发、测试和实施方式,同时控制好预算的时间和成本。

    Windows Azure 网站中的标准、免费和共享模式

    部署网站时最重要的注意事项之一是为您的网站选择合适价位的平台。一旦您完成开发和测试周期,此网站便是贵公司的网站,或者是一个重要的新数字市场营销活动或业务线应用程序。因此,您要确保您的网站根据业务需求可用且可响应,同时不超出预算。

    您的选择取决于多种因素,如:

    ·   您计划托管多少个站点?例如,数字市场营销活动可能包括您使用的每个服务的社交媒体页,以及每个目标市场的不同主页。

    ·   您期望网站的受欢迎程度如何? 何时流量水平会更改?您的评估可能基于业务线应用程序的员工数量,或者营销网站的 Twitter 粉丝和 Facebook 爱好者的数量。您可能还期望流量能够因季节性因素、商务拓展活动(如社交媒体活动)和广告而有所差异。

    ·   这些站点将使用多少资源(CPU、内存和带宽)?  

    Windows Azure 网站的好处之一就是,将 Web 应用程序和网站投入生产时您不需要回答这些问题。使用管理门户中提供的伸缩选项,您可以根据用户需求和业务目标实时地伸缩您的网站。

    Windows Azure 网站中的站点模式

    Windows Azure 网站 (WAWS) 提供 3 种模式:标准、免费和共享。

    其中每种模式(标准、共享和免费)均提供不同的配额,用于控制您的站点可以使用的资源量,并提供不同的伸缩能力。下图汇总了这些配额。

    标准模式和服务级别协议 (SLA)

    标准模式在专用实例上运行,因此不同于购买 Windows Azure 网站的其他方式。此外,该模式对 CPU 使用率没有限制,并且在 3 种模式中的存储量最大。请参阅上表了解详细信息。

    标准模式还有一些值得一提的重要功能:

    ·   没有数据输出带宽限制 – 站点上的前 5 GB 出站数据免费提供,额外带宽按照“即付即用”费率定价。

    ·   自定义 DNS 名称 – 免费模式不允许使用自定义 DNS。标准模式允许使用 CNAME 记录和 A 记录。

    标准模式支持每月 99.9% 的企业级 SLA(服务级别协议),即使站点只有一个实例也是如此。Windows Azure 网站可以在单个实例站点上提供此 SLA,因为我们的设计包括实时站点配置功能。配置发生在后台,而不需要更改您的站点,并且对任何站点访问者都是透明的。这样即可消除伸缩均衡中可用性方面的顾虑。

    共享模式和免费模式

    简而言之,共享模式和免费模式不提供标准模式的伸缩灵活性,并且它们有一些重要的限制。

    免费模式与免费或共享模式下的其他站点共享计算资源运行,并且对该站点(以及订阅中的其他免费站点)在每个配额间隔可以使用的 CPU 时间量设置了上限。达到该限制后,该站点(以及订阅中的其他免费站点)将停止返回内容/数据,直到下一个配额间隔。此外,免费模式对站点可以向客户端提供的数据量(也称为“数据出站”)也设置了上限。

    正如其名称所示,共享模式也使用共享计算资源,并且也具有 CPU 限制(尽管比免费模式高),如上表所述。共享模式还允许 5 GB 出站数据,如果超出此限制,则按“即付即用”费率计费。

    因此,可能由于上述限制,免费模式和共享模式都不是适用于您的生产环境的最佳选择,但它们还是有用的。免费模式非常适用于试用和了解 Windows Azure 网站,例如:了解如何设置发布配置、连接到 Visual Studio,或者使用 TFS、Git 或其他部署工具部署。相比于免费模式,共享模式具有额外的功能,因此非常适用于在有限受控的负载下进行开发和测试您的站点。对于更重要的生产环境,标准模式可以提供更多服务。

    伸缩操作、代码和用户会话/体验

    操作纵向扩展站点或横向扩展站点可以提高用户体验, 并且伸缩操作对现有用户会话没有任何影响。

    此外,每次伸缩操作都很迅速(通常几秒钟内即可完成),并且不需要更改站点的代码,也不需要重新部署站点。

    接下来,我们将讨论“纵向扩展”和“横向扩展”的含义。

    Windows Azure 网站伸缩动态

    Windows Azure 网站提供了多种方式伸缩您的网站, 可以使用管理门户完成这些操作。如果您正在通过 Microsoft Visual Studio 2012 管理站点,则也可以使用这些操作,如我们的服务文档中详细说明。

    纵向扩展

    纵向扩展操作类似于将您的非云网站移动到更大的物理服务器上。因此,当您的站点达到配额,系统通知您已超出现有模式或选项时,则有必要考虑进行纵向扩展。此外,纵向扩展几乎可以在任何站点上进行,不必担心多实例数据一致性的影响。

    Windows Azure 网站中纵向扩展操作的两个示例如下所示:

    ·   更改站点模式:例如,如果您选择标准模式,您的网站对 CPU 使用率没有任何配额限制,并且出站数据只需支付超出套餐所含 5 GB/月的出站数据的那部分。

    ·   标准模式中的实例大小:在标准模式中,Windows Azure 网站允许选择不同的实例大小:小型、中型和大型。这也类似于移动到更大的物理服务器,CPU核数和内存量越来越多:

    小型:1 个核,1.75 GB 内存

    中型: 2 个核,3.5 GB 内存

    大型: 4 个核,7 GB 内存

    横向扩展

    横向扩展操作相当于创建您的网站的多个副本,并添加一个负载平衡器以在副本之间分配处理。当您在 Windows Azure 网站中横向扩展某个网站时,不需要单独配置负载平衡,因为平台已提供此配置。

    要在 Windows Azure 网站中横向扩展您的站点,如果是共享模式,您需要使用实例计数滑块在 1 到 6 之间更改实例计数;如果是标准模式,则在 1 到 10 之间进行更改。这将生成您的网站的多个运行副本,并且自动处理负载平衡配置,以在所有实例之间分配传入的请求。

    要从横向扩展操作中受益,您的站点必须为多实例安全型。编写多实例安全站点超出了本文章的范围,请参考适用于 .NET 语言的 MSDN 资源,例如http://msdn.microsoft.com/zh-cn/library/3e8s7xdd.aspx

    可以在一个网站中组合执行纵向扩展和横向扩展操作,从而提供混合缩放。有关多实例站点的相同考量也将适用于这种情况。

    Windows AzurePowerShell 中的自动缩放和缩放

    在本博客文章中,我介绍了 Windows Azure 网站中纵向扩展和横向扩展所涉及的概念,着重于通过管理门户手动执行这些任务;Visual Studio 中也提供了类似的手动设置。

    我们还向 Windows Azure 网站添加了自动缩放功能,允许根据响应需求在您的网站上对纵向扩展/横向扩展的设置进行无人参与的更改。

    此外,Windows Azure PowerShell 还允许执行某些缩放操作,以及对您的站点和订阅实施多种控制。

    最后的思考

    Windows Azure 网站允许您以较低的成本(甚至成本)开发、部署和测试网站或 Web 应用程序,同时无缝伸缩该站点,直至形成更适合生产的配置,然后以经济高效的方式进一步伸缩。

    在本博客文章中,我着重介绍了您网站中的纵向扩展和横向扩展功能,但是请记住,您的站点可能只是使用其他组件(如数据库、数据源、存储或第三方 Web API)的更复杂的应用程序的一部分。每个组件都具有自己的伸缩操作,评估您的伸缩选项时应将其考虑在内。

    当然,伸缩网站将会影响成本。有助于评估您的成本以及指定伸缩操作将对您的成本产生的影响的简单方法是使用Azure 定价计算器

    本文翻译自:

    http://blogs.msdn.com/b/windowsazure/archive/2013/07/11/scaling-up-and-scaling-out-in-windows-azure-web-sites.aspx

     

    转载于:https://www.cnblogs.com/sesexxoo/p/6191140.html

    展开全文
  • 当一个Web应用程序达到一台服务器能力限制,即请求处理数量限制之后,有2种解决方案:纵向扩展和横向扩展纵向扩展即用更强的服务器(或虚拟机),或为当前的服务器添加更多的内存,CPU等 横向扩展即添加多台...

    当一个Web应用程序达到一台服务器能力限制,即请求处理数量限制之后,有2种解决方案:纵向扩展和横向扩展。

    • 纵向扩展即用更强的服务器(或虚拟机),或为当前的服务器添加更多的内存,CPU等
    • 横向扩展即添加多台服务器或者虚拟机来做负载均衡 

    纵向扩展的问题是,服务器的配置升级的费用比较高,而且总有升级的极限,很容易就再次达到限制。而横向扩展就没有这个限制,不同的用户可以被分流到不同的服务器,从而解决负载问题

     

     

     

    但是这样的横向解决方案,会有一个问题,即用户被分流到不同SignalR服务器之后, 不同服务器上的用户就没有办法同步消息。

     

    以一个聊天室程序为例,可能用户A,用户B被分流到服务器A, 用户C被分流到服务器B, 当用户A发送普通广播消息, 用户B因为和用户A分流到同一台服务器,所以能收到这条消息,用户C因为不在服务器A上,所以就没有办法收到这条消息。

     

    底板(backplane)

     

    Signal引入了一个底板的概念来解决不同服务器之间同步的问题。如果SignalR启用底板功能,每个应用实例发送消息的消息都会先传输到底板,底板会向所有连接的服务器发送同步消息,每个SignalR实例会把接收到的消息保存在内存中,然后同步给连接该实例的客户端。这样就解决了消息不同步的问题。

     

     

    但是正因为有了底板机制,与单服务器SignalR应用相比,端到端通信和高并发应用的速度会减慢,同时发送的消息数量会减少,因为所有的客户端消息都是高频率的发送到SignalR服务器,SignalR服务器发送该消息到底板,底板再和所有的服务器同步消息,最在才通知到所有的连接客户端,所以对于这2种应用场景最适合还是单服务器SignalR应用。

     

    底板最适合的是服务器广播,股市报价或者比赛文字直播就是最好的例子,因为所有的客户端都是被动接受消息,服务器端可以控制同时发送消息的数量。

     

    SignalR默认支持的三种底板

    • Azure Service Bus
    • Redis
    • SQL Server

     

    SignalR使用SQL Server做横向扩展

     

     

     

     

    底板功能需要SQL Server 2005或以上版本的支持(精简版除外)。

     

    配置数据库

    1. 打开SQL Server管理器,创建新的数据库SignalR
    2. 使用一下命令检查数据库是否支持Service Broker
    SELECT [name], [service_broker_guid], [is_broker_enabled]
    
    FROM [master].[sys].[databases]



    1. 如果SignalR的is_broker_enabled标志是false, 请输入以下命令启用Service Broker
    ALTER DATABASE YOUR_DATABASE SET ENABLE_BROKER



     

    Service Broker

    Service Broker为SQL Server提供的原生的消息队列功能,启用Service Broker可以使底板更有效率的更新同步消息。但是不启用Service Broker, 底板依然可以运作。

     

    创建项目

    参照学习笔记(三)的代码,创建以下解决方案

    ScaleoutSqlServer, ScaleoutSqlServer2与之前学习笔记(三)SignalRSelfHost代码完全相同

    ChatRoom和ChatRoom2与与之前学习笔记(三)ChatRoom的代码完全相同

     

    引入SQL Server底板支持

    打开Package Manage Console面板,输入以下命令, 分别对

     

    Install-Package Microsoft.AspNet.SignalR.SqlServer

     

    启用SQL Server底板

    打开ScaleoutSqlServer和ScaleoutSqlServer2工程中的Program.cs

     

    ScaleoutSqlServer

     

       

    class Program
    
        {
    
            static void Main(string[] args)
    
            {
    
                using (WebApp.Start<Startup>("http://localhost:9021"))
    
                {
    
                    Console.WriteLine("Server started.");
    
                    Console.Read();
    
                }
    
            }
    
        }
    
     
    
        class Startup
    
        {
    
            public void Configuration(IAppBuilder app)
    
            {
    
                // Any connection or hub wire up and configuration should go here
    
                string sqlConnectionString = "Server=.;Initial Catalog=SignalR; Integrated Security=true";
    
                GlobalHost.DependencyResolver.UseSqlServer(sqlConnectionString);
    
                app.UseCors(CorsOptions.AllowAll);
    
                app.MapSignalR();
    
            }
    
    }

     

     

     

     

    ScaleoutSqlServer2

     

       

    class Program
    
        {
    
            static void Main(string[] args)
    
            {
    
                using (WebApp.Start<Startup>("http://localhost:9032"))
    
                {
    
                    Console.WriteLine("Server started.");
    
                    Console.Read();
    
                }
    
            }
    
        }
    
     
    
        class Startup
    
        {
    
            public void Configuration(IAppBuilder app)
    
            {
    
                // Any connection or hub wire up and configuration should go here
    
                string sqlConnectionString = "Server=.;Initial Catalog=SignalR; Integrated Security=true";
    
                GlobalHost.DependencyResolver.UseSqlServer(sqlConnectionString);
    
                app.UseCors(CorsOptions.AllowAll);
    
                app.MapSignalR();
    
            }
    
    }

     

     

     

     

    前台页面链接不同的SignalR服务器

    修改ChatRoom, ChatRoom2中的ChatRoom.html

     

    ChatRoom

       

     

       

    <script src="Scripts/jquery.signalR-2.2.2.min.js"></script>
    
        <!--<script src="signalr/hubs"></script>-->
    
        <script src="http://localhost:9021/signalr/hubs"></script>
    
     
    
        <script type="text/javascript">
    
            $(function () {
    
     
    
                $.connection.hub.url = 'http://localhost:9021/signalr';

     

     

     

     

    ChatRoom2

     

     

       

    <script src="Scripts/jquery.signalR-2.2.2.min.js"></script>
    
        <!--<script src="signalr/hubs"></script>-->
    
        <script src="http://localhost:9032/signalr/hubs"></script>
    
     
    
        <script type="text/javascript">
    
            $(function () {
    
     
    
                $.connection.hub.url = 'http://localhost:9032/signalr';

     

     

     

     

     

    最终效果

    分别启动2个SignalR服务器, 并分别打开2个ChatRoom.html页面。

    虽然2个Web应用程序访问的是不同的SignalR服务器,但是他们之间的消息同步了。

     

    转载于:https://www.cnblogs.com/lwqlun/p/9095094.html

    展开全文
  • 一般来说,Web应用的扩展有两种:scale up(纵向扩展scale out(横向扩展)。 1、纵向扩展 使用配置高(大内存,多处理器)的服务器或者虚拟机。 2、横向扩展 使用多个服务器(Web Farm)。 SignalR支持...

    一般来说,Web应用的扩展有两种:scale up(纵向扩展)和scale out(横向扩展)。

    1、纵向扩展

    使用配置高(大内存,多处理器)的服务器或者虚拟机。

    2、横向扩展

    使用多个服务器(Web Farm)。

    SignalR支持横向扩展,可以通过Backplanes(Azure Service Bus、Redis、SQL Server)来实现。

    比如SignalR实现的一个简单的聊天页面, 部署到一个服务器,http://192.168.0.1/index.html。打开多个网页访问这个地址,任意页面输入的消息同时出现在各个页面上。

    如果部署到另一个服务器http://192.168.0.2/index.html,一个网页打开http://192.168.0.1/index.html,另一个网页打开http://192.168.0.2/index.html。分别发送消息,却发现没有同步。因为SignalR不支持不同服务器上的客户端之前通信。即使部署在同一个服务器端的不同端口,不同端口的页面间消息也不可以传递。

    下面介绍如何使用SQL Server实现不同服务器上同一套Web应用间的消息传递。只需在SignalR实现的一个简单的聊天页面的Startup.cs添加两行代码(第5、6行)。

        public class Startup
        {
            public void Configuration(IAppBuilder app)
            {
                string sqlConnectionString = WebConfigurationManager.ConnectionStrings["signalr"].ConnectionString;
                GlobalHost.DependencyResolver.UseSqlServer(sqlConnectionString);
                app.MapSignalR();
            }
        }
    

    添加代码之前,需要NuGet安装Microsoft.AspNet.SignalR.SqlServer并在Web.Config中配置数据库连接字符串。

    重新编译然后部署到两个服务器。http://192.168.0.1/index.html和http://192.168.0.2/index.html之间就可以通信了。

    您可以用SQL Server Management Studio打开对应的数据库,可以SignalR在数据库里做了些什么。

     

    本文如有不妥之处,请见谅!

    转载于:https://www.cnblogs.com/everylittlebit/p/5358728.html

    展开全文
  • 应用服务(App Service) 的缩放其实是对应用服务计划(App Service Plan)的缩放,...直接在纵向扩展中,选择更高的计算内存的服务器,点击应用即可。 横向扩展 指的是一台服务器不够,就多加一台。是后...

     

     

     

    应用服务(App Service) 的缩放其实是对应用服务计划(App Service Plan)的缩放,简单理解是对后端的服务器的缩放,又分两种:纵向和横向。

     

    纵向扩展

    指的是“服务器”规格缩放,比如1核心2G 放大成 4核8G;

    直接在纵向扩展中,选择更高的计算和内存的服务器,点击应用即可。

     

    image.png

     

    横向扩展

    指的是一台服务器不够,就多加一台。是后台服务器数量的变更。

    横向扩展有两种,手动缩放和自定义缩放

    手动缩放(缩放实例数量)

    image.png

     

    自定义缩放(例按照CPU/内存利用率动态)

     

    通常需要创建两个规则:

    1.是增加实例的规则,例如 CPU利用率连续10分钟平均值大于70%,实例数+1

    2.是减少实例的规则,例如 CPU利用率连续10分钟平均值小于30%,实例数-1

     

    image.png

     

     

    要设定实例最大最小限定值,其中最大值受限于应用服务计划的规格。

    image.png

     

    除了默认的缩放条件,还可以创建基于时间的缩放规则,比如周一到周五8:00-20:00 自动扩大指5台:

    image.png

     

    多个缩放条件时,请仔细理解下图示例:

    如下图有两个缩放条件,默认的是根据CPU利用率调整示例数量,第二个条件是根据时间,设置固定示例数。只有当第二个不匹配时,才会执行根据CPU利用率调整实例数量。

     

    image.png

    展开全文
  • 横向扩展和复制的常见用途】 (1)读操作的负载均衡; 将只响应查询的服务器分离出来; (2)写操作的负载均衡; 方式一:很少更新的表放在一个服务器上,而频繁更新的表分隔到多个服务器上; 方式二:按地理...
  • 扩展的方式可以是购买更好的服务器(纵向扩展)或者购买更多的服务器横向扩展),Elasticsearch能从更强大的硬件中获得更好的性能,但是纵向扩展也有一定的局限性。真正的扩展应该是横向的,它通过增加节点来传播负载...
  • 如果我们一直以能处理瞬时高峰的配置长时间运行势必会造成大量的资源浪费,这时候就需要一个按量的横向扩容了云服务器的特性主要就是体现在横向纵向的弹性扩容上,纵向的话其实很好理解就是我们单台 ECS 配置不够...
  • 服务器扩展性的要点

    千次阅读 2018-01-10 16:20:03
    就Web服务而言,购买昂贵的高速硬件以提高性能的"纵向拓展"方案,远不如将大量廉价的,性能一般的硬件放在一起以提高系统性能的"横向拓展"方案流行。为什么横向拓展更好呢?因为它更适合大多数Web服务,虽然原因多种...
  • 对于大型的网站建设,我们之前已经说了如何根据服务器负载量来横向扩展数据库。抛开关于面向服务(SOA)面向资源(ROA)概念的争论,深入了解它们的基本前提就会发现,至少它们都有一个共同点,都要求架构师...
  • 随着服务器虚拟化的不断发展,中心需要采购设备来满足企业的快速发展对性能...相反,组织也可以选择横向扩展战略,使用大量功能不太强大的商用服务器,组建集群并形成冗余架构,而且横向扩展方式的初期投资可能更少。
  • 扩展性解释

    2020-12-23 10:38:50
    “性能的可扩展性:一般的有横向扩展和纵向可扩展两个方向: 横向可扩展指允许通过增加服务器提高系统性能。 纵向可扩展指允许通过增加服务器的内存或者CPU提高系统性能。 良好的系统设计应该允许两个方向的性能可...
  • 服务器技术架构

    万次阅读 多人点赞 2018-03-18 21:26:54
    一、服务器技术架构的三大发展趋势一般而言,客户需求决定了服务器的发展方向,从服务器的技术架构来看,目前整个服务器的技术架构的发展有三个大趋势:纵向扩展架构、横向扩展架构、超融合架构。 1、纵向架构...
  • 融合架构云服务器利用硬件资源池化技术,实现计算、存储、网络、供电、制冷和管理模块的解耦与融合重构,具有高密度、低功耗、易扩展、易管理,易维护特点,兼具横向扩展和纵向扩展优势,可优化系统部署、运维和能耗...
  • 扩展的方式可以是购买更好的服务器(纵向扩展)或者购买更多的服务器横向扩展),Elasticsearch能从更强大的硬件中获得更好的性能,但是纵向扩展也有一定的局限性。真正的扩展应该是横向的,它通过增加节点来传播负载...
  • 扩展的方式可以是购买更好的服务器(纵向扩展)或者购买更多的服务器横向扩展),Elasticsearch能从更强大的硬件中获得更好的性能,但是纵向扩展也有一定的局限性。真正的扩展应该是横向的,它通过增加节点来传播负载...
  • 存储器,性能不够了就增加服务器,一切看起来似乎都是没什么问题的,扩展嘛,什么纵向扩展横向扩展,一切跟着需求来,还能给憋住了不成?然而,当这些问 题进入到区块链的场景,情况就有些不那么好对付了,尤其是...
  • 大多数组织最终都将用完备份存储,因此了解备份存储规模对于创建长期数据保护策略至关重要。...纵向扩展备份设备由通常运行某些版本的Linux重复数据删除软件的服务器组成。小型设备将使用通过PCI总线直接...
  • 扩展的方式可以是购买更好的服务器(纵向扩展)或者购买更多的服务器横向扩展),Elasticsearch能从更强大的硬件中获得更好的性能,但是纵向扩展也有一定的局限性。真正的扩展应该是横向的,它通过增加节点来传播负载...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 220
精华内容 88
关键字:

服务器横向扩展和纵向扩展