[Book]《云计算核心技术剖析》读书笔记

用了三周的时间把《云计算核心技术剖析》这本书给翻完了,总体来说还算可以,可以看出作者是下了功夫进行调研和总结的(一定程度上可以从书后的参考资料中反映出来),而不是东拼西凑胡乱抄出来的。可是非要说成“核心技术剖析”我觉得还有点儿牵强,有的内容比如Google App Engine的使用,Amazon EC2的使用等内容感觉深不深,浅不浅的,完全没有写进书里的必要。而对系统虚拟化的讲解又让人觉得太泛泛。不管怎么说,还是学到了不少东西,如果5星是满分的话,我给三星半^_^

下面是我的读书笔记,只是为了记录自己认为重要的东西,可能不太成体系。

云计算的商业模式

超市模式

云计算厂商提供一个云平台,在这个平台上提供丰富的信息服务供用户进行选择,服务按需购买,Amazon AWS,Windows Azure,IBM 蓝云就是此类模式。

电厂模式

云计算的终极模式,把云计算中心的建设纳入公共事业的范畴,就像发电厂供电一样。所有人都可以充分信任并自由访问所需的信息和服务,不会被某一个供应商锁定,价格上更有优势,安全性更高。

云计算的使用模式

公有云,私有云,混合云,行业云

云计算的架构

这块儿解释的很好,一张图把云计算的层次清晰的表示了出来,我原来就总是把SaaS,PaaS,IaaS这些概念弄混,现在就不会了。

注:架构图是从书上截取下来的,如果侵犯了作者的权益,请联系我,我会删除。。。


SaaS平台:

  • 最早最常见的云计算服务
  • 产品:Google的Gmail,Calendar,Docs等

PaaS平台:

  • 通过平台提供的开发环境编写和部署自己的应用
  • 高整合率,但不易上手(比如学习新的框架或语言等),主要面向开发人员
  • 这个平台有很多值得学习的技术,比如:REST,MapReduce,Memcached等
  • 产品:Google App Engine,Salesforce Force.com,Windows Azure

IaaS平台:

  • 用户直接从云计算中心获得所需的计算资源或者存储资源,按需付费,资源的管理和未来的扩展交给供应商负责
  • 整合率低,但是容易上手
  • 使用到很多热门的技术,例如分布式存储,非关系型数据库等
  • 产品:Amazon EC2,IBM 蓝云,思科UCS,Linode,Joyent

云管理层的架构


  • 这部分偏向运维,但是是必不可少的一个环节,不同产品的架构会包含不同的管理模块
  • 使用到的技术常见的有:单点登录,SSL加密,访问控制,安全策略等
下面按照各个公司分类,介绍一下目前比较著名的云计算产品。当然对于自己来说,我更关注他们使用的技术,这才是这些产品成功的关键所在。

Google

SaaS和PaaS层的服务Google已经做得非常出色了,可是相比其他业务,IaaS层业务的利润率相对较低,所以Google只推出了一个叫Google Storage的云存储服务。

但是,

在移动终端方面,Android得到了几乎所有手机厂商的认可

Chrome浏览器的市场占有率更是一举超越Firefox,它也是我的首选!

ChromeOS的推出标志着云操作系统的兴起。

 

OSDI和SOSP是ComputerSystem方向最顶级的会议,Google在其上发表了三篇论文展示了Google的三大核心技术:

1.《The Google File System》(SOSP’03)

Google使用的分布式文件系统,目前Google正在开发下一代GFS,代号为Colossus。

基于GFS的开源产品有HDFS。

2.《MapReduce: Simplified Data Processing on Large Clusters》(OSDI’04)

并行编程模型,用于进行大规模数据处理。

基于MapReduce的开源产品有非常火的Hadoop。

3.《Bigtable: A Distributed Storage System for Structured Data》(OSDI’06)

分布式数据库技术。内部存储模型使用了SSTable和memtable,SSTable自带Bloom过滤器,可以用来快速判定数据是不是存在于某个集合之内。SSTable的开源版本是HFile。

要想深入理解Bigtable,还是要看论文,查资料才行,书上的讲解只能了解个大概而已。

基于Bigtable的开源产品有Hbase,Hypertable,Facebook的Cassandra

其他的核心技术包括

4.《The Chubby lock service for loosely-coupled distributed systems》(OSDI’06)

一个分布式锁服务

5. Protocol Buffer

Google内部使用的一种数据交换的格式,它独立于语言,独立于平台。Google 提供了三种语言的实现:Java,C++ 和 Python。由于它是一种二进制的格式,比使用XML进行数据交换快10倍。代码托管在这里http://code.google.com/intl/en/apis/protocolbuffers/

相关技术:Facebook的Thrift,号称比Protocol Buffer在速度上更快。

6. Sawzall

类似Java语法的DSL(Domain-Specific Language,领域特定语言),分布式的AWK。用于对大规模分布式数据进行筛选和聚合。

相关技术:Yahoo的Pig语言。

7.MySQL sharding

数据库分片技术。Google使用的关系型数据库针对海量数据的优化和扩展。

有一门Google 101的课程由Google高级工程师在华盛顿大学开设,主要介绍Google使用的分布式技术,很值得学习!这里http://docs.huihoo.com/mapreduce/和这里http://code.google.com/intl/en/edu/parallel/有相关的资料可以参考

