Upload
lorne
View
209
Download
0
Embed Size (px)
DESCRIPTION
Windows Azure 存储. 演讲者 职位 公司. Version: November, 2012. Windows Azure 存储. 在云中的存储 高扩展,高可靠和高可用性 在任何地方任何时间访问 只为使用付费 通过 RESTful 的 Web Service 从 Windows Azure Compute 使用 从互联网上的任何地点使用. Azure 存储与服务总线. .NET. Java. Ruby. 其他 REST 客户端. Azure 虚拟机. Python. Node.js. PHP. REST 接口. Blobs - PowerPoint PPT Presentation
Citation preview
Windows Azure 存储演讲者职位公司
Version: November, 2012
Windows Azure 存储在云中的存储高扩展,高可靠和高可用性在任何地方任何时间访问只为使用付费通过 RESTful 的 Web Service从 Windows Azure Compute 使用从互联网上的任何地点使用
TablesNoSQL 数据表 Queues消息队列Blobs二进制文件存储
Azure 存储与服务总线
数据高可用:本地三份拷贝同步复制容灾:本区域异地异步复制
可扩展性(性能 /容量):数据切分安全性:认证授权
REST接口
.NET Java Ruby
Python Node.js
PHP
Service Bus消息总线
支持事务、保证顺序、重复检测、支持阻塞
其他REST 客户端
Azure 存储 Azure 服务总线
队列主题
Azure 虚拟机
Windows Azure 存储账户使用特殊的全球唯一账户名
北美中心 北欧西欧
东亚东南亚
美洲 欧洲 亚洲可以选择地理位置来存储
南美中心
美西 美东
Azure 存储天然具备高可用和异地灾备能力• 存储虚拟机磁盘、文件、队列消息、表• 提供 99.9% 的 SLA 保证• 数据永不丢失
• 本地 3 份拷贝,实时复制,自动容错• 数据实时复制到灾备中心, 0 管理
写入
上海北京
读取 异地读取
实时复制
存储后台架构• 单集群 20 柜,每柜 36 服务器• 每服务器 18 磁盘,每磁盘 2T• 单集群规模: 20 多 PB
• 单 Blob 吞吐量: 60MB/s• 单 Blob IOPS : 500 ,延迟
5ms• 单 Blob 大小: 1T• 单 partition 2000 对象 /s• 单存储账号容量: 200T
如何使用 Azure 存储C#/.NETPythonRubyPerlJavaScript (Node)JavaPHPErlangCommon LISPObjective-CC#/VB on Windows Phone 7
1. 虚拟机磁盘 -Blob
2. 存储管理工具,如 Storage Explorer
3. 利用 SDK 开发程序4. 直接封装 REST 协议
存储 SDK
在 Development Fabric 中的存储提供本地“ Mock” 存储模拟在云中的存储允许离线开发需要 Express 2005/2008 或更新
http://msdn.microsoft.com/en-us/gg433135
存储安全性Windows Azure 存储提供了简单的安全性来调用存储服务HTTPS 端口对于授权的操作需要数字签名请求每个账户有两个 512bit 对称密钥能够独立生成通过共享的访问签名实现更多颗粒的安全性
Windows Azure Storage 抽象
Tables结构化的存储。一张表是实体的集合,一个实体是属性的集合。
Queues可靠的消息存储和发送Blobs简单命名的文件和元数据
Blob 存储
Blob Storage 概念BlobContainer账户
http://<account>.blob.core.windows.net/<container>/<blobname>
Pages/ Blocks
contoso
PIC01.JPG
Block/Page
Block/Page
PIC02.JPGimages
VID1.AVIvideos
Blob 细节主要 Web
Service 操作PutBlobGetBlobDeleteBlobCopyBlobSnapshotBlob LeaseBlob
Blob Containers每个账户多个 Containers特殊的 $root container
Blob Container一个 container 包含 blob 的集合在 container 级别设置访问策略和 Container 相关的元数据列出 container 里面所有的 blob包括 Blob Metadata 和 MD5 没有查询 . i.e. 没有 WHERE MetadataValue = ?
Blobs 带宽目标是 60MB/s 每个 Blob
GET http://.../products?comp=list&prefix=Tents&delimiter=/
<Blob>Tents/PalaceTent.wmv</Blob><Blob>Tents/ShedTent.wmv</Blob>
遍历 Blobs
获取 Blob 的操作需要参数前缀分隔符包括 = (snapshots, metadata etc…)
http://adventureworks.blob.core.windows.net/ Products/Bikes/SuperDuperCycle.jpg Products/Bikes/FastBike.jpg Products/Canoes/Whitewater.jpg Products/Canoes/Flatwater.jpg Products/Canoes/Hybrid.jpg Products/Tents/PalaceTent.jpg Products/Tents/ShedTent.jpg
http://.../products?comp=list&prefix=Canoes&maxresults=2
&marker=MarkerValue
<Blob>Canoes/Hybrid.jpg</Blob>
分页Blob 的列表可以分页要么设置 maxresults 或者 ;超过默认值maxresults (5000)
http://.../products?comp=list&prefix=Canoes&maxresults=2
<Blob>Canoes/Whitewater.jpg</Blob><Blob>Canoes/Flatwater.jpg</Blob><NextMarker>MarkerValue</NextMarker>
Blob 服务之旅演示
两种类型的 Blob
块 Blob用于流访问每个 blob由一个块的序列组成每个块通过块 Id区分每个 blob最大 200GB
通过 Etags优化并发
页 Blob用于随机读写访问每个 blob由页的数组组成每个页通过 offset 来区分每个 blob最大 1TB
通过租用 (leases)优化
TheBlob.wmv
上传 Block Blob上传一个大的 blob
10 GB Movie
Bloc
k Id
1Bl
ock
Id 2
Bloc
k Id
3
Bloc
k Id
N
blobName = “TheBlob.wmv”;PutBlock(blobName, blockId1, block1Bits);PutBlock(blobName, blockId2, block2Bits);…………PutBlock(blobName, blockIdN, blockNBits);PutBlockList(blobName,
blockId1,…,blockIdN);
TheBlob.wmv
好处有效延续和重试并行,顺序无关
THE BLOB
Windows AzureStorage
页 Blob – 随机读 / 写创建MyBlob定义 Blob 大小 = 10 Gbytes稀疏存储 - 只为存储的页付费固定页大小 = 512 bytes随机访问操作
PutPage[512, 2048)PutPage[0, 1024)ClearPage[512, 1536)PutPage[2048,2560)
GetPageRange[0, 4096) 返回有效数据范围 :[0,512) , [1536,2560)
GetBlob[1000, 2048) 返回All 0 for first 536 bytesNext 512 bytes are data stored in [1536,2048)
0
10 GB
5121024153620482560
10 GB Address Space
增强的安全性:共享访问签名良好的访问权限 blobs 和 containers和存储 Key 一起签名的 URL– 允许提升权限废止使用短时间和重新提交使用可删除的 container 级别的策略2种方法Ad-hoc基于策略 App
存储服务
Server 端应用1. 申请图片地址
2. 利用密钥申请签名
4. 返回签名
5. 访问图片
Ad Hoc 签名创建短时间的共享访问签名Signedresource Blob or ContainerAccessPolicy Start, Expiry and PermissionsSignature HMAC-SHA256 of above fields
用例Single use URLsE.g. 提供一个 URL给 Silverlight 客户端来上传文件
http://...blob.../pics/image.jpg?sr=c&st=2009-02-09T08:20Z&se=2009-02-10T08:30Z&sp=w
&sig= dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN%2fRnbI%3d
创建 Container 级别的策略 定义 StartTime, ExpiryTime, Permissions
创建共享访问签名 URLSignedresource Blob or ContainerSignedidentifier Optional pointer to container policySignature HMAC-SHA256 of above fields
用例提供可撤销的权限给特殊的用户 /组撤销 : 删除或更新 container 策略
http://...blob.../pics/image.jpg?sr=c&si=MyUploadPolicyForUserID12345
&sig=dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN%2fRnbI%3d
基于策略的签名
内容分发网络 (CDN)高带宽的全球 blob内容分发24 全球位置 ( 美国,欧洲,亚洲,澳大利亚和南美 ), 还在增加无论用户在地球的什么地方,无论存储账户在哪里,体验完全相同Blob 服务 URL vs. CDN URL:Windows Azure Blob URL: http://images.blob.core.windows.net/Windows Azure CDN URL: http://<id>.vo.msecnd.net/ CDN 自定义域名 : http://cdn.contoso.com/
pic1.jpg
Windows Azure CDN
开始 CDN:通过 Dev Portal注册 CDN将 Contaner 设置为公共
pic1.jpg
GEThttp://guid01.vo.msecnd.net/images/pic.1jpg
http://sally.blob.core.windows.net/images/pic1.jpg
http://sally.blob.core.windows.net/ http://guid01.vo.msecnd.net/
pic1.jpg
404
TTL 内容分发网络
Windows Azure Blob 服务
EdgeLocation
EdgeLocation
EdgeLocation
表
表存储概念实体表账户
contoso
Name =…Email = …
Name =…EMailAdd=
customers
Photo ID =…Date =…
photos
Photo ID =…Date =…
Table 细节
InsertUpdate Merge – 部分更新Replace – 更新全部实体UpsertDeleteQueryEntity Group Transaction多个 CUD 操作在一个原子事务中
Create, Query, Delete表可以有元数据不是 RDBMS! Table
实体
Entity 属性实体可以拥有最多 255 个属性每个实体 1MB
对每个实体的强制属性PartitionKey & RowKey ( 只有索引的属性 )唯一实体区分定义排序顺序时间戳优化并发作为 Etag暴露对其他属性没有固定的 schema每个属性存为 <name, typed value> 对没有表的 schema属性可以是标准 .NET 类型String, binary, bool, DateTime, GUID, int, int64, and double
没有固定 Schema
FIRST LAST BIRTHDATE
Wade Wegner 2/2/1981
Nathan Totten 3/15/1965
Nick Harris May 1, 1976
FAV SPORT
Canoeing
查询FIRST LAST BIRTHDAT
E
Wade Wegner 2/2/1981
Nathan Totten 3/15/1965
Nick Harris May 1, 1976
?$filter=Last eq ‘Wegner’
PartitionKey 的目的本地实体相同 partition 的实体会存储在一起有效地查询和本地缓存所有查询中包含 partition key
Entity Group Transactions相同 Partition 中的多个 Insert/Update/Delete 操作在一个事务中Table 扩展性目标流量 – 500 tps/partition, 几千个 tps/accountWindows Azure 监控分区的模式自动负载均衡每个分区能在不同的存储节点上操作满足表的扩展需求
PARTITIONKEY(CATEGORY)
ROWKEY(TITLE) TIMESTAMP MODELYEAR
Bikes Super Duper Cycle … 2009
Bikes Quick Cycle 200 Deluxe … 2007
… … … …Canoes Whitewater … 2009Canoes Flatwater … 2006
PARTITIONKEY(CATEGORY)
ROWKEY(TITLE) TIMESTAMP MODELYEAR
Rafts 14ft Super Tourer … 1999
… … … …
Skis Fabrikam Back Trackers … 2009
… … … …Tents Super Palace … 2008
PARTITIONKEY(分类 )
ROWKEY(标题 ) 时间戳 模型年份
Bikes Super Duper Cycle … 2009
Bikes Quick Cycle 200 Deluxe … 2007
… … … …Canoes Whitewater … 2009Canoes Flatwater … 2006Rafts 14ft Super Tourer … 1999… … … …
Skis Fabrikam Back Trackers … 2009
… … … …Tents Super Palace … 2008
分区和分区范围
Server ATable = Products
Server BTable = Products
[Canoes - MaxKey)
Server ATable = Products
[MinKey - Canoes)
队列
Queue Storage 概念消息表账户
customer ID order ID http://…
adventureworks
order processing
customer ID order ID http://…
利用队列实现松耦合的工作流在角色之间完成工作流从队列中载入工作生产者可以在放入队列后忘记它的存在多个工作者可以消费队列极端流量 (>500 tps) 使用多个队列批读取消息每个消息多个工作
队列输入队列 ( 工作项 )
Web Role
Web Role
Web Role
Worker Role
Worker Role
Worker Role
Worker Role
队列细节简单的异步分发队列不限制队列长度每个消息 64kb ListQueues - 列出账户下所有的队列队列操作CreateQueue DeleteQueueGet/Set MetadataClear Messages
队列细节消息操作PutMessage– 写入消息GetMessages – 读取一条或多条消息并且隐藏他们PeekMessages – 读取一条或多条消息但不隐藏他们DeleteMessage – 永久从队列删除一条消息UpdateMessage – 客户端更新租用和内容
队列的可靠分发保证分发 /处理消息( 2步处理)工作者读取消息并且标记为不可见,在一定的“不可见时间”工作者在处理完成后删除消息如果工作角色崩溃,消息重新变成可见
© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a
commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Translated to Chinese Simplified Version by Shanghai Yungoal Info Tech Co., Ltd.