Windows Azure: 新的分布式,专用性,高性能缓存服务 + 更多酷的改进

[原文发表地址]Windows Azure: New Distributed, Dedicated, High Performance Cache Service + More Cool Improvements

[原文发表时间] 2013-09-13 12:45 PM

今天早上,我们发布了一批重要的Windows Azure更新。包括以下新功能:

· 专用缓存服务:我们将宣布新的分布式,专用性,高性能缓存服务预览。

· 自动缩放:基于计划的网站和虚拟机自动缩放,提供更加丰富的历史记录。

· 网站:新的Web服务器日志支持将HTTP日志保存到存储账户。

· 操作日志:操作日志上支持新的过滤选项。

现在,所有这些更新功能都可以直接使用(注:有的仍然是预览版)。下面是关于它们的详细信息。

Windows Azure的缓存服务:我们新的分布式缓存服务预览

今天,我很高兴地宣布新的Windows Azure的缓存服务预览版已经发布 —— 它是最近菜添加到Windows Azure的服务中。新的Windows Azure缓存服务使您能够轻松地部署专用的,高性能的,分布式缓存,将您的Windows Azure应用程序数据存储在数据内存中,并显著改善其可伸缩性和性能。

新的Windows Azure缓存服务可以使用在任何类型的Windows Azure应用程序中——包括那些托管在Windows 或Linux上的虚拟机,以及那些部署为为Windows Azure网站和Windows Azure云服务的应用程序。未来也将支持Windows Azure移动服务。

您可以为您的每个应用程序实例化一个专用的Windows Azure缓存服务实例,或者跨多个应用程序共享一个单独的缓存服务。后一种情况特别有用,当您希望将您在云后端解决方案分区部署到多个单元——现在它们可以轻松地共享和协作操作相同的缓存数据。

Windows Azure缓存服务的好处

这里列出一些新的Windows Azure缓存服务的好处:

· 可以从任何应用程序类型中使用缓存服务(VM,网站,移动服务,云服务)

· 每个缓存服务实例分离/隔离其他客户,部署在专用的虚拟机内——这意味着您会得到快速,可预测的性能。

· 缓存服务没有限额或调节的行为——您可以尽可能多地访问您的专用缓存服务。

· 您创建的每个缓存服务实例(比如今天的预览)可以存储高达150GB的内存数据对象或内容。可以动态增加或缩小,而不必重新部署您的应用程序来使用内存缓存服务实例。

· 网站,VM和云服务可以从缓存服务以平均约1ms的速度检索端到端的对象(包括网络往返缓存服务及后台)。项目可以以约1.2ms的速度插入到端对端的缓存中(意味着Web站点/VM/云服务能保持远程缓存服务的对象,并在1.2ms内收到ACK端对端的返回)。

· 跨越多个服务器的情况下每个缓存服务实例都作为高度可用服务运行。这意味着您的缓存服务将保持可用性,即使一台服务器上运行崩溃,或者虚拟机的一个实例需要升级补丁。

· 运行的缓存服务实例的虚拟机被当成一个Windows Azure 服务来管理——这意味着这些实例的补丁及使用寿命由我们团队来处理,用户不必操心。这允许您把重点放在创建伟大的应用程序中,而不必担心管理设施的细节。

· 新的缓存服务支持相同的.NET缓存API,今天我们使用角色缓存选项同样支持云服务。因此,您写的代码已经兼容了新的托管缓存服务。

· 新的缓存服务提供了对内置ASP.NET会话状态和ASP.NET输出缓存的支持。这使您能更轻松扩展您的ASP.NET应用程序跨多个Web服务器,无论哪个客户打开哪个服务器,依然能共享会话状态和/或缓存页输出。

· 新的缓存服务支持无论是您的应用程序使用一个单独的缓存服务实例,还是在多个应用程序中共享一个缓存服务的实例(便于数据共享及应用程序分区)。这在您的应用程序跨越几个部署单位的情况下非常有用。

创建一个缓存服务

通过Windows Azure管理门户,使用“新建 -> 数据服务-> 缓存”选项,您可以很容易创建一个新的缓存服务:

在上面的截图中,我们指定想要在“North Europe”创建一个5GB,被称作“scottgucache”的新的Premium缓存。一旦我们点击“创建一个新的缓存”按钮,需要花几分钟做配置:

一旦配置完成,高速缓存将显示在Windows Azure管理门户中,就像我们订阅的所有其他Windows Azure服务一样(网站、虚拟机、数据库、存储账户等)。我们可以通过点击“DASHBOARD”选项卡看到更多关于它的细节:

我们可以使用缓存默认的配置(它带有智能默认,不需要改动就可以开始使用)。或者我们也可以选择单击“配置”选项卡来管理自定义设置——如同创建命名高速缓存分区,配置过期行为,收回政策,可用性设置(这意味着缓存项将被保存在多个虚拟机实例的高速缓存服务中,即使服务器崩溃,它们也依然存在),通知设置(这意味着我们的高速缓存可以调用更新或者过期的应用程序):

