目前在IT界,云这个概念的第一意思不再是词典里的解释了。不过它们还是有相同点的——也许确实会酝酿出一块大蛋糕,可也是飘在天上,众神分食之,与我等P民无关。所谓云,不过是网络时代发展到一定阶段的必然产物,而并非划时代的技术质变,so,我一直保持既不排斥亦不主动接触的立场。but,最近我有个个人服务器快到期了,于是也打算尝试一番。

现在比较知名的云服务有很多,国内的首推阿里云,而作为.Neter,Windows Azure也是一种选择。本人同时申请了两者的免费试用体验,对于阿里云,在申请阶段博主被折腾得够呛,后面可能会写一篇吐槽的随笔;相对来说,Windows Azure价格昂贵,不过既然是免费体验(90天),试试亦无妨。

目前Windows Azure在国内由世纪互联运营,比较坑的是很多服务国内还没有开始运营。另外不能使用微软账号登录Windows Azure管理门户,而是使用在注册域名时填写的用户ID。假如您注册的域名是xxxx.partner.onmschina.cn,那么您的登录账号就是“用户ID@xxxx.partner.onmschina.cn”。不出意外的话,申请之后两三天,你就能收到一份告知通过的邮件。

前几天又去Windows Azure中国首页看了下,发现官网已经不再接受新的试用申请,应该说博主搭了一趟末班车,运气!(截止到博主发文,Windows Azure中国官网又推出了所谓1元试用计划,名额为1500人,试用期一个月,且有积分限制)

另:本文只简略涉及博主接触到的功能,且并不保证所有阐述都正确。

登录后,会看到类似下图的页面,顶部为工具栏,左侧显示Windows Azure所提供的所有云服务,右侧面板显示您已在使用的服务。

点击顶部工具栏的下拉按钮,会弹出几个链接,其中“文档”链接到微软总部的微软云官网(不是中国[世纪互联]官网)。左侧菜单的一些概念我接触的并不多或者从没接触过,比如Active Directory,登录进来之后就发现其中已经存在一条目录了,即登录ID。根据网资(网上资料)所说——IT管理员通过 Windows Azure Active Directory,可以轻松管理用户对数百个云 SaaS 应用程序(如 Office 365、Box、GoToMeeting、DropBox、Salesforce.com 等)的访问,具体如单点登录、权限配置等等——so,我觉得这比较适用于企业内部系统,而相关的也有“域”、“命名空间”的概念,可以说,这应该是原来的一套windows服务器Active Directory在云端的重现。

存储


Windows Azure有个所谓的“存储账户”的概念,并提供了三种类型的存储服务——Blob 服务、表服务、队列服务。Blob 存储是一项可存储大量非结构化数据(如文档、图片、流媒体等)的服务;表服务提供类似NoSql方式存储数据;队列存储是一项可存储大量消息的服务,用户可以通过经验证的呼叫,使用 HTTP 或 HTTPS 从世界任何地方访问这些消息。

相对来说,Blob存储是更基础的存储服务,比如虚拟机中的数据磁盘即是Blob存储。因此,为避免出现硬件故障并提高可用性,Windows Azure在同一数据中心的三台计算机上复制每个 blob。写入 blob 时会更新所有三个副本,因此稍后的读取操作不会导致不一致的结果(博主并未找到任何资料涉及到这三个副本的负载平衡说明,因此可认为这里多个副本的存在只关乎可靠性,而非性能)。您还可以指定将 blob 数据复制到位于同一区域中但至少相距 500 英里的另一个 Windows Azure 数据中心。此复制称为“异地复制”,发生在 blob 更新后的几分钟内,可用于灾难恢复。我们还可以通过终结点对Blob数据进行读写操作,这里不再赘述。

对表服务的理解请参看:Windows Azure 表存储:不同于传统数据库,博主表示对文章中的一句话印象深刻:在学习新知识的时候,避免自己被迫转换观念,但却无法真正理解。

队列存储博主暂未研究,按过不表。

虚拟机


