Windows Azure HandBook (6) Azure带宽与Azure Blob云存储

  《Windows Azure Platform 系列文章目录

  在笔者这几年Azure售前工作中,经常会遇到客户提同样的问题:Azure 虚拟机的带宽是多少?Azure提供独享带宽吗?这个项目我们需要200兆的独享带宽。

  当遇到这种情况的时候,笔者就会问客户:请问您需要独享带宽的目的是什么呢?

  客户经常会回答:这个应用需要视频(大文件)的上传下载功能,或者是并发用户数巨大,需要独享带宽来相应更多的Internet请求。

  这种情况我表示非常理解,因为我们平时在购买电信宽带的时候,都是购买30M,100MB一年,带宽要求越高,价格越贵。

  

  对于这种独享带宽的问题,笔者详细写一篇文章,来介绍一下。主要内容分为以下几节:

  1.独享带宽的弊端

  2.分析互联网带宽内容

  3.相关案例分享

  

  1.独享带宽的弊端

  在中国,互联网接入带宽的费用是非常昂贵的。我问了其他同事,中国的互联网带宽费用大约是美国的20倍。独享带宽的价格显而易见是非常昂贵的。

  云计算非常适合的场景包括:开关模式、爆发增长模式等。购买独享带宽不能体现云计算弹性的优势。如果购买了独享的带宽的情况下,客户用不用云计算,带宽成本是必须支付的。假设用户购买了200M独享带宽,结果项目上线后发现用户量很少,互联网带宽闲置了,但是这200M带宽费用还是必须支付的。

  我们假设购买某云计算厂商的独享带宽200M,从其官网上可以看到,1个月的费用约为17717元。如下图:

  

  Azure带宽虽然是共享带宽,在笔者的项目经验中发现一般情况下单台Azure A3 VM(4Core/7GB)的带宽约为70MB。

  对应该厂商的带宽水平,3台Azure A3 VM做负载均衡,可以提供近似200MB的独享带宽水平。但是3台Azure A3 VM,每个月的价格仅仅为6071元。如下图:

  

  相比该云计算厂商的独享带宽200M的价格,微软Azure的价格还是非常具有竞争优势的。

  另外微软Azure的带宽是随着负载均衡服务器的数量增加而逐渐增加的。

  当实际项目上线后发现互联带宽不够怎么办,把更多的Azure VM加入到负载均衡器上。当我们发现互联网带宽闲置了,则将部分Azure VM关闭即可。

  这种Azure虚拟机动态增加/减少的优势,可以帮助客户极大的减少成本。

  

  2.分析互联网带宽内容

  客户又说,我们的应用需要支撑10万用户在线进行视频播放功能,我们需要独享带宽保证用户体验。

  我们分析一下该场景。当我们浏览一个网站的时候,其内容可以分为以下几个部分:

  (1)静态的HTML页面

  (2)静态的文件,如视频、照片、文档等

  (3)动态的编译页面,如ASPX,JSP等

  当用户访问的视频都是走主机(Azure VM)带宽的话,毫无疑问主机带宽越大越好。

  但是请大家别忘记了,Azure Block Blob每个文件提供60MB/S的互联网带宽,一个Storage Account提供10GB/S的互联网带宽。

  Azure Block Blob就类似于云网盘。

  我们只需要改变一下软件架构:

  -  动态编译的页面还是走主机带宽

  -  静态的文件,比如视频,保存到Azure Block Blob,例如地址为: http://leizhangstorage.blob.core.chinacloudapi.cn/videos/1.mp4

  -  静态的照片文件,保存到Azure Block Blob,例如:http://leizhangstorage.blob.core.chinacloudapi.cn/images/1.jpg

  通过将静态内容请求发送到Azure Storage,将动态内容的请求发送到Azure 云主机,就可以大大减少云主机独享带宽的的压力。

  接下来我们说一个案例。是我一个客户将在线培训系统迁移到Azure平台上。

  (1)项目背景:企业A在线培训系统,主要为企业内的员工进行在线视频培训。

  (2)现有架构:客户自建数据中心购买了60M独享带宽,所有的动态请求和静态视频文件都走该互联网带宽。

  (3)痛点:当需要培训的用户量爆发性增长的时候,60M带宽不能响应大并发请求。

  客户对视频文件还有安全性的要求,不能通过CDN服务来加快视频访问。所以只能将视频文件保存到Azure Storage,通过Azure Storage设置SAS Token来控制用户访问权限。

  在将该在线培训系统迁移到Azure云平台之前,我们还在全国8个不同的城市(北京、上海、广州、深圳、成都、杭州、青岛、福州)进行了Azure Storage下载压力测试,测试结果表明Azure Storage下载速度均达到了本地网络可允许的最大下载速度。

  该项目迁移到Azure云平台的整理架构图如下:

  

  该项目为混合云方式,既保留了本地数据中心的现有投入,又将视频流保存到Azure Storage以响应大并发请求。

  整体访问流程如下:

  (1)某员工通过手机应用,SSO单点登录到IDC 负载均衡器上(Load Balancer)

  (2)自建IDC数据中心的Web服务器将该请求生成一个Token,并且将Token发送到部署在Azure上的Web服务器。

  (3)Azure Web服务器将该Token返回到IDC数据中心的Web上进行验证,证明该请求是有效的。

  (4)Token验证通过后,Azure Web根据在线培训系统的业务逻辑,通过用户访问的ID,分别访问北京和上海的Storage Account。

  如果用户ID来自北方,则将位于中国北部(北京)的Azure Storage生成SAS(Shared Access Signature) 视频URL返回给客户端。

  如果用户ID来自南方,则将位于中国东部(上海)的Azure Storage生成SAS 视频URL返回给客户端。

  最后员工手机应用的视频链接地址,其实就是Azure 上海或北京的Storage生成的SAS URL。

  客户收益:

  (1)Azure Web服务器只验证了IDC数据中心发送的Token是否有效。所以视频流量不经过Azure Web服务器。如下图:

  

  可以看到,在过去7天时间内,Azure Web服务器的输出网络流量和输入网络流量均不超过75MB

  (2)Azure Storage用来保存视频文件,并返回SAS URL。视频流量都经过Azure Storage。如下图:

  

  可以看到,在过去7天,Azure Storage出口流量总计为276.5GB。

  Ticky:

  在之前的内容中,笔者介绍了Azure Block Blob每个文件提供60MB/S的互联网带宽,一个Storage Account提供10GB/S的互联网带宽。

  如果用户访问量非常大,超过了单个文件60MB/S的互联网带宽怎么办?很简单,只要我们将一个视频文件复制多个副本即可。

  我们将一个视频在同一个存储账号保存了6个副本,则一共有360MB/S的互联网带宽。

  我又同时在北京和上海有2个存储账号,则总体的互联网带宽水平为720MB/S。非常惊人了。

  笔者在Azure Web服务器上开发了一个小的程序,通过将不同的请求平均分配到不同的视频文件上。避免出现所有用户访问同一个视频文件,产生带宽性能瓶颈。

  

  

  ========================================================分隔符==========================================================

  好了,将了好的案例。我们再讨论一个不怎么成功的案例。

  某企业B将微信平台整体迁移到Azure云平台,因为其微信平台拥有300万粉丝,所以访问量也非常大。

  这里面牵涉到的负载均衡器的技术点,如下图:

  

  微软建议的负载均衡模式如上图左侧,通过将多个Azure VM防止在负载均衡器的后端,响应Internet的请求。

  而企业B的软件开发商只用一台Azure VM作为前置机,如上图VM1。所有的用户请求都发送到VM1上,再通过VM1的内网IP,分流到VM2和VM3上。

  这种架构的缺点有2个:

  (1)虽然VM3分摊了出站流量,但是VM1的公网入站流量会非常大。

  (2)VM1会出现单点故障,如果VM1宕机了,则整个应用平台不可用。

  另外客户低估了并发用户的请求,在项目上线之前把VM2关机了。整个架构中只有VM1和VM3在运行。

  而且客户没有把静态文件保存到Azure Storage中,所有的请求都是走主机带宽,压力会非常大。

  

  项目上线后,立刻出现问题。如下图:

  

  VM1这台前置机5分钟内的输入流量为9.28GB,输出流量带宽为3.05GB。网络直接卡死。服务宕机。

  经过这次不成功的经验,总结如下:

  (1)需要提前和客户沟通,做好上线评估

  (2)将文件占用主机带宽的弊端想客户说明。同时建议将静态文件保存至Azure Storage,避免占用主机带宽。

  