一旦您改变这些设置,只需要点击“保存”按钮,它就会立即生效(无需重新部署)。

使用缓存

现在,我们已经创建了一个缓存服务,让我们在应用程序中使用它。

要安全地从一个应用程序内访问缓存服务,我们需要提供检索缓存服务的终端URL及检索访问密钥。我们可以在Windows Azure管理门户内通过Dashboard视图中查看到相关信息:

终端URL可以在“快速浏览”视图中找到,通过点击“管理密钥”按钮检索服务的API密钥:

一旦我们从门户获得了终端URL和访问密钥,我们将更新应用程序以便使用它们。

.NET应用程序中使用缓存服务编程

在.NET或者ASP.NET应用程序中使用缓存服务编程是很容易的。只需要在Visual Studio中右键单击您的项目,选择“Manage NuGet Packages”右键菜单,在NuGet联机库中搜索“Windows Azure Caching”包,将它添加到您的应用程序中:

当您安装完NuGet Windows Azure Caching包,打开web.config/app.config文件,并替换配置文件的dataCacheClient部中的缓存服务终端URL和访问密钥:

当你完成后,您现在就可以通过使用.NET缓存API编程存放或者从缓存服务中读取内容,代码如下:

我们编程添加到缓存的对象将自动保存在缓存服务中,之后可以使用相同的缓存服务实例在跨任意数量的虚拟机,网站,移动服务及云服务中共享。由于缓存是如此之快(终端对终端的来回检索平均1ms)及它可以在内存中保存数百GB的内容,您会发现,它可以极大地提高您的解决方案的可扩展性,性能及可用性。请访问我们的文档中心来了解更多关于Windows Azure Caching APIs

通过缓存服务启用跨越Web Farm的ASP.NET会话状态

新的Windows Azure缓存服务还配备了支持ASP.NET会话状态提供程序,使您能够轻松地使用缓存服务存储ASP.NET会话状态。这使您可以跨任意数量的服务器来部署您的ASP.NET应用程序,并对其中任何一个客户的会话状态保持可用,无论客户访问的是或不是web farm中最近一个Web服务器。

启用ASP.NET会话状态缓存提供程序相当简单。只需要添加下面的配置到web.config文件中:

一旦启用,您的用户就可以在web farm中任何Web服务器打开应用程序,会话将一直可用。请访问我们的文档中心来了解更多有关ASP.NET会话状态提供程序,我们也同样支持ASP.NET输出缓存提供程序

检测和缩放缓存

一旦您的缓存服务部署好了,您就可以在Windows Azure管理门户的“监视器”选项卡中跟踪活动及使用的缓存。您可以得到有用的信息如使用的带宽,缓存丢失百分比,使用的内存,读取请求/秒,写入请求/秒等。这样,可以基于您真实的流量模式进行缩放调整:

您还可以自定义监控页面来看您感兴趣的指标而非默认的指标。点击上面的“添加指标”按钮提供了一个简单的用户界面进行配置:

如果由于流量增加,您需要扩展应用程序缓存,您可以在“规模”选项卡中根据需求改变缓存提供或者缓存大小。在这个例子中,我们初始化建立了一个5GB的高级缓存,如果我们希望扩展它的规模,可以简单的使用下面的滑块扩展到140GB,然后单击“保存”按钮。这将动态扩展我们的缓存,而不会失去缓存内的现有数据:

这使得它很容易在应用程序负载增加的时候扩展您的缓存,或者,如果您发现应用程序并不需要这么多内存的时候,您可以减少高速缓存的大小来节省成本。

了解更多

新的Windows Azure缓存服务使您的Windows Azure应用程序真正超值。它提供了一个专用高速缓存,您可以使用Windows Azure应用程序——无论它们是在虚拟机或者Windows Azure的Web站点,移动服务或者云服务上实现。您会发现,它可以真正帮助您加快应用程序,提高应用程序的扩展性,使您的应用程序更加强大。

查看我们的缓存服务文档,来了解更多有关的服务。点击这里了解更多缓存规模及收费的细节。然后使用Windows Azure管理门户尝试今天介绍的Windows Azure缓存服务。

自动缩放更新:网站 + 虚拟机,周末时间表,自动缩放历史

三个星期前,我们发布了云服务对定期自动缩放的支持。今天,我们也添加了对网站和虚拟机定期自动缩放的支持,我们还推出了依据是工作日还是周末来设定不同时间表规则的支持。

对网站和虚拟机预定时间自动缩放的支持

例如云服务,您现在可以在虚拟机或网站的“缩放”选项卡中看到一个新的按钮来设置计划时间:

