Windows Azure Cloud Service (11) PaaS之Web Role, Worker Role(上)

简介:

Windows Azure Platform 系列文章目录

  本文是对Windows Azure Platform (六) Windows Azure应用程序运行环境内容的补充。

 

  我们知道,在Windows Azure PaaS,有一个非常重要的概念,就是Web Role和Worker Role。

  在创建Azure Cloud Service的时候,会提示如下的选项:

  

 

  -Web Role是响应客户端的HTTP请求

  -Worker Role则是在后台执行的应用程序,概念上类似于Windows Service。

  -Web Role可以通过Azure Storage中的Queue,向Worker Role发送队列消息 (Queue.AddMessage()),以便让Worker Role在后端执行自己需要的逻辑。

  

  注意:上图中Worker Role分为三类。本章会介绍PaaS Worker Role。

 

  有关Cache Worker Role的详细信息,请参考:

      Windows Azure Cloud Service (42) 使用Azure In-Role Cache缓存(1)Co-located Role

      Windows Azure Cloud Service (43) 使用Azure In-Role Cache缓存(2)Dedicated Role

 

  有关Worker Role with Service Bus Queue,请参考:

  Windows Azure Service Bus (2) 队列(Queue)入门

      Windows Azure Service Bus (3) 队列(Queue) 使用VS2013开发Service Bus Queue

  

 

  为什么微软要有Web Role/Worker Role?它的好处在哪里?在这里我举个例子您就能明白,比如我们有一个信息管理系统,需要上传Excel文档来进行解析和处理,从软件设计的角度来说有2种方法来解决

  (1)在ASP.NET应用程序里新建个upload control,在upload control里面写函数:一旦Excel文件上传完毕,则在.cs文件执行对于Excel的处理工作。

  但这样会有一个缺点,如果Excel文件里包含的内容非常大的话,需要时间来处理这些内容,所以前台的ASP.NET的页面会停滞或者无响应。虽然我们也可以通过增加progressbar或者loading图片来增强用户的体验,但是从软件设计上来说不是最好的。

  (2)前端还是用原来的处理方式,使用upload control。服务器端增加一个Windows Service,时序的查询某一个文件夹,一旦发现前端页面上传了一个Excel文件,则Windows Service执行处理Excel的工作。这样前端的页面会及时的响应并且得到更好的用户体验。

  但是这还是有一个缺陷,前端的页面和windows service是一对一的关系,如果附件上传的数量很大的话会出现Windows Service来不及处理的情况。

  (3)有了Worker Role,我们可以让一个ASP.NET页面后端有多个Worker Role来进行分布式的计算,是一对多的关系,能够有效的利用云上的计算资源,Worker Role可以处理高负载的数据访问。

 

 

  这样的架构好处有两点:

  1.异步处理,Web Role只响应客户端的HTTP请求,进行快速的响应。而Worker Role在后端处理Web Role发送过来的消息(Queue),两者是松耦合的。

  在传统的Web应用中,如果我们把复杂的处理逻辑写在ASPX页面,则ASPX页面可能会停滞,造成的用户体验不好。Windows Azure PaaS使用Web Role和Worker Role,Web Role只关注于响应客户端的HTTP请求;而Worker Role可以在后端处理业务逻辑,进行异步处理。

 

  2.Web Role和Worker Role的关系是多对多的,比如我可以在Web Role的配置中,设置Instance count为10。如下图:

  

  在Worker Role的配置中,设置Instance count为3

  

 

  这种架构就好比一个餐厅,里面有10个服务员(Web Role)和3个厨师(Worker Role)。

-          服务员(Web Role)只负责招待客人(响应客户端请求),并将客人的点菜信息通过队列消息交给厨房(Queue.AddMessage())

-          厨师(Worker Role)读取点菜信息(Queue.GetMessage),随后负责烧菜做饭(进行后端逻辑),当饭菜准备完毕后,则删除点菜信息。

-          如果前端压力过大(客户端请求过多),则Web Role可以横向扩展

-          如果后端压力过大(后端逻辑处理过多),则Worker Role也可以横向扩展

-          这种松耦合,多对多的关系非常适合企业级应用架构

  

  可以看到,Web Role和Worker Role的进行通信的重要途径是通过Queue,了解Queue对于Azure PaaS架构设计非常重要。

 

 

 

 