简单的说,虚拟机即是远程服务器。在管理门户中新建虚拟机的过程很简单。新建完毕后,点击网页下部工具栏的“连接”按钮,浏览器会自动下载远程连接用到的rdp文件:

下载完毕后,双击打开远程登录框,填入之前新建时设置的用户名和密码即可登录虚拟机(请自动忽略右上角亮点)。

可以看到,虚拟机自带系统磁盘和一个临时磁盘。Azure上的虚拟机上有两种磁盘,一种是存储在Blob存储上的,一种是存储在虚拟机所在物理机磁盘上的。前一种由于使用了Blob存储,其数据会按照Blob的存储策略在本地存3份,并在异地保持一份镜像,其数据的可用性和可靠性都很高,虚拟机通过网络访问这些Blob存储,不依赖于特定一台物理机。后一种依赖于物理机,如果物理机故障或进行维护,这个存储可能会被清空。显然,如果我们使用虚拟机的时候不分清楚磁盘类型,就会导致数据丢失。上图的C盘(系统盘)是Blob盘,D盘是临时盘。

临时盘往往空间比较大,完全不用的话有些可惜。另外,临时盘在本地,存取数据要比Blob快。因此,临时盘适合存放一些临时数据,比如裸日志、中间结果、上传下载的缓存等等。

为了提高运行效率,默认情况下,系统盘开启了读写缓存。

由于开启了磁盘缓存(主要是写入缓存),因此会有写入数据丢失的风险。综上所述,对于需要持久化的数据,比如数据库文件,系统盘和临时盘都不是很好的存放位置(当然你也可以关闭系统盘的写入缓存,不过有些得不偿失了,请看在 Windows Azure 上设置 SQL Server 虚拟机后续步骤一节)。我们可以通过附加一个新的数据磁盘到虚拟机来解决这个问题(当然得禁用写入缓存),附加的新磁盘是Blob盘。附加磁盘的步骤请参看:如何将数据磁盘附加到虚拟机。Now,我们就可以在虚拟机中安装SQL Server,并将数据库文件放到新的数据磁盘上了。如前所述,数据库似乎存储在运行服务器的 VM 的本地磁盘上。不过,事实上,其中每个磁盘都写入到 Windows Azure blob。与任何 Windows Azure blob 一样,它所包含的数据会在数据中心中复制三份。还可以使用 SQL Server 数据库镜像等方式来提高可靠性。

在新建虚拟机的过程中,会看到有个“可用性集”的选项,可参看:管理虚拟机的可用性。可结合使用可用性集和负载平衡终结点,以确保应用程序始终可用并且高效运行。有关使用负载平衡终结点的更多信息,请参见对虚拟机进行负载平衡

SQL Database


除了在虚拟机中安装SQL Server外,。Windows Azure 提供了称为 SQL Database 的 PaaS 技术,该技术允许您对关系数据进行单独管理。

新建SQL Database时会让你选择在已有服务器上新建库还是新建一个服务器,下图所示为部署在两台服务器上的两个SQL Database。

SQL Database 不为每个客户提供自己的 SQL Server 物理实例。相反,它为每个客户提供多租户服务和逻辑 SQL Database 服务器。所有客户共享该服务提供的计算和存储容量。与 Blob 存储一样,SQL Database 中的所有数据都存储在 Windows Azure 数据中心的三台独立计算机上,从而为您的数据库提供内置的高可用性 (HA)。虽然对应用程序来说,SQL Database 非常类似于 SQL Server,但它的行为与运行在物理计算机或虚拟机上的 DBMS 不完全相同。因为它运行在共享硬件上,所以其性能将随其所有客户置于该硬件上的负载而变。这意味着 SQL Database 中存储过程等任务的性能可能每天都在变化。

在使用本机客户端访问云端数据库之前,需要配置服务器,允许访问它的IP地址(配置页面会自动获取你的公网地址,你也可以添加其它允许访问的IP[范围]);由于网站也打算放在云端,所以设置其它云服务也能访问该服务器。这一步骤在服务器的配置选项卡下进行。