对于云服务中的网站和虚拟机,预定自动缩放的工作方式目前是相同的。您仍然可以选择在任何时候都以同样的方式进行缩放(通过选择不需要预定时间)。但您现在可以依据允许的规则,单击“设置日程时间”对话框来设置一天中不同时间的缩放规模:

一旦您使用上述对话框定义了一天中启动与停用的规则,您可以回到主选项卡依据每个时间段的不同设置不同的规则。例如,下面我设置了一些规则以便在工作日期间,我们将有2到5台小的虚拟机运行我们的网站。我想依据虚拟机的CPU百分比来自动缩放确切的数目:

工作日的夜晚,我不希望有尽可能多的虚拟机在运行,于是我将它的虚拟机自动缩放配置在1到3之间。要做到这一点,我需要做的事在下拉列表中将“工作日”改变成“工作日夜晚”,然后编辑一组不同的规则,点击“保存”:

这使得它很容易设置不同的政策和规则来适应一天的使用时间——它可以同时提高您在高峰时段的性能,在非高峰时期为您节省更多的钱。

自动缩放历史

此前,我们在规模选项卡中支持实例计数图,因此您可以看到您的服务历史。随着今天的发布,我们已经改善了图表来显示所有实例的CPU使用率总和:

这意味着如果您有一个实例,CPU使用率的总和为0到1,但是如果您有三个实例,它可以从0到3,您可以使用它获得跨越整个角色的总负载,并看见自动缩放是不是很好的工作。

最后,我们也增加了AutoscaleAction的操作日志记录条目:现在它会显示确切的时间表用来扩展您的服务,包括影响到特定自动缩放的相关配置信息(在ActiveAutoscaleProfile中):

网站:在存储账户中记录Web服务器日志

随着今天的发布,您现在可以配置Windows Azure网站直接将HTTP日志写入Windows Azure存储账户。这使得它很容易保存HTTP文本日志,您可以无限期存储(因为存储账户可以保存大量数据),您也可以使用丰富的数据挖掘/分析工具来处理它们。

HTTP日志文件将作为Blobs存储在Windows Azure中

在Windows Azure管理门户网站点击“配置”选项卡,可以启用HTTP日志写入Blob存储。然后导航到“网站诊断”部分。从今天开始,当您打开“Web服务器日志”,您可以选择在文件系统或存储账户中存储日志(支持存储账户是今天的新功能):

存储日志到存储账户

当您选择在存储账户中保存web服务器日志,您可以通过点击绿色的管理存储按钮来指定存储账户和Blob容器。它将打开对话框,您可以用它来配置:

默认情况下,存储账户中的日志不会被删除。您可以在网站诊断选项卡中选择设置保留复选框来改写它。在这你可以指定日志的保存天数,之后日志将被自动删除:

一旦您配置完如何保存日志,在门户中点击保存提交设置,Windows Azure将开始自动上传HTTP日志数据到您指定账户的blob容器中。随着日志不断上传到blob账户——您很快会看到日志文件出现在存储账户中,并且伴随着网站流量的增加。

日志分析

在Blob容器中保存的HTTP日志文件使用命名方案使它很容易识别日志文件的相关性活动。日志命名的格式是:

[sitename]/[year]/[month]/[day]/[hour]/[VMinstancename].log

HTTP日志本身有许多不同的设置,存储在一个标准的HTTP纯文本文件的日志文件格式:

您可以轻松地使用各种不同的工具(Visual Studio Server Explorer,三方存储工具等)以及编写脚本或应用程序来下载并保存到机器上。由于文件的内容是一个标准的HTTP日志格式,您可以使用各种不同的工具(免费的和商业的都可以)来解析分析其内容。

对于更高级的情况,您现在也可以使用Windows Azure HDInsight服务运行自己的Hadoop集群。HDInsight是您可以轻松的运行及快速停止在Windows Azure上的Hadoop集群,您可以用它来执行MapReduce及分析工作。由于HDInsight原生支持Windows Azure Blob存储,您可以使用HDInsight来执行在Web站点存储日志文件的MapReduce任务。这提供了更丰富的方式去了解和分析您的网站流量并取得更丰富的视野。

操作日志:更丰富的过滤

今天的发布对Windows Azure操作日志功能增加了一些改进(从Windows Azure门户的管理服务节点访问)。我们现在支持更多字段的筛选:状态,类型,服务名称。这些失新增的过滤字段,相对于已经支持的两个过滤字段——订阅和时间。

这使您在快速寻找时更容易过滤特定的日志项目。

总结

今天的发布包含了一系列不错的功能,使您能够建立更好的云计算解决方案。如果你还没有Windows Azure帐户,您可以注册免费试用,马上开始使用所有上述功能。访问Windows Azure开发人员中心,可以了解更多有关如何构建云计算应用程序的内容。

希望这对会你有所帮助,

Scott

P.S.除了博客,我也在使用Twitter快速更新和共享链接。关注我:twitter.com/scottgu