时间: 2024-10-18 00:18:58

Windows Azure HandBook (6) Azure带宽与Azure Blob云存储的相关文章

Windows Azure HandBook (9) Azure性能测试(2)

<Windows Azure Platform 系列文章目录> 在上一节中,笔者介绍了我们在Azure性能测试之前,首先需要提交<渗透性测试表> Windows Azure HandBook (8) Azure性能测试(1) 接下来,笔者将介绍做性能测试时,需要注意的问题介绍一下: (1)尽可能把测试机,与Web服务器,放在同一个内网进行性能测试 这样可以把网络延时带来的负面因素,降到最低 (2)如果测试机在本地,Web服务器在云端.需要考虑本地网络是否有足够的上行带宽,还要考虑本

Windows Azure HandBook (2) Azure China提供的服务

<Windows Azure Platform 系列文章目录> 对于传统的自建数据中心,从底层的Network,Storage,Servers,Virtualization,中间层的OS,Middleware,Runtime,最上层的Application,Data,都需要企业进行管理.这就好比农村自建房. 对于公有云平台,一般分为三种类型: IaaS, PaaS和SaaS. Microsoft Azure平台属于IaaS和PaaS范畴. 1. IaaS 对于用户来说,底层的Network,

Windows Azure HandBook (4) 分析Windows Azure如何处理Session

