网格计算与云计算
网格计算
- 强调聚合分布的资源
- 强调虚拟组织,立足特定任务
- 利用中间件来屏蔽异构系统
- 面向科研,商业模式不清晰
云计算
- 强调使用专有的资源
- 不强调虚拟组织,重视通用性
- 不强调异构性
- 针对企业应用,商业模式清晰
云计算定义
云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端设备和其他设备。
云计算影响
- 80年代大型计算机到客户端-服务器的大转变后的又一种巨变
- 用户不用了解“云”中细节,不必具备专业知识,也无需直接进行控制。
- 云计算描述了一种基于互联网的新的IT服务增加、使用和交付模式,通常设计通过互联网来提供动态易扩展且经常是虚拟化的资源。
交付模型(服务类型)
SaaS (Software as a Service)
PaaS (Platform as a Service)
IaaS (Infrastructure as a Service)
交付模型的变种:**(各种名词)-as-a-Service
部署模型
公有云:由第三方云提供者拥有的可公共访问的云环境
社区云:类似于公有云,但访问被限定为特定的云用户社区
私有云:由一家组织单独拥有,利用云计算技术来访问组织内部的IT资源
混合云:由两种或者更多不同云部署模型组成的云环境
云计算优势
- 经济性
- 可扩展性和伸缩性
- 易用性、可用性和可靠性
- 虚拟化:模拟出符合用户需求的任何计算环境
- 高可靠:多副本容错、计算节点同构可互换等措施
- 管理简单:无需专职IT维护人员
- 安全:专业的团队+严格的管理
云计算缺点
- 同时性的相对性
- 容灾
- 异构带来的困难
- 动态环境下的不确定性
- 各种进一步需求。。
云计算风险
- 增加了安全漏洞
- 降低了运营管理控制
- 云提供者之间有限的可移植性
- 多地区法规和法律问题
Google云平台
文件存储:GFS
并行数据处理:MapReduce
结构化数据表:BigTable
分布式锁:Chubby(Paxos一致性协议)
Amazon AWS
开源云平台(工具)
Zookeeper:提供通用的分布式协调服务(多server集群,一个leader,多个follower,全局数据一致,每个server副本)
Spark:基于MapReduce算法实现的分布式计算,特点是中间结果可以保存在内存中,不再需要读写HDFS
云计算的数据存储
存储数据类型:文件、数据表
磁盘存储如何处理大小不一的文件
解决思路:分块
分块大小
根据应用来确定
分块的管理
主从模式
优点:方便添加服务器和负载平衡,不存在一致性问题
缺点:单点故障,性能瓶颈
GFS
思路:文件划分为固定大小的块(chunk)存储;通过冗余来提高可靠性;通过“单个” master 来协调数据访问、元数据存储;无缓存
HDFS
思路:NameNode(1个)+DataNode(多个)
无中心模式
优点:不存在单独故障和性能瓶颈
缺点:负载均衡,一致性问题
Dynamo
思路:虚拟节点、Hash值确定存放位置
分块出错
单个分块出错
校验码(HDFS)
每个块进一步分成若干个小块,每个小块有一个校验码
Merkle哈希树技术
叶节点是存储数据的哈希值,父节点是所有子节点的哈希值
服务器出错
主从模式
主节点出错:无响应,通过日志容错
块服务器出错:管理软件检测或心跳机制、回复服务器上每个块
无中心模式
闲聊机制(每个服务器定期随机向另一个服务器发送消息)
恢复服务器上的每个块
HDFS可靠性保障
-
冗余备份和副本存放:每个数据块有一定数量的副本
-
心跳检测和安全模式:(心跳)DataNode $\rightarrow$ NameNode、块报告(安全模式下)
-
数据完整性检测
-
空间回收
-
元数据备份:依赖镜像文件和日志
HDFS性能提升
- 副本选择:使用离程序最近的副本进行读操作
- 负载均衡:当剩余磁盘空间很少时自动迁移数据到其它节点
- 客户端缓存:临时文件超过64MB才正式写入数据
- 流水线复制:客户端 $\rightarrow$ 第一个DataNode $\rightarrow$ 第二个DataNod