Windows Azure Caching – 公有云缓存分析及应用

 在前面PaaS实践3: http://blogs.msdn.com/b/jianwu/archive/2014/08/15/azure-paas-3-azure-caching.aspx 中,使用了Azure提供的缓存服务(Caching)优化云服务的代码逻辑,加快云服务的处理能力。 本文将对现有Windows Azure中的各式缓存服务进行分析和实际应用。 1.认识公有云缓存 Windows Azure Cache是基于内存存储的分布式、易扩展缓存技术,开发者可以使用Windows Azure Cache缓存应用程序依赖的高频率读(写)数据,提高应用程序的响应速度。同时,由于Windows Azure Cache可以提供完全独立于托管服务环境或者本地应用程序的缓存服务,其降低了托管服务规模扩展和缓存部分调整的耦合度,即托管服务的扩容(缩容)操作对其依赖的Windows Azure Cache完全没有影响。对于云端运行的网站项目,使用Windows Azure Cache还可以直接存储网站项目所需要保持的Session、Membership等状态信息。 Windows Azure Cache主要包括两种形式的缓存。 (1)托管式缓存服务(Managed Cache Service) Managed Cache Service是一种独立于应用程序以外的缓存服务,开发者可以在Managed Cache Service中给自己的应用程序创建一个专用的缓存空间,该缓存空间提供公开的连接地址,开发者可以在托管服务、Azure网站项目甚至本地应用程序中使用创建的缓存空间,使用Managed Cache Service来缓存应用程序经常读写的数据。     (2)辅助角色缓存(In-Role Cache) In-Role Cache只能应用在托管服务项目中,开发者可以在托管服务项目中添加一个辅助角色(Cache Worker Role)来保存该托管服务中Web(Worker)Role需要缓存的数据,也可以在已有的角色如Web(Worker)Role中添加Cache组件,将已有角色的内存分配一部分出来,供添加的Cache组件使用。在第一种方式中(Dedicated Cache,独立式缓存),Cache组件运行在辅助角色实例中,其独享该辅助角色实例虚拟机上的所有CPU/Memory资源,该虚拟机的状态不会受到同一个托管服务下的Web(Worker)Role虚拟机的影响。在第二种方式中(Co-located Cache,共存式缓存),添加的Cache组件直接运行在Web(Worker)Role虚拟机中,和Web(Worker)Role应用程序共享虚拟机上的CPU/Memory资源,Cache组件的运行也会受到Web(Worker)Role服务的影响。     值得提出的是,Windows Azure Cache中还包含另外一种缓存方式:共享式缓存(Shared Cache),其外部运行模式和托管式缓存服务(Managed Cache Service)极为类似,即开发者在云端创建缓存空间,然后在应用程序中使用该缓存空间。但共享式缓存的后端采用的是SQL Azure存储技术,而不是基于内存的存储,故其实时访问速度不甚理想。Microsoft Azure已经明确宣布共享式缓存将很快下线,故本文对共享式缓存不做实践,如果开发者已经在项目中使用共享式缓存,则可以参照Windows Azure Team官方提供的迁移方案迁移到托管式缓存空间。 2.使用公有云缓存 (1)使用托管式缓存服务(Managed Cache Service)…


Azure IaaS 快速实践 3 – 实现Azure虚拟网络域环境(Active Directory)

本节将在上一节的基础上,在云端的虚拟网络中搭建活动目录(Active Directory),实现管理云端虚拟机的“域环境”(Domain)。熟悉了域环境建立和域内计算机管理操作以后,开发者可以使用Azure PowerShell编写脚本,自动化完成虚机的创建、虚机的加域等。 在虚拟网络中部署活动目录(Active Directory) 1.         从管理主页中登陆到IP为10.4.2.4的虚拟机,选择开始菜单 Start, 输入dcpromo后按ENTER键.开始安装AD。   2.         在AD安装向导页,点击Next 进入下一步.     3.         选择 Create a new domain in a new forest, 点击 Next.   4.         在Name the Forest Root Domain 页, 输入新建域的名称(fully qualified domain name (FQDN) )(如, corp.zig.com,contoso.com等) ,点击 Next.   5 在Set Forest Functional level 页, 选择Windows Server 2008 R2…


Azure IaaS 快速实践 2 – 规划实践Windows Azure虚拟网络及VPN

