飞天开放平台编程指南——阿里云计算的实践(双色)

飞天开放平台编程指南——阿里云计算的实践(双色)

周憬宇,李武军,过敏意编著

ISBN 978-7-121-19699-7

20133月出版

定价:59.00

256

16

飞天开放平台编程指南——阿里云计算的实践(双色)

内容提要

飞天开放平台是阿里云计算有限公司(http://www.aliyun.com)自主研发的云计算平台。飞天开放平台负责管理数据中心Linux集群的物理资源,控制分布式程序运行,隐藏下层故障恢复和数据冗余等细节。飞天开放平台提供了弹性计算、负载均衡、数据存储,以及大规模计算等一整套的云计算公共服务,从而降低了互联网应用创新的技术门槛。本书主要面向云计算的开发者,不但由浅入深地说明了云计算的相关原理,而且用很多实例详细讲解了怎样利用飞天开放平台的编程接口来开发各种互联网应用和服务,让用户便捷地利用数千台服务器来完成以前不能完成甚至不敢想象的任务。这是一本将云计算原理与实践紧密结合的书,相信对广大云计算的研究者和爱好者也大有裨益。

目录

第1章绪论1

1.1云计算的背景.....................................................................................................1

1.1.1云计算的概念...........................................................................................................1

1.1.2云计算的类型...........................................................................................................3

1.1.3业界主要的云计算提供商........................................................................................4

1.2阿里云的定位.................................................................................5

1.3云生态系统....................................................................................................6

1.4内容总览.................................................................................................7

第2章飞天开放平台总览8

2.1飞天平台体系架构.................................................................................8

2.2飞天平台内核..............................................................................9

2.2.1分布式系统底层服务................................................................................................9

2.2.2分布式文件系统(盘古)......................................................................................11

2.2.3资源管理和任务调度(伏羲)..............................................................................13

2.2.4集群监控和部署.....................................................................................................14

2.3飞天开放服务............................................................................16

2.3.1弹性计算服务(ECS)..........................................................................................16

2.3.2开放存储服务(OSS)..........................................................................................17

2.3.3开放结构化数据服务(OTS)..............................................................................17

2.3.4关系型数据库服务(RDS)..................................................................................18

2.3.5开放数据处理服务(ODPS)...............................................................................18

2.3.6云服务引擎(ACE)..........................................................................................19

第3章弹性计算服务ECS 20

3.1术语及概念.........................................................................21

3.2云服务器使用流程...................................................................22

3.2.1购买并创建云服务器..............................................................................................23

3.2.2启动、停止和重启云服务器..................................................................................23

3.2.3重置云服务器.........................................................................................................24

3.2.4修改云服务器密码.................................................................................................24

3.2.5远程登录云服务器.................................................................................................24

3.2.6数据盘分区、格式化和挂载...............................................................26

3.3利用API管理ECS........................................................................28

3.3.1公共参数和返回结果..............................................................................................28

3.3.2云服务器控制.........................................................................................................30

3.3.3镜像和快照.............................................................................................................36

3.3.4安全组.....................................................................................................................39

3.4负载均衡(SLB).............................................................................................................41

3.5云盾...............................................................................................42

3.6云监控..................................................................................43

3.7自动故障恢复.......................................................................43

3.8应用架构修改............................................................................44

3.9应用案例..........................................................................44

第4章开放存储服务OSS 46

4.1术语及概念..........................................................................46

4.1.1 Object.......................................................................................................................46

4.1.2 Bucket ......................................................................................................................47

4.1.3访问控制.................................................................................................................47

4.1.4外链规则.................................................................................................................48

4.1.5 Access ID和Access Key ........................................................................................48

4.1.6使用OSS.................................................................................................................49

4.2 RESTful API.......................................................................................................................50

4.2.1 Service操作............................................................................................................50

4.2.2 Bucket操作.............................................................................................................50

4.2.3 Object操作..............................................................................................................52

4.2.4分块上传(Multipart Upload)操作......................................................................56

4.3 Python SDK的使用..............................................................59

4.3.1 Bucket操作.............................................................................................................60

4.3.2 Object操作..............................................................................................................68

4.3.3分块上传(Multipart Upload)操作......................................................................76

4.3.4签名URL ................................................................................................................80

4.4应用案例...............................................................................81

第5章开放结构化数据服务OTS 82

5.1术语及概念..........................................................................................83

5.1.1表.............................................................................................................................83

5.1.2视图.........................................................................................................................84

5.1.3表组.........................................................................................................................85

5.1.4命名和限额.............................................................................................................86

5.1.5事务.........................................................................................................................86

5.1.6访问权限控制.........................................................................................................86

5.2 RESTful API.......................................................................................................................87

5.2.1表操作.....................................................................................................................87

5.2.2插入和修改操作.....................................................................................................88

5.2.3查询操作.................................................................................................................88

5.2.4事务操作.................................................................................................................88

5.3 Python SDK的使用..................................................................89

5.3.1表操作.....................................................................................................................91

5.3.2插入和修改操作.....................................................................................................96

5.3.3查询数据...............................................................................................................101

5.3.4事务操作...............................................................................................................104

5.4应用案例.......................................................................106

第6章关系型数据库服务RDS 107

6.1术语及概念.......................................................................................108

6.2自动故障恢复..............................................................................109

6.3分布式RDS...........................................................................110

6.4利用客户端软件进行数据库管理........................................................110

6.4.1实例管理...............................................................................................................111

6.4.2数据库管理...........................................................................................................112

6.4.3连接数据库...........................................................................................................112

6.4.4表管理...................................................................................................................113

6.4.5备份恢复...............................................................................................................114

6.4.6数据迁移...............................................................................................................114

6.4.7性能分析...............................................................................................................115

6.5利用API进行数据库管理................................................................115

6.5.1公共参数和返回结果............................................................................................116

6.5.2 API接口的使用....................................................................................................117

6.6应用案例..............................................................................127

第7章开放数据处理服务ODPS 128

7.1术语及概念....................................................................................128

7.2应用开发框架.............................................................130

7.2.1体系架构...............................................................................................................130

7.2.2应用开发模式.......................................................................................................131

7.3 ODPS SQL开发........................................................................132

7.3.1应用示例描述.......................................................................................................133

7.3.2数据导入...............................................................................................................134

7.3.3基本功能...............................................................................................................135

7.3.4高级功能...............................................................................................................136

7.4 ODPS MapReduce开发............................................................140

7.4.1入门实例WordCount............................................................................................140

7.4.2开发实战...............................................................................................................155

7.5应用案例.......................................................................................172

第8章典型应用案例解析173

8.1传统互联网应用....................................................................173

8.1.1中国网络电视台体育台........................................................................................173

8.1.2御泥坊...................................................................................................................175

8.1.3够快.......................................................................................................................175

8.2移动互联网应用.........................................................................176

8.2.1 DeNA.....................................................................................................................176

8.2.2壹人壹本...............................................................................................................176

8.2.3金立.......................................................................................................................177

8.3企业级SaaS应用...............................................................................177

8.3.1用友畅捷通...........................................................................................................177

8.3.2商派.......................................................................................................................178

8.4新型互联网应用和服务.........................................................179

8.4.1阿里云搜索...........................................................................................................179

8.4.2阿里金融...............................................................................................................180

附录A飞天开放服务开通流程181

附录B RESTful API和身份验证184

B.1 RESTful API....................................................................................................................184

B.2 ECS身份认证.................................................................................................................185

B.3 OSS身份认证......................................................................................186

B.3.1在Header中包含签名.........................................................................................186

B.3.2在URL中包含签名.............................................................................................188

B.4 OTS身份认证.............................................................................189

B.4.1 OTS请求的签名..................................................................................................189

B.4.2 OTS响应的签名..................................................................................................190

B.5 RDS身份认证...........................................................................191

附录C用OSS构建同步备份网盘193

C.1网盘功能、设计与使用..................................................................................................193

C.1.1网盘功能:自动备份和同步多个设备...............................................................193

C.1.2网盘设计...............................................................................................................193

C.1.3网盘安装和使用...................................................................................................194

C.2源代码............................................................................................195

C.2.1 netdisk.py ..............................................................................................................196

C.2.2 fs/filesystem.py .....................................................................................................198

C.2.3 fs/hddfs.py.............................................................................................................201

C.2.4 fs/ossfs.py..............................................................................................................204

C.2.5 fs/couldnotconnectserverexception.py ..................................................................207

C.2.6 eventhandlers/netdiskeventhandler.py...................................................................207

附录D云应用引擎CAE编程211

D.1云应用开发入门.........................................................................212

D.1.1快速创建一个云应用...........................................................................................212

D.1.2云应用文件结构...................................................................................................215

D.1.3页面生命周期.......................................................................................................215

D.1.4新建页面..............................................................................................................216

D.1.5页面之间相互跳转...............................................................................................217

D.1.6引入第三方类库...................................................................................................218

D.1.7调用云端接口.......................................................................................................219

D.1.8调用CloudAPI .....................................................................................................222

D.1.9监听云应用的挂起和唤醒...................................................................................223

D.1.10请求和操作XML...............................................................................................224

D.1.11在线调试............................................................................................................225

D.2用户界面开发............................................................................227

D.2.1滚动条..................................................................................................................227

D.2.2提示框..................................................................................................................228

D.2.3 jQTouch ................................................................................................................229

D.2.4 Sencha Touch........................................................................................................230

D.3云应用开发实例.......................................................................232

D.3.1花名册程序...........................................................................................................232

D.3.2地图程序..............................................................................................................237

D.4设计指南与注意事项..................................................................239

D.4.1云应用设计指南...................................................................................................239

D.4.2设计中的注意事项...............................................................................................240

D.4.3云应用审核指南...................................................................................................240

参考文献..................................................................................................241

媒体评论

云计算是近5年来全球IT领域最热的概念之一。在我看来,其本质就是计算和数据的集中化,是另一次大规模的社会分工。由于大规模互联网技术和基础设施逐渐成熟,我们今天有可能将千千万万的企业和数以十亿计的消费者乃至更大数量的物联网信息终端的计算需求集中起来,让少数规模庞大的计算/信息运营商专门负责,从而大大提高整个计算系统的效率和灵活性,同时也大大提升用户体验,让计算更加透明化。

这与电气化时代随着高压交流电网技术的成熟,居民区和企业不再需要自己发电,发电能力几乎完全集中到大规模电网惊人地相似。其结果是用电只需要按一下按钮、将插头插入墙上的插座,完全不需要考虑电是从哪个发电厂、哪个发电机发出来,又是从哪条线路输配来的。而且在一定程度上,你想用多少电,就可以用多少电。

与电力集中化之后,发电和电网发展出一整套极为精密复杂的技术类似,云计算很可能使计算技术的各个领域发生一次大的变革。我们已经看到Google几年前就提出了“数据中心就是计算机”。如果未来主要的设计对象是数万、数十万乃至数百万台服务器或者计算单元,我们的计算、存储和网络硬件,操作系统、数据存储软件、计算系统、编程语言以及框架、应用软件都应该如何变化和创新?

在系统软件层面,Google MapReduce、Big Table、GFS以及Amazon Dynamo等研究和实践,催生了Hadoop和NoSQL等云计算的一系列核心技术。而最近Google又先后推出Dremel、Pregel、Megastore和Spanner等新的架构。还有OpenStack、低功耗定制服务器、OpenFlow、异构计算、众核等,都成为技术热点。

作为技术人员,身处变革时代,随时关注这些技术新趋势是非常必要的。但不能纸上谈兵,必须结合实践,从实践出发。

中国真正开始有影响的云计算实践相对较晚。其中,阿里云无论规模还是布局都是其中的佼佼者。而且它的技术体系是自行研发的,有自己的特色,一直是业界关注的焦点。此次阿里云的一线开发者们与上海交通大学合作,系统地阐述了阿里云的整个技术架构,介绍了各项云服务的技术细节和应用案例,对国内广大云计算平台的建设和运营者、云计算平台上的应用开发者而言,都是非常珍贵的第一手技术资料。顾名思义,本书的主要读者是基于云服务的应用开发者。

在阅读本书的过程中,我也有一点遗憾,就是书中没有一个大的案例讲述在云计算环境下全新的应用开发的宏观图景,有哪些重要的技术决策点,什么时候该用什么服务,整体架构上又需要注意什么,后期运维和应用的维护又需要注意什么等。但瑕不掩瑜,从本书中还是能很好地了解到一个功能较全(从IaaS、PaaS到SaaS)的实际云计算平台是什么样子的。

云计算虽然是大势所趋,前景光明,但实现的困难也是前所未见的。Google这么强大,它的GAE总体上却说不上成功;Amazon虽然在国外已经有了云计算霸主的雏形,但大大小小的事故不时见诸报端。中国的云计算之路也不会那么平坦。作为先行者,必须有筚路蓝缕、以启山林的决心和勇气。云计算很可能是有史以来最大的计算工程(这几天恰好看到有分析说现在一次Google搜索所需的计算量比当年整个Apollo登月项目还大),开放和合作是必然选项。愿国内云计算从业者共同努力。

刘江

全球最大中文IT社区CSDN暨权威技术媒体《程序员》总编

 

前言

光阴似箭。从我们2007年开始关注和研究云计算及其密切相关的方向,例如数据密集型可扩展计算、大数据处理等,到现在已有五年的时间了。这五年来,我们在相关研究方向进行了深入的研究,并发表了一系列学术论文。特别是在2010年初,由阿里云牵头成功申请了国家科技部“863高科技攻关”重大项目《以支撑电子商务为主的网络操作系统》,我们作为主要成员参与了该项目的申请。从那时起,我们就一直和阿里云保持着深度合作关系,一起研发飞天开放平台(简称“飞天”或者“飞天平台”)。可以说,我们见证了阿里云一路的成长历程。在紧密的产学研合作过程中,我们所在的上海交通大学嵌入式与普适计算中心团队和阿里云实现了双赢。一方面,我们紧跟学术前沿,在相关方向上取得了多项研究成果,为飞天平台的相关核心技术提供了建议与参考。另一方面,飞天为我们进行科研实验提供了很好的大数据处理平台。同时,阿里云在研发飞天过程中碰到的实际问题也为我们进行前沿探索提供了很好的科研选题方向。经过对飞天核心技术的了解,以及在使用飞天的过程中,我们逐渐体会到飞天技术的先进和带给广大使用者的便利。我们觉得有必要把飞天介绍给广大的科研工作者、开发人员以及高校的教师和学生,让大家一起分享云计算的落地之美。因此,我们决定撰写这本书来全面介绍飞天平台。

本书不但由浅入深地阐述了云计算的相关原理,而且用很多实例详细讲解了怎样利用飞天平台的编程接口来开发各种互联网应用和服务,让用户便捷地利用数千台服务器来完成以前不能完成甚至不敢想象的任务。具体内容涵盖了云计算的概念、云计算体系结构、分布式处理、虚拟化与弹性计算、云存储、海量结构化数据处理、海量数据分析与挖掘、云计算编程模型、移动终端开发等。本书适合广大云计算的研究者和开发者。

本书的三位作者根据自己的研究方向进行了分工:过敏意负责第1章和第2章的撰写;周憬宇负责第3、第4、第5、第8章的撰写;李武军负责第6章、第7章和附录D的撰写。

由于整个飞天平台是阿里云上千名研究人员与工程师耗时三年多完成的研发成果,我们虽然从一开始就跟阿里云奋斗在一起,也很难把握整个平台的所有细节。所幸的是,阿里云为我们提供了全方位的帮助和支持,最终使得我们能够顺利完成本书。在本书的撰写过程中,阿里云授权我们使用飞天所有的文档资料。同时,阿里云的很多员工也为我们撰写或者修改了部分章节。为本书提供帮助的阿里云员工有:蔡华、蔡艳明、陈波、陈金培、韩定一、何云飞、李静怡、刘飞、刘湘雯、吕霜融、倪浩、仇应俊、伞兴、孙冰、谈慧杰、唐洪、汤子楠、王乐珩、王立、王敏、王明建、吴锦波、徐常亮、薛贵荣、颜薇佳、杨少华、应叶琦、余碧华、张东晖、张敬、张盛广、张云远、张卓、周光辉、周琦、周晓静等。另外,作者的研究生刘坤林、刘志权、钱龙、邱爽等参与了该书的校对工作。没有他们的帮助,我们不可能完成该书的写作,在此对他们表示衷心的感谢!

感谢阿里云总裁王坚博士在我们写作过程中提供的指导和鼓励,也感谢《程序员杂志》主编刘江博士在百忙之中抽出时间给我们作序。

上海交通大学

周憬宇李武军过敏意

2012年11月18日于西子湖畔