认识了一位超级大牛,JeffDean,Google的软件架构天才,他曾参与了 Google爬虫、索引、搜索服务、广告等系统的设计,还设计了MapReduce以及BigTable等分布式架构。
神一样的存在!这里是他的介绍http://research.google.com/people/jeff/
这里http://stanford-online.stanford.edu/courses/ee380/101110-ee380-300.asx是他在Stanford大学的演讲,主题是《Building Software Systemsat Google and Lessons Learned》。他还在LADIS’09大会做了演讲,主题是《Designs, Lessons and Advice from Building Large Distributed Systems》,演讲中提到了很多Bigtable的新特性。

GAE(Google App Engine)用到的一些技术

Google使用的技术一向非常优秀,值得关注:用户认证方面的OAuth,进行IM通信的XMPP服务,Blobstore,Comet技术,CGI(Common Gateway Interface,通用网关接口)web编程模型。

GAE是一个优秀的PaaS平台,除了部署Web应用之外,还可以学到很多PaaS技术。

Salesforce

云计算推广与应用的领袖之一,这个确实了解的不多。

它的核心就是多租户架构的PaaS平台:Force.com

VMware

Cloud Foundry:新一代PaaS平台,开源项目,支持Spring,Rails,Sinatra,Node.js等框架,与Engine Yard,Heroku类似。系统自带了MySQL,Redis,MongoDB,RabbitMQ等服务。

VMware不过多介绍了,闭源的东西不太感兴趣。

Amazon

Amazon AWS(Amazon Web Service)的推出极大的推动了云计算的应用和发展。

AWS是亚马逊云计算产品的集合,比较知名的就是Amazon EC2(Elastic Compute Cloud)和S3(SimpleStorages Service),另外还包括SimpleDB,CloudFront等。这里http://aws.amazon.com/products/有所有产品和服务的列表,一共13类27种,非常之全面。

亚马逊的CEO杰夫·贝索斯(Jeff Bezos)其实是一位不逊于乔布斯的领导人,他一手缔造了全球最大的电子商务网站,改变着人们的消费习惯。值得一提的是,亚马逊的Kindle Fire平板电脑已经上市开卖了,只要199美金!

Amazon EC2

世界最大的虚拟机集群。主要模块有:

AMI:Xen虚拟机的镜像,类似于一个虚拟器件,亚马逊自有格式。

实例:AMI启动之后运行的虚拟机。

存储:本地存储和基于网络的EBS(ElasticBlock Store,弹性块存储)

安全:SSH密钥,X.509证书

web管理界面

API:基于REST和SOAP(SimpleObject Access Protocol,简单对象访问协议)

Facebook

Open Compute:开源硬件项目,介绍了Facebook数据中心使用的最新技术,比如如何降低能耗,如何加强用电安全等。

Cassandra:集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身。于2008将 Cassandra 开源,由于Cassandra良好的可扩放性,被Digg、Twitter等知名Web 2.0网站所采纳,成为流行的分布式结构化数据存储方案。主页:http://cassandra.apache.org/

Cisco

致力于帮助企业搭建私有云,推出Cisco UCS(Unified Computing System,统一计算系统)

UCS是IaaS层的解决方案,可以通过购买UCS来部署VMware vSphere,搭建云平台。

简单来说,UCS就是一套经过大量定制,并对虚拟化做了大量优化的刀片系统。

网络和硬件我接触的不多,书上一大堆术语和缩写让人眼花缭乱,暂时不表。

开源项目YunTable

云计算行业最核心的两项技术,一是系统虚拟化技术,它是IaaS的核心组件,相关产品有Xen,KVM,vSphere;二是分布式数据库技术,它是PaaS的核心模块,相关产品有Google的Bigtable,Apache的HBase,Facebook的Cassandra。

作为一个程序员,如果不去亲自开发和实现一下这些技术,那么掌握的只是类似使用经验之类的皮毛而已,这是作者的观点,当然我也完全赞同,虽然说不要重复造轮子,但是造出轮子的能力还是要掌握的,所以作者自己按照Bigtable的设计思想开发了YunTable,其实就是Bigtable的精简版实现,类似Drizzle是MySQL的精简版一样。

然后花了很多篇幅剖析YunTable的实现,我倒是觉得这部分完全可以放到网上去,随着项目的进行实时更新,毕竟这个项目刚起步,以后代码的变动会很大,现在把简单的原型直接写到书里,没什么意义。

云安全

安全问题是企业引入云计算技术的最大顾虑。

学术界的研究热点领域,包括云平台的安全,云终端的安全。

云供应商比用户更在意数据的完整性,保密性和安全性问题。

技术的进步将使云计算比现有的IT模式更安全。

系统虚拟化技术

Hypervisor主要有两类,一种直接安装在硬件上,称为Type 1,比如Xen;另一种安装在操作系统之上,称为Type 2,比如VirtualBox。

这块虽然属于我比较熟悉的领域,但是远没有到精通的程度,只介绍几个主流的产品,要想达到开发的程度还需要不断的努力才行!(自勉)

VMware vSphere,当然,它是闭源的。

Xen,开源虚拟机监视器的代表。

KVM,红帽现在主推这个Hypervisor。

Intel也在发力虚拟化,引入了VT硬件虚拟化技术,包括VT-x,VT-d,VT-c,EPT,PLE等一系列相关技术。

 

网络虚拟化和动态迁移被单独列出来讨论了一番。

虚拟器件开始被越来越多的企业所接受。

学到的一些名词:

IDC:Internet Data Center,互联网数据中心

HPC:High Performance Computing,高性能计算

CDN:Content Delivery Network,内容分发网络

DDoS:Distributed Denial of Service,分布式拒绝服务攻击

SSL:Secure Sockets Layer,安全套接层


没有更多推荐了,返回首页