Now, 现在就可以在本机使用客户端访问云端数据库了,以上图test数据库为例,链接地址为:rmvatzpfci.database.chinacloudapi.cn,1433。连上之后,就可以开始部署了,比如迁移数据库,如下图:

这同以往的数据库部署并无不同,博主非常顺利地将本地数据库迁移到云数据库。然而在使用时发现,select into 到临时表的方法将出现异常——“Statement 'SELECT INTO' is not supported in this version of SQL Server.”网上资料( SELECT INTO With SQL Azure)说SQL Azure要求所有表都要有聚合索引(经验证并不需要),而这对于select into 创造的临时表来说自然是强人所难。不论如何,我们可以使用先create临时表(不需要聚合索引),再Insert INTO 的方式使用临时表。

关于 SQL Database 和虚拟机中的 SQL Server ,博主查阅资料后也没有发现很大不同,也许要深入使用后才能真正理解并区别开来。

网站


关于如何在Azure管理门户中新建一个默认空站点不再赘述,在这步完成之后,就可以使用VS将网站直接发布到云端了。步骤如下:

1、在管理门户中点击一条网站记录进入网站管理页面,then点击“下载发布文件”,将会下载一个PublishSettings类型的文件:

2、打开vs(博主用的是2012),右键项目——发布——配置,点导入,选择之前下载的配置文件:

3、确定后,下一步为连接到服务器的必要的验证信息:

4、下一步,在“设置”选项卡将看到应用程序使用到的数据库。该步骤会自动检测EF context和web.config中的数据库连接字符串的key值,可以按需设置连接字符串(在本例中,连接数据库即为前述云端SQL Database),也可以发布成功后在管理门户中手动添加:

5、下一步,选择需发布的文件,点击发布,完成。

我们还可以使用ftp发布网站和管理网站文件,ftp地址在网站管理的仪表盘选项卡下:

关于网站是否有负载平衡的支持,官方说“内置自动缩放和负载平衡”,但资料较少。

[更多]参考资料:

Windows Azure使用必读

为什么我们需要域?Active Directory系列之一

部分云端存储类型介绍和比较:数据管理和业务分析

如何向Azure虚拟机传文件

Windows Azure Virtual Machines设置IIS 7.5 FTP

什么是IaaS, PaaS和SaaS及其区别

转载请注明本文出处:http://www.cnblogs.com/newton/p/3913679.html

 
 
标签: Windows Azure

