• Azure中的分布式1——多实例


    Azure中的WebRole和WorkerRole天然支持负载均衡,只需要简单配置一下即可,下面我以一个WebRole为例说明这一点。

    创建一个项目类型为MVC4的WebRole

    image

    项目结构如下:

    image

    右键点击Role的属性进入配置选项卡,将实例计数修改为3,这里的一个实例相当于一台主机

    image

    为了验证我的配置正确,我在HomeController的Index方法中加点Response数据。

    IsAvailable表示角色实例是否正在运行在Windows Azure环境中;

    IsEmulated表示角色实例是否正在运行在Windows Azure云模拟器中;

    InstanceId获取一个代表角色实例的ID;

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
            ViewBag.IsAvailable = RoleEnvironment.IsAvailable;
            ViewBag.IsEmulated = RoleEnvironment.IsAvailable && RoleEnvironment.IsEmulated;
            ViewBag.InstanceId = RoleEnvironment.CurrentRoleInstance.Id;
            return View();
        }
    }

    当然我们还需要在ViewsHomeIndex.cshtml页面中加点显示代码:

    <p style="color: red">RoleEnvironment.IsAvailable: @ViewBag.IsAvailable</p>
    <p style="color: red">RoleEnvironment.IsEmulated: @ViewBag.IsEmulated</p>
    <p style="color: red">RoleEnvironment.InstanceId: @ViewBag.InstanceId</p>

    最后Ctrl + F5运行Azure项目,观察模拟器的运行情况,1个Role,3个实例运行正常:

    image

    在浏览器中输入http://127.0.0.1:81/,不停的刷新页面,结果如我们所料,3台主机处理客户端请求。

    image

     

    image

    Azure多实例的最大优点就是实现简单,负载策略和实现方法我们都不需要操心,并且支持自动缩放,在站点压力大时,增加实例处理更多的请求数;夜间压力小时,减少实例降低运营成本,实现真正的按计算收费;个人认为唯一的缺点就是无法对负载策略进行人工干预,比如指定某一批用户访问指定的实例,当然这也有对应的解决方案。

  • 相关阅读:
    UIButton 动态改变文本闪烁问题
    利用GDataXML解析XML文件
    限制键盘只能输入数字
    获得view所在的控制器
    使用Canvas绘制简单的时钟控件
    Spring整合ActiveMq消息队列
    Symmetric Key Encryption DES
    OSPF 高级实验
    OSPF 基础实验
    EIGRP 高级实验
  • 原文地址:https://www.cnblogs.com/fengxiang/p/3427701.html
Copyright © 2020-2023  润新知