【不周山之云计算】零 系列概览

云计算作为未来的大势所趋,是每个 IT 从业者都需要关注的,这个系列结合我从校园到工作中围绕云计算积攒下来的相关经验,分享给大家。


更新历史

  • 2017.05.26: 完成初稿

为什么要写?

  • 云计算涉及的概念较多,很多基础框架不是特别牢固的同学容易顾此失彼,学得很痛苦
  • 原先的 CMU 云计算课程笔记因校方压力下架,一直没有机会重制
  • 结合校园与工作中的经验,更有针对性,更多干货

能带给读者什么?

  • 云计算核心组件的理论知识
  • 云计算实战中的小技巧
  • Linux 运维实战经验
  • 如何利用云计算完成简单服务的搭建
  • 如何优化架构,提升云服务性能
  • 培养朝抵抗力最大的路径走的坚定,学会如何去学习。

这也是我写新技术系列的一次尝试,让互联网上高质量的中文内容多一些,再多一些。

有什么局限?

  • 这不是一个可以速成,看看就懂的系列,需要自己动手去实践。话说回来,天底下的真功夫,也没有能够速成的。
  • 工作量比较大,会花费很多实践,需要不断尝试,不断跌倒再爬起,而这正是『深入理解云计算』的必经之路。
  • 需要自行探索的部分很多,我个人的知识体系并不完备,欢迎大家在评论中各抒己见,让这个系列更加完美。

在这个快节奏的时代,慢一点,再慢一点。

主要写什么?

  • 从基本概念入手,辅以图片,尽量用具体实例阐述推导和思考的过程,不用『显然』偷懒,不用『易知』搪塞。
  • 逆推设计过程,还原具体情境,为什么会有不同的设计不同的系统,寻找『三江源』。
  • 理论结合实践,深入浅出介绍云计算,包括:云设施,虚拟化,云存储,编程模型等等

对自己的要求是写作的时候,细致一点,再细致一点。

注:主要在 Amazon Web Services 和 Microsoft Azure 上试验,后面会加上国内的云服务

不会写什么?

  • 不会重复网上已有的教程与概念,这个系列并不是一个资料汇总,而应该是『学习伴侣』,有自己的思考,再来看看我的思考和大家的思考,这样才是最高效的学习。
  • 不会大段贴代码,这个系列并不是一个手把手帮读者完成任务的系列,而是授人以渔的系列
  • 不会详述只需要简单搜索就可以找到答案的问题,希望能专注于那些『不懂甚至不知道如何搜索』的问题,并以此鼓励大家培养自己主动探索解决问题的能力

对读者的要求是学习的时候,走一步,再走一步。

具体编排

注:这部分可能会不断变化

细节知识点

基本概念

解释云计算的核心概念

  1. 解释什么是『云计算』
  2. 云计算历史介绍,了解动机与演变
  3. 列举云计算中重要的技术,并讨论其特点
  4. 了解云的优势与劣势
  5. 了解云对商业和云服务提供商的经济利益和风险
  6. 联系云架构的不同层级并区分不同的服务模型
  7. 定义 SLAs 和 SLOs 并说明其重要性
  8. 列举和解释云安全的各类威胁
  9. 给出常见的云服务提供商与其云架构

云设施

通过在云设施上应用基础概念来理解性能,效率和花费之间的权衡,并以此去思考如何建立起健壮,有弹性和高效的数据中心

  1. 描述数据中心的演化并给出现代数据中心的架构
  2. 思考设计的考虑并讨论不同的影响
  3. 描述如何计算一个数据中心的能源需求
  4. 理解云架构数据中心的需求和挑战,并分析其和大型计算机的不同
  5. 解释云软件的不同层级与每层扮演的角色
  6. 了解自动化资源管理的必要性和关键的规划考虑
  7. 评估在云上编程,部署和失败的考虑
  8. 理解构建多层云应用的概念,并考虑延迟,可伸缩性与健壮性
  9. 了解不同的计价模型与对应的商业模式
  10. 描述云管理技术,例如 middleware,resource provisioning,metering 和 orchestration
  11. 从规模,负载均衡,容错,延迟,优化和花费等角度来描述评估不同的云部署方案

云资源管理

了解系统,网络和存储虚拟化并理解它们在云计算系统模型中扮演的角色

  1. 理解为什么虚拟化在云上非常重要的主要原因
  2. 解释通过虚拟化提供的不同隔离类型,例如错误隔离,资源隔离和安全隔离
  3. 理解为什么系统复杂度可以通过不同层级的抽象,良好定义的接口和虚拟化的应用来管理
  4. 理解资源共享,并解释是如何通过虚拟化来做到物理和逻辑层面的分离
  5. 理解虚拟化,并区分不同的虚拟机类型,例如进程和系统虚拟机
  6. 理解虚拟化 CPU 的条件,区别全虚拟与部分虚拟,理解作为 CPU 虚拟化主要技术的 emulation,并检查 Xen 中的虚拟 CPU 调度
  7. 列出传统操作系统虚拟内存和系统内存虚拟化的区别,解释多层页映射,并通过 VMWare 的 memory ballooning 技术来理解 memory over-commitment
  8. 解释 CPU 和 IO 设备如何在虚拟化/非虚拟化情况下进行通信,理解三个主要接口:系统调用,设备驱动和操作层级
  9. 从云计算的角度列出 software defined networking 和 software defined storage 近期的发展

云存储

理解云存储的基础概念,并描述它们是怎么应用在诸如 Amazon S3 和 HDFS 这类存储系统上的

  1. 描述数据和存储的总体组织
  2. 列举不同的数据类型并给出它们的对比
  3. 了解规模化可能出现的问题与大数据管理,讨论不同的存储抽象
  4. 比较不同的文件系统,并思考它们的设计考虑,如 HDFS vs CephFS
  5. 比较不同的数据库并讨论它们的设计权衡
  6. 了解云对象存储的概念,列举数据存储中所用的 block devices

编程模型

分析不同的云计算模型,并应用它们来在云上解决问题

  1. 理解并行和分布式编程模型的基础概念
  2. 对比不同的云编程模型:MapReduce, Spark, GraphLab 和 Spark Streaming
  3. 解释 MapReduce 编程模型中主要的执行流,调度和容错概念

相关链接

捧个钱场?