本文转自Lei Zhang的博客博客园博客,原文链接:http://www.cnblogs.com/threestone/p/3410510.html,如需转载请自行联系原作者
目录
相关文章
|
安全 Windows
【Azure Cloud Service】在Windows系统中抓取网络包 ( 不需要另外安全抓包工具)
通常,在生产环境中,为了保证系统环境的安全和纯粹,是不建议安装其它软件或排查工具(如果可以安装,也是需要走审批流程)。 本文将介绍一种,不用安装Wireshark / tcpdump 等工具,使用Windows系统自带的 netsh trace 命令来获取网络包的步骤
577 32
|
C# Windows
【Azure App Service】在App Service for Windows上验证能占用的内存最大值
根据以上测验,当使用App Service内存没有达到预期的值,且应用异常日志出现OutOfMemory时,就需要检查Platform的设置是否位64bit。
417 11
|
网络安全 API 数据安全/隐私保护
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
322 0
|
11月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
740 4
|
缓存 JavaScript 前端开发
鸿蒙5开发宝藏案例分享---Web开发优化案例分享
本文深入解读鸿蒙官方文档中的 `ArkWeb` 性能优化技巧,从预启动进程到预渲染,涵盖预下载、预连接、预取POST等八大优化策略。通过代码示例详解如何提升Web页面加载速度,助你打造流畅的HarmonyOS应用体验。内容实用,按需选用,让H5页面快到飞起!
|
JavaScript 前端开发 API
鸿蒙5开发宝藏案例分享---Web加载时延优化解析
本文深入解析了鸿蒙开发中Web加载完成时延的优化技巧,结合官方案例与实际代码,助你提升性能。核心内容包括:使用DevEco Profiler和DevTools定位瓶颈、四大优化方向(资源合并、接口预取、图片懒加载、任务拆解)及高频手段总结。同时提供性能优化黄金准则,如首屏资源控制在300KB内、关键接口响应≤200ms等,帮助开发者实现丝般流畅体验。
|
前端开发 JavaScript Shell
鸿蒙5开发宝藏案例分享---Web页面内点击响应时延分析
本文为鸿蒙开发者整理了Web性能优化的实战案例解析,结合官方文档深度扩展。内容涵盖点击响应时延核心指标(≤100ms)、性能分析工具链(如DevTools时间线、ArkUI Trace抓取)以及高频优化场景,包括递归函数优化、网络请求阻塞解决方案和setTimeout滥用问题等。同时提供进阶技巧,如首帧加速、透明动画陷阱规避及Web组件初始化加速,并通过优化前后Trace对比展示成果。最后总结了快速定位问题的方法与开发建议,助力开发者提升Web应用性能。
|
JSON 开发框架 自然语言处理
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(三)
本文主要介绍了应用开发中的三大核心内容:生命周期管理、资源限定与访问以及多语言支持。在生命周期部分,详细说明了应用和页面的生命周期函数及其触发时机,帮助开发者更好地掌控应用状态变化。资源限定与访问章节,则聚焦于资源限定词的定义、命名规则及匹配逻辑,并阐述了如何通过 `$r` 引用 JS 模块内的资源。最后,多语言支持部分讲解了如何通过 JSON 文件定义多语言资源,使用 `$t` 和 `$tc` 方法实现简单格式化与单复数格式化,为全球化应用提供便利。
442 104
|
JavaScript 前端开发 API
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(二)
本文介绍了HarmonyOS应用开发中的HML、CSS和JS语法。HML作为标记语言,支持数据绑定、事件处理、列表渲染等功能;CSS用于样式定义,涵盖尺寸单位、样式导入、选择器及伪类等特性;JS实现业务逻辑,包括ES6语法支持、对象属性、数据方法及事件处理。通过具体代码示例,详细解析了页面构建与交互的实现方式,为开发者提供全面的技术指导。
673 104
|
开发框架 编解码 JavaScript
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(一)
该文档详细介绍了一个兼容JS的类Web开发范式的方舟开发框架,涵盖概述、文件组织、js标签配置及app.js等内容。框架采用HML、CSS、JavaScript三段式开发方式,支持单向数据绑定,适合中小型应用开发。文件组织部分说明了目录结构、访问规则和媒体文件格式;js标签配置包括实例名称、页面路由和窗口样式信息;app.js则描述了应用生命周期与对象管理。整体内容旨在帮助开发者快速构建基于方舟框架的应用程序。
515 102

热门文章

最新文章