Windows Azure的更多相关文章

  1. 最全的Windows Azure学习教程汇总

    Windows Azure 是微软基于云计算的操作系统,能够为开发者提供一个平台,帮助开发可运行在云服务器.数据中心.Web 和 PC 上的应用程序. Azure 是一种灵活和支持互操作的平台,能够将 ...

  2. ASP.NET 在 Windows Azure 环境中使用基于 SQLServer 的 Session

    Session 嘛,占一点儿服务器资源,但是总归比 ViewState 和 Cookie 安全点儿,所以还是要用的. Windows Azure 环境中的 Web 服务器经由负载均衡调度,根本无法保证 ...

  3. Windows Azure 服务总线和物联网

    机器到机器 (M2M) 计算正迅速成为一种技术,所有开发人员和架构师需要拥抱. 许多研究表明一个未来世界的数百亿美元的设备 (在地球上的每一个人的出现).MSDN杂志有2篇文章讨论Azure服务总线和 ...

  4. 简化 Web 应用程序与 Windows Azure Active Directory、ASP.NET 和 Visual Studio 的集成

    大家好! 今天的博文深入讨论我们今天推出的开发人员工具和框架中的一些新功能.我们通过与 ASP.NET 和 Visual Studio 团队合作开发了一些重大的增强功能,让开发人员能够轻松使用 Win ...

  5. Windows Azure一些小技巧集合

    我最近做了一个Windows Azure上面的项目,自己在做的过程中遇到了很多问题.有的是我自己摸索解决,有的是到网上寻找零碎的信息结合起来解决的.我感觉应当把某些解决方法集中一下,方便我以后查阅,也 ...

  6. 今天Windows Azure Live to Code的分享

    今天参加了微软广州的Live to Code,晚上回公司OT写了封报告E-mail,也没让公司今天白出工资给我... 因为没有涉及到公司机密什么的,所以就拿出来跟大家分享一下. 首先要说明的是,在会议 ...

  7. Windows Azure Storage (6) Windows Azure Storage之Table

    <Windows Azure Platform 系列文章目录> 最近想了想,还是有必要把Windows Azure Table Storage 给说清楚. 1.概念 Windows Azu ...

  8. [New Portal]Windows Azure Storage (14) 使用Azure Blob的PutBlock方法,实现文件的分块、离线上传

    <Windows Azure Platform 系列文章目录> 相关内容 Windows Azure Platform (二十二) Windows Azure Storage Servic ...

  9. [SDK2.2]Windows Azure Storage (15) 使用WCF服务,将本地图片上传至Azure Storage (上) 服务器端代码

    <Windows Azure Platform 系列文章目录> 这几天工作上的内容,把项目文件和源代码拿出来给大家分享下. 源代码下载:Part1 Part2 Part3 我们在写WEB服 ...

  10. [SDK2.2]Windows Azure Storage (16) 使用WCF服务,将本地图片上传至Azure Storage (上) 客户端代码

    <Windows Azure Platform 系列文章目录> 前一章我们完成了服务器端的代码,并且已经发布到了Windows Azure云端. 本章我们将实现客户端的代码,客户端这里我们 ...

随机推荐

  1. height/innerHeight/outerHeight

    <script> $(document).ready(function(){ alert("height:"+$("#div").height()) ...

  2. Javascript学习6 - 类、对象、继承

    原文:Javascript学习6 - 类.对象.继承 Javasciprt并不像C++一样支持真正的类,也不是用class关键字来定义类.Javascript定义类也是使用function关键字来完成 ...

  3. kendo ui 单击取消编辑数据grid减少的原因和治疗方法的数据

    kendo ui单击取消编辑数据buttongrid数据缩减.原因grid编辑数据追打datasorce于data寻找阵列数据的存在.假定有不会加入,加入缺席. 首先一个样本: html代码: < ...

  4. ArcEngine下一个TIN生成的轮廓

    太晚了,直接连接的源代码: /// <summary> /// TIN生成等高线 /// </summary> /// <param name="pInterv ...

  5. ftp设置(2015-04-04)[转]

    anonymous_enable=YES /允许匿名访问 12行local_enable=YES /允许本地用户访问(/etc/passwd中的用户) 15行write_enable=YES /允许写 ...

  6. javascript中对字符串的操作总结

    原文:javascript中对字符串的操作总结 没听过一句话吗?程序员的世界,不处理字符串就是处理数组.这是群里的一位前辈和我说的,显然这和我之前理解的DOM是javascript的核心的不同的,看了 ...

  7. C#-简单的定时器(C# ConsoleApp) ---ShinePans

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2hpbmVwYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  8. java基金会 之 HashMap统计csvWord文档

    一:知识的补充( 这个HashMap Map 和 c++的Map还是有非常大的区别,惊人的差异大的人,当然,两者的作用是相同的,但函数名出一个非常大的.即使iterator的差是非常大的 ) (1)H ...

  9. 从头学起android&lt;AutoCompleteTextView文章提示文本框.十九.&gt;

    文章提示可以很好的帮助用户输入信息,以方便.在Android它也设置有类似特征,而要实现这个功能需要依靠android.widget.AutoCompleteTextView完毕,此类的继承结构例如以 ...

  10. 数据持久化之SP的优化—送工具类

    第一点:sp存储的是键值对 getSharedPreferences 第一个參数是你保存文件的名字,第个是保存的模式一般能够默觉得0 先看普通 使用SP 存储String类型字符串吧 SharedPr ...