最佳实践:Windows Azure 网站 (WAWS)
编辑人员注释:本文章由 Windows Azure
网站团队的项目经理Sunitha Muthukrishna
撰写。
Windows Azure
网站 (WAWS)
允许您在 Windows Azure
上构建可高度伸缩的网站。下面概述了 WAWS
的优势:
有效的资源利用:随着客户群增长,您的应用程序的使用率也会相应增加。您可以基于网站的流量模式主动伸缩您的网站。
基于使用率的成本计算:在按需选择基于云的策略方面,成本起着关键的作用。Azure
网站提供了基于使用率的模型(按增长付费)和 6
或 12
个月的计划以供选择。要了解详细信息,请参阅
Windows Azure
网站定价。更快的上市时间:您可以专注于应用程序,而无需担心基础结构。这样便可以赢得更多时间以释放开发人员的创造力和生产力,这反过来又缩短了应用程序的上市时间。
最佳实践
这些实践有助于您充分利用基础结构提供的 Windows Azure
网站,并为最终用户提供可靠的高性能网站。
构建可伸缩的架构
凭借 Windows Azure
网站,可以在 Azure
上构建可伸缩的解决方案,但前提是您的网站需要充分利用服务提供的可伸缩基础结构,这一点至关重要。下面介绍了设计可伸缩解决方案的几个操作:
1.
架构中的瓶颈可能导致高延迟。您应该识别当前架构中的所有主要瓶颈,其产生的原因有很多,例如,应用程序设计不佳、带宽限制。重构您的应用程序架构,以避免这些瓶颈。
2.
使用不同的规模配置(实例大小和数量的组合)对网站执行负载测试,以便了解常规负载下的正确规模配置。可以使用
Visual Studio
和
Apache Jmeter
等多种工具执行负载测试。
3.
使用 Web
分析工具(如
Google Analytics
或
WebTrends)确定流量模式和您的网站平均每秒收到的请求数。
4.
设置自动伸缩以管理意外的流量高峰。要了解详细信息,请参阅如何伸缩网站。
5.
如果您的应用程序使用数据库层,请集成使用分布式缓存解决方案(如
Azure
缓存服务)来提高性能。
设计可承受故障的架构
尽管 WAWS
提供了高标准的
SLA,但要实现业务连续性,还是要了解在使用云解决方案时存在的服务失败风险以确定减少此类事件影响的方法,这一点很重要。下面介绍了此类情况下减轻影响所必需的一些解决方案:
通过 Windows Azure SDK
或者使用第三方服务(如
Cloud Cellar)构建您自己的工具,来创建自动化备份和还原策略。至少在 2
个数据中心设置网站冗余副本,并且在这些数据中心之间实现入站流量的负载平衡。如果数据中心的服务出现故障,请使用 Global Traffic Manager
设置自动故障转移功能。在您的网站中设置内容分发网络 (CDN)
服务,以通过缓存内容提高性能,并且使网站具有高可用性。如有可能,删除您的 WAWS
网站使用的任何紧密耦合组件/服务的依赖关系。例如,如果您的网站使用了数据库,并且由于某种原因数据库服务在特定时间出现故障,将会导致您的架构出现单点故障。这里的数据库就是一个紧密耦合的组件,但无法从您的架构中删除。在此类场景下:
- 您必须跨多个数据中心进行数据库复制,并且在这些数据库之间设置自动化数据同步以减轻故障转移期间的影响。
- 您必须将您的应用程序设计为在这些情况下具有弹性。
如果您需要依赖组件,复制策略将有助于增强架构可靠性。
在移动到云之前,设计风险缓解策略以减少意外中断
创建测试环境并通过停止站点来模拟故障场景,以便评估您的网站在故障下时的性能
自动化基础结构
除了云解决方案之外,还有许多操作关系到维持网站的成功与否,这包括开发、部署以及各种其他操作。实现这些操作的自动化,可以更轻松地管理您的应用程序递交周期。使用
WAWS REST API,可以访问所有 WAWS
功能,因此自动化变得更加简单。用于管理网站的一些主要操作如下所示:
部署到网站
可以根据您的喜好使用各种部署策略(如
Web
部署、GIT、FTP
等)来向您的网站推送内容。通过Windows
Azure SDK
构建工具,可以简单实现自动化。
使用测试站点进行生产测试
WAWS
支持测试发布,该功能可以对网站的测试版本进行更新部署,并且在更新面向客户的网站之前进行生产环境测试。要了解详细信息,请参阅在
Windows Azure 网站上进行测试发布。
启用诊断日志记录
WAWS
具有内置的诊断功能,可以帮助您对应用程序进行调试。有两种类型的诊断功能:
站点诊断:可以启用详细错误日志记录、失败的请求跟踪和 Web
服务器日志记录。应用程序诊断:可以捕获 Web
应用程序产生的信息。要了解详细信息,请参阅如何在
Windows Azure 网站上启用诊断日志记录。
启用监控
WAWS
支持通过 Monitor
管理页面进行功能监控。可以设置各种指标的警报(如 CPU
时间、HTTP
客户端错误、HTTP
服务器错误等)以持续监控您的网站。要了解详细信息,请参阅如何监控
Windows Azure 网站。
安全性
WAWS
平台遵守安全性和可靠性的主要行业标准,以便为您的客户提供一个安全的平台。但是,如果您的应用程序出现安全漏洞,您的架构就可能容易受到攻击。要在 WAWS
上构建一个安全解决方案,您在构建可以抵御攻击的应用程序时必须遵循安全编码实践。要了解详细信息,请参阅如何编写安全代码。
进一步阅读
本文翻译自:
最佳实践:Windows Azure 网站 (WAWS)的更多相关文章
- 通过 HTTPS 和 SSL 确保 Windows Azure 网站 (WAWS) 安全
编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Erez Benari 撰写. 随着身份盗窃和各种形式的网络犯罪迅速增多,使用安全套接字层 (SSL) 对网站进行保护变得越来越 ...
- Windows Azure 网站 (WAWS) 中的服务器端包含 (SSI)
编辑人员注释:本文章由 Windows Azure 网站团队的项目经理Erez Benari 撰写. Windows Azure 网站客户普遍关心的一个问题是关于我们对服务器端包含(Server ...
- 在 Windows Azure 网站 (WAWS) 上对 Orchard CMS 使用 Azure 缓存
编辑人员注释: 本文章由 Windows Azure 网站团队的项目经理 Sunitha Muthukrishna 撰写. 如果您当前的 OrchardCMS 网站在 Windows Azure 网站 ...
- Windows Azure 网站 (WAWS) 和中间证书
编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Erez Benari 撰写. 在 Windows Azure 网站上使用 SSL 已经司空见惯.虽然向网站上传和分配证书通常简 ...
- 获取证书以用于 Windows Azure 网站 (WAWS)
编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Erez Benari 撰写. 近年来,随着网络犯罪的上升,使用 SSL 保护网站逐渐成为一项备受追捧的功能,Windows A ...
- 在 Windows Azure 网站中进行纵向扩展和横向扩展
编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Byron Tardif 撰写. 当您开始一个新的 Web 项目,或者刚刚开始开发一般的网站和应用程序时,您可能希望从小处着手. ...
- 进一步探索:Windows Azure 网站中解锁的配置选项
编辑人员注释: 本文章由 Windows Azure 网站团队的项目经理 Erez Benari 撰写. 在 Windows Azure 网站 (WAWS) 中管理网站时,许多选项可使用 Azu ...
- Windows Azure 网站自愈
编辑人员注释:本文章由 Windows Azure 网站团队的项目经理Apurva Joshi 撰写. 您有多少次在半夜被叫醒去解决一个仅需重新启动网站即可解决的问题?要是可以自动检测一些状况并自动恢 ...
- Windows Azure 网站开发Stacks支持
编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Daria Grigoriu 和 Windows Azure 网站开发人员体验合作伙伴共同撰写. Windows Azure 网 ...
随机推荐
- decimal类型不能为空,自定义update更新null值的问题。
if (!string.IsNullOrEmpty(yt_time_limit_1)) { entity["yt_time_limit_1"] = Convert.ToDecima ...
- SQL Convert XML to Table
将xml nodes 属性中的值 转为table 形式 declare @xml2 xml set @xml2 = '<CMADatas> <CMAData CmaName=&quo ...
- spring aop简单日志实例
转载自:http://www.blogjava.net/laoding/articles/242611.html 一直就用spring的IOC,遗憾spring的另一重要组成部分AOP却没用过,所以近 ...
- SqlServer数据类型、C#SqlDbType对应关系及转换
{ { } } { SqlDbType dbType = SqlDbType.Variant; { dbType = SqlDbType.Int; dbType = SqlDbType.VarChar ...
- C++11多线程
这篇文章说的很详细: https://www.ibm.com/developerworks/cn/linux/1412_zhupx_thread/
- BZOJ 2300: [HAOI2011]防线修建( 动态凸包 )
离线然后倒着做就变成了支持加点的动态凸包...用平衡树维护上凸壳...时间复杂度O(NlogN) --------------------------------------------------- ...
- C++学习之使用new的注意事项
C++学习之使用new的注意事项 在构造函数中使用new来初始化对象的指针成员成员时必须特别小心,具体的说,应该如下这样做: 一.如果在构造函数中使用new来初始化指针成员,则应该在析构函 ...
- 纯JS URL编解码
function urlEncode(str) { var ret = ""; var strSpecial = "!\"#$%&’()*+,/:;&l ...
- Android webViewj简单处理apk的下载链接
最近在开发二维码扫一扫的功能,需要分多种情况处理外部的url.遇到一个问题是,一些程序包(比如一些android应用)的下载不好处理.如果不做任何处理的话,webView会打开一个空白页.比如这个链接 ...
- DSP的cache一般在何时会生效,防止在cache使用造成数据不一致
在使用DSP的cache使能所有的ddr操作时,发现如果只是写操作,根据cache的机制,如果没有在了L1级hit,则直接使用write buffer来完成写操作. 假如hit的话,那之前一定发生过读 ...