<Windows Azure Platform 系列文章目录> 本文是对笔者之前的文章Windows Azure Cloud Service (13) 多个VM Instance场景下如何处理ASP.NET Session的补充. 这里笔者将同时介绍IaaS和PaaS平台. 我们知道,在Windows Azure平台,Session是需要小心处理的.对于IaaS平台和PaaS平台,我们处理Session的方法如下: 一.创建额外的虚拟机,安装Nginx或者IIS ARR保留Session (1

Windows Azure HandBook (5) Azure混合云解决方案

<Windows Azure Platform 系列文章目录> 在很多情况下,我们都会遇到本地私有云和公有云做互通互联的混合云场景.对于这种混合云的场景,微软的Windows Azure会很好的解决. 从混合云的分类来说,微软将混合云分为以下三种: 1.虚拟化技术的混合云 2.网络层的混合云   (1)Point-To-Site VPN (2)Site-To-Site VPN (3)Express Route 3.应用层的混合云 Service Bus Relay On 一.虚拟化技术的混合云

为什么总连不上--之在Windows系统下使用CLI连接Microsoft Azure 21V版本

前几天客户的系统做升级,需要用到Azure CLI,客户那边新来的小朋友根据我给的教程连了一个下午都没连上.他告诉我之后,我火速帮他查到底哪出了问题,一直把报错的截图拿过来分析.我自己试了好几次都可以连上没问题.最后的最后,当我找到问题出在哪儿的时候,我简直是一脸小动物.好了,最靠谱的永远是自己.自己写一篇给客户好了.不废话开始做. 使用Azure CLI连接到订阅,有一个必要条件,那就是,必须要安装CLI.哈哈. 关于安装CLI的几种方法,如何安装.可以参考Microsoft Azure世纪互

Windows Azure Platform体验(2):SQL Azure

Windows Azure Platform有Windows Azure.SQL Azure.Azure AppFabric三部分. SQL Azure是云关系数据库.您的数据:随时随地管理.SQL Azure是云中的完全关系数据库. 这节我们体验SQL Azure,必备软件: Microsoft SQL Server 2008 R2 Windows Azure Platform账户 这次体验有下面几个步骤,分别是: 初始化SQL Azure 连接到SQL Azure 配置SQL Azure数据

使用python调用windows azure 云存储服务

前几天自己看了python,心痒痒,然后使用python来调用Windows azure云存储. 参考文章: 使用python调用windows azure 云存储服务 安装python 我在按照文章内容安装完python sdk for azure后,直接通过python编辑器调试. 在导入azure包时,未报错. from azure.storage import * 在执行BlobService对象时,未报错. blob_service = BlobService(account_name

使用Azure云存储构建高速 Docker registry

使用Azure云存储构建高速 Docker registry 使用Docker来构建应用程序最常见的操作就是 docker run 或者 docker pull了,但是由于众所周知的原因,在国内想要高速稳定的获取docker hub上面的资源并不是件容易的事情,虽然国内的一些docker社区也提供了所谓的加速器,但是实测结果并不理想.今天这篇文章就给大家介绍一下怎么借助Azure Storage来搭建一个高速的私有 Docker Hub (Registiry). 一图解千言,基本上一看你就明白了

如何通过Azure Service Management REST API管理Azure服务

通过本文你将了解: 什么是Azure Service Management REST API 如何获取微软Azure 订阅号 如何获取Azure管理证书 如何调用Azure Service Management REST API 什么是Azure Service Management REST API Azure Service Management REST API(之后简称为Azure REST API)是微软开放的一组REST API,它使得Azure用户不仅可以从Azure门户网站上对运