扩展Windows Azure上的ASP.NET应用程序
在最近一次微软网络研讨会上,高级架构布道师Brian Prince和技术布道师Nathan Totten展示了几种可选的方案,用于扩展安装在Windows Azure上的ASP.NET应用程序。
主讲人指出,我们可以任意组合使用这些方案,从而增大或者减小应用程序的规模。这些方案可以归为几大类:缓存(caching)、流量分配(traffic distribution)、异步工作处理(asynchronous work processing)、以及存储(storage)。Prince和Totten推荐使用以下一些方案组合来增大ASP.NET应用程序的规模:
增加Azure实例的数量
和增加虚拟服务器一样,这是分配负载最简单的方式。
增加Table或Blob存储
Table存储是无模式(schema-less)且非关系型的存储,但是它比SQL Azure具有更高的可扩展性。正如Totten所说,Table存储的每个分区在每秒内可以处理大约500个请求。而Blob存储则是一种非结构化的方案,对于大文件存储可能会很有用。
增加AppFabric缓存
AppFabric用于在内存中缓存频繁访问的数据,而且还可以作为一种会话状态提供程序。
使用异步工作处理
Azure Queue会向我们称之为“工人角色(worker roles)”的后台进程发送消息。在处理购物车或文件上传时,我们需要恰当地设置Azure Queue;使得业务逻辑在后台处理,从而提升前端性能。队列的大小是有限制的,但是它可以与Table和Blob存储组合使用。
把静态或半静态内容放到Azure内容分发网络中
正如主讲人所说,Windows Azure 内容分发网络(CDN,Content Delivery Network)目前在世界上已有26个结点,而且会定期地增加更多结点。对于用户而言,把静态数据(或者并不经常更新的数据)放到CDN中可以提升性能,因为那些数据将会从距离用户最近的数据中心提取出来。
利用流量管理器
Windows Azure流量管理器(Traffic Manager)与CDN类似,但并不用于存储内容,它在多个位置承载整个应用程序,以便在世界范围内提供更好的可用性。在主实例不可用的情况下,流量管理器也可用作灾备系统。
Prince和Totten指出,应用程序可靠的初始设计永远是良好性能的关键所在,但Windows Azure的目的是让我们可以轻松地增大或减小应用程序规模,这也是某些组织在需求中所要求的