本节实践,将在云端建立一个虚拟网络,并启用point-to-site VPN,建立云端虚机和本地计算机间基于“虚拟局域网”的互联。 网络规划 此次实验,我们在云端建立一个虚拟网络,包含两个子网段(10.3/4.0.0),Ipv4地址分配如下 10.4.0.0网段用于创建云端的虚拟机、安装后续的活动目录(Active Directory)、DNS服务及Web服务。 10.3.0.0网段用于本地计算机连接到云端网络的VPN,本地计算机通过point-to-site VPN连接到虚拟网络后,获得该网段的IP。 创建云端虚拟网络 1.         登陆到Windows Azure管理主页Windows Azure Management Portalhttp://manage.windowsazure.com 2.         点击左下角的New –> NETWORKS –> VIRTUAL NETWORK –> CUSTOM CREATE.   3.         在Virtual Network Details页面, 输入以下信息, 后点击右下角的向右箭头到下一步. NAME –将要创建的虚拟网络名称. 如YourVirtualNetwork. AFFINITY GROUP- 从下拉菜单中选择create a new affinity group (创建新的地缘组). 地缘组是在数据中心中确定一块相近的网络/计算资源,供后续新建的云虚机或服务使用,相近的网络/计算资源提高了云端集成应用的服务质量。 REGION–选择你将要创建的虚拟网络所在的数据中心。 AFFINITY GROUP NAME–命名地缘组. 如YourAffinityGroup. (East Asia 在香港,Southeast Asia 位于新加坡)  …


Azure IaaS 快速实践 1 – 使用Windows虚拟机搭建多层次网站服务

前面的PaaS快速实践中,逐步讲述了PaaS的开发模式和运行环境。从搭建本地开发环境开始,到开发第一个云服务,再到设计并实现第一个较综合的云服务,最后对云服务进行性能优化和状态跟踪。其设计到的主要产品包括:云服务(Cloud Service)、云存储(Azure Storage)、云缓存(Azure Caching)以及云服务(Cloud Service)中能附加的预启动任务(startup task)和云诊断&监控(Windows Azure Diagnostics)。 本系列实践中,我们开始关注Azure平台中的IaaS(平台即是服务),主要分为以下几个部分: 1. 使用Windows虚拟机搭建多层次网站服务 2. 规划实践Windows Azure虚拟网络及VPN 3. 实现Azure虚拟网络域环境(Active Directory)   下面开始第一个实践: 使用Windows虚拟机搭建多层次网站服务 创建含有SQL Server的虚机 1.    打开IE浏览器,并访问Windows Azure主页: https://manage.windowsazure.com/,用你的帐号登录。 2.    在底部的菜单中, 选择 New | Compute | Virtual Machine | From Gallery 开始创建虚机   3.    在 选择虚机OS镜像(VM OS Selection) 页面, 单击左边菜单中的 ALL并从选项单中选择SQL Server 2008 R2 SP2 Standard操作系统. 单击向右箭头到下一步.   4.    在虚机配置页,配置虚机名 (如 “iisvm1”) 和以后管理使用的用户名/密码. 密码需要包含3种元素:小写字母,大写字母,数字和特殊符号….


Azure PaaS 快速实践 4 – 诊断和监控云服务(WAD)

前面几节快速实践了Azure PaaS及简单优化,本节将开发一个使用SQL Azure数据库的例子,在其基础上实现云服务的诊断和监控功能。 本节的目标是:快速了解SQL Azure,掌握Azure PaaS服务中的诊断和监控功能(WAD:Windows Azure Diagnostics),学会初步的公有云诊断。   步骤一:创建SQL DataBase 访问Azure管理主页http://manage.windowsazure.com, 登录成功后,选择左下角的New –> DATA SERVICES –> SQL DATABASE –> QUICK CREATE 输入将要创建的数据库名称,如mytestdb 创建一个login用户,用于后面管理SQL数据库,如testlogin,密码:test@123     稍等片刻,数据库创建成功,如图:     点击上方刚刚创建的SQL DataBase,选择DASHBORAD,点击下方的MANAGE按钮,进入SQL DataBase的管理界面。 注意:此处有一个Show Connection Strings的连接,后面开发过程中会用到其中的ADO.Net连接字符串。     在弹出的提示框中,选择添加当前IP到SQL DataBase的白名单中     进入到SQL DataBase的登录页面,如图,使用刚刚创建的login帐号进行登录   登录成功后,来到SQL DataBase管理界面,点击New Query,输入以下sql预计,点击按钮执行语句。 CREATE TABLE Persons( Id_P int primary key, LastName…


