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

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

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

Azure中的分布式1——多实例_第1张图片

项目结构如下:

Azure中的分布式1——多实例_第2张图片

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

Azure中的分布式1——多实例_第3张图片

为了验证我的配置正确,我在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(); } }

当然我们还需要在Views\Home\Index.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个实例运行正常:

Azure中的分布式1——多实例_第4张图片

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

Azure中的分布式1——多实例_第5张图片

 

Azure中的分布式1——多实例_第6张图片

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

你可能感兴趣的:(分布式)