Azure PaaS 快速实践 3 – Azure Caching 优化云服务

前面的实践中,基于Azure PaaS编程模式(role based)的应用已经实现了,但是其运算效率可能不高,比如,第一个用户求取了10000以内的质数之后,第二个用户后续如果求取10100以内的质数,该云服务会重新计算从1到10100之间的所有质数,显然,云服务可以借鉴前面已计算得出的10000以内的质数,然后快速计算10000到10100间的质数,最后一起返回给第二个用户,这样效率会高不少。 在Azure托管服务(即云服务)中,不建议使用asp.net本身的缓存机制,原因有三: 1. Web Role可以包含多个实例虚机,如A和B,虚机A中的缓存不会共享给虚机B,由于外部用户的请求会通过Azure云服务的负载均衡被分发到web role下的所有虚机,很有可能出现:计算10000以内质数的请求被虚机A处理,后续计算10100以内质数的请求被分发给虚机B,此时A中的缓存对B虚机中的计算没有帮助。 2. Web Role属于PaaS(平台即是服务),一旦开发者将服务部署到云端以后,该服务的环境维护完全由Azure平台来负责,因此,当Web Role实例虚机需要进行系统更新、平台更新、物理故障、发布包故障时,Azure平台会对该实例虚机进行自修复,自修复中的一种方式就是重新初始化(recycling),即Azure平台会使用开发者上传的服务包重新部署到一台新的虚拟机上,来取代有问题的虚拟机。在此Recycling的过程中,如果用户使用了虚拟内部的缓存,缓存的内容会丢失。 3.当Web Role实例虚机需要进行系统更新、平台更新、物理故障、发布包故障时,Azure平台可能会重启该实例虚机来恢复/更新服务,重启操作同样会导致虚拟内部的缓存丢失。   因此,对于Azure托管服务开发,有几点重要的要素: 1.每一个Role(如web role或者worker role)都至少有2个实例:这样Azure平台会将这些虚机部署在完全隔离的物理设备上,上游配以负载均衡来对外服务。且对该role进行管理时,会逐一操作,而不会同时操作,如此可以保证该web role的服务可用性(SLA >99.95%)。 2.不要将永久使用的数据存放在PaaS虚拟上:由于Role对应的虚机可能会被重启甚至Recycling,临时存储在虚机上的数据、文件可能会丢失。因此,对于服务运行过程中需要保留的数据,请使用虚机意外的独立的永久(长久)存储。如Azure Storage, SQL Azure, Azure Caching等。 本节将使用Azure Caching来优化之前的托管服务。   步骤八:优化设计(Azure Caching) 双击Azure项目中的WorkerRole1,然后选择Caching页面,选择(Enable Caching –> Co-located Role),并配置使用已有的Azure Storage帐号。   如上图配置完成后使用 “Ctrl+S”快捷键键保存整个工程。   从Visual Studio中确认已安装的Azure SDK版本,Visual Studio –> Help –> About Microsoft Visual Studio,如图:   若当前开发机安装的是SDK2.0,在worker role项目中通过Library…


Azure PaaS 快速实践 2 – 设计实现第一个集成应用(托管服务/预启动任务)

本节中,我们会设计并实现第一个基于Azure的云服务,该实现中会使用到Azure公有云中的存储服务(Azure Storage),关于 Azure Storage详情,请了解:http://www.windowsazure.cn/zh-cn/manage/services/storage/what-is-a-storage-account/ Windows Azure Storage(WAS)存储提供持久的、可持续的、易扩展的存储空间,并且提供基于Internet的多种访问方式。包含3种类型的存储服务: „ 二进制大对象(Binary Large Object(Blob)Storage)服务,主要用于存储文件或二进制数据,用于文件存储分发、流媒体库存储、数据备份等。存储的文件提供对外的HTTP(s)访问地址。 „ 队列(Queue Storage)服务,用于存储实时消息数据,确保应用程序之间可靠的、持久的消息传递。 „ 表(Table Storage)服务,用于可被查询的动态结构化数据存储。与SQL Server等传统数据库中数据表不同的是,同一个Table Storage表中的数据实体可以拥有不同的数据结构,如学生成绩信息和客户联系信息,而SQL Server中同一个数据表内不可能同时含有学生成绩信息和客户联系信息。 在本节实践中,你需要使用你的Azure Storage存储来实现数据交互和存储,因此在本实践之前,请参考以下步骤创建一个属于你的Azure Storage帐号,并查看到帐号名和密码。 如何创建你的Azure Storage存储:http://www.windowsazure.cn/zh-cn/manage/services/storage/how-to-create-a-storage-account/ 如何查看你的存储帐号及密码:http://www.windowsazure.cn/zh-cn/manage/services/storage/how-to-manage-a-storage-account/#regeneratestoragekeys 进一步单独了解WAS提供的编程接口和访问方式,请参考: 如何编程访问Blob存储:http://www.windowsazure.cn/zh-cn/develop/net/how-to-guides/blob-storage-v17/ 如何编程访问Table存储:http://www.windowsazure.cn/zh-cn/develop/net/how-to-guides/table-services/ 如何编程访问队列存储:http://www.windowsazure.cn/zh-cn/develop/net/how-to-guides/queue-service/   提示:开发者可以使用Global Windows Azure中的WAS帐号或者China Azure中的WAS帐号来完成本实践,具体WAS连接字符串稍有不同,如下: 如开发者使用China Azure时,WAS连接字符串类似以下样例: CloudStorageAccount storageAccount = CloudStorageAccount.Parse(“BlobEndpoint=https://portalvhds88zyhq6kndn2p.blob.core.chinacloudapi.cn/;AccountName=portalvhds88zyhq6kndn2p;AccountKey=tbLt4dmW0vJFFYobuBvpN2RB6On63XjwKDkoxD/v7Hg1vkeS3y3FJ+BK0MT6Q1MYXCWbKOJSM8+9mUrHUzrLDg==”); 如开发者使用Global Windows Azure,WAS连接字符串类似以下样例: CloudStorageAccount storageAccount = CloudStorageAccount.Parse.(“DefaultEndpointsProtocol=https;AccountName=mytest3939393;AccountKey=sZjfJiETVsXC****&&$$$m4yfjdajf*****%%U3fvxVHqGmJhIcaVaX3g==”);   除此之外,开发者若单独进行WAS实践,可以使用本地模拟器中的WAS帐号进行测试,连接方式为:CloudStorageAccount storageAccount = CloudStorageAccount.DevelopmentStorageAccount;   步骤六:深入集成应用 这一步,我们将尝试一个较综合的集成应用,架构图如下:  …


Azure PaaS 快速实践 1 – 本地开发、调试与发布Windows Azure

在之前的工作中,笔者很多次与新入门的Azure开发者一起,快速实战Azure PaaS(Platform as a Service: 平台即服务),从简单到深入,较短的时间内掌握/回顾Azure公有云的开发要领,最后才能较好的在开发项目中集成Azure公有云。 在此,笔者将之前总结(设计)的快速实战笔记进行 分享,刚开始使用Azure的开发者可以此来快速了解Azure PaaS开发。 本实战包含3个部分: 1.本地开发环境、本地调试和发布 2.设计、实现第一个集成应用(托管服务/预启动任务) 3.Azure Caching 优化云服务 4.诊断和监控云服务   预备知识: 目前,Windows Azure在中国外(Global)都在正式运营,其中,Global Azure已经成长了将近5年时间,很受企业欢迎,可参考:http://www.windowsazure.com。 China Azure于2013年正式落地中国,可参考:http://www.windowsazure.cn 对开发者来说,在China Azure公有云平台上的开发技术本质上和全球Global Azure平台上的开发技术没有区别,只是在端点配置上稍有区别。如下:   服务类型 全球服务 URI 中国服务 URI 管理门户 http://manage.windowsazure.com http://manage.windowsazure.cn 云服务 *.cloudapp.net *.chinacloudapp.cn Microsoft  Azure 存储 *.blob.core.windows.net *.queue.core.windows.net *.table.core.windows.net *.blob.core.chinacloudapi.cn *.queue.core.chinacloudapi.cn *.table.core.chinacloudapi.cn 服务管理 https://management.core.windows.net https://management.core.chinacloudapi.cn/   准备环境: 操作系统:Windows 7, Windows…


Jian Wu’s Blog is open !

Hi, I am Jian Wu from Microsoft Azure Developer support team and kept working with Azure customers to design and develop their cloud services in past 4 years. When exploring customer’s success in global Azure cloud, I moved fast with the Azure platform and assisted enterprise developers as dev consultant & support, through that, so…