读《云计算那些事儿》

May 18, 2022

云计算概览

** 云计算的根本就是把基础资源虚拟化之后以更小的力度提供出来的能力。**

云计算分类

  • IaaS: 基础设施即服务,就是将基础设施当作服务队外输出,计算、网络、存储这些原始资源就是基础设施资源,通过互联网队外提供服务。虚拟化是IaaS实现的基础,通过计算虚拟化、网络虚拟化、存储虚拟化将物理资源整合成虚拟的资源池,然后把资源以按需的形式提供给资源申请者,从而完成资源的二次分配。
  • PaaS:平台即服务,它直接为用户提供一套平台,包括语言运行环境、编程框架及数据存储中间件等一系列功能。PaaS将管理的对象从资源升级到服务,面向接口编程和运维。
  • SaaS: 软件即服务,它是最高层的抽象,对于最终的用户,它不关心任何技术相关内容,以服务的方式交付。如:在线的云编辑器。
  • FaaS:函数即服务,通过定义一些CRUD操作函数,在特定事件下触发这些函数, 并执行。

关键技术

资源调度:资源调度就是当用户申请资源的时候,系统需要通过调度确定资源位置。

Google在Omega的调度系统论文中将调度分为三类:

  • 单体:单体调度是指所有任务都是通过一个串行调度器分配的,典型代表是Kubernetes,它的优点是简单,缺点是很难支持多类型任务的执行,如同时支持批处理和长任务。
  • 二层调度:二层调度是将资源分配和任务调度分离,第一层是从全局的资源池中分配资源给各种类型任务调度器,第二层任务调度器依据任务特点启动任务,典型代表是Mesos和Yarn。二层调度的优点是可以减少调度时间,缺点是:资源调度无法感知全局资源,只了解自己的可用资源,并且每个任务调度器只会最大化自己的利益,造成全局资源的使用平衡。
  • 共享状态:共享状态调度器,它通过在每个任务调度器中保存一份整个集群状态信息的副本,从而实现全局调度,如Omega的实现。

通常的调度流程分为两层:第一层是主机过滤,第二层是主机打分,当服务器达到一定规模后,过滤和打分将会耗费很多时间,优化的方式通常包括:分区调度(将主机划分成多个集群,每次调度只针对集群)、并行调度(将调度算法并行化处理,提高执行效率,并采用乐观锁和重试机制)。在资源混部的情况下,资源调度更加复杂:虚拟机和容器混部、流或批处理任务与常驻进程混部、多任务优先级QOS等。

虚拟化与IaaS

计算虚拟化

计算虚拟化就是在虚拟系统和底层硬件之间抽象出CPU和内存等,以供虚拟机使用。

网络虚拟化

网络虚拟化是在物理网络拓扑基础之上建立的虚拟网络,它不依赖底层物理网络,能狗实现网络拓扑的动态变化,并且提供多租户隔离。 在网络虚拟化环境中,一切都可以自定义,首先是网络设备的虚拟化,虚拟交换机,虚拟路由器,虚拟负载均衡和虚拟防火墙。

  • 网卡虚拟化:通过SR-IOV技术可以实现一个物理网卡虚拟多个网卡,还可以通过tap/veth实现网卡虚拟化。
  • 链路层虚拟化:主要通过虚拟交换机,实现网络包的VLAN设置、隧道建立等。
  • 网络层虚拟化:包括VPN、Overlay网络等,创建一套隔离的三层网络。

随着云计算和大数据的兴起,东西流量越来越多:

  • 南北流泪:从防火墙进入到目标服务器经过的流量。
  • 东西流量:服务器和服务器之间的流量;比如分布式存储系统在服务之间进行数据复制会产生较多的东西流量。

Linux收发包流程: netfilter

网络模块net_rx_action会调用驱动将网络包转化为网络模块能够识别的SKB格式,然后经过netfilter后发送到用上层协议栈中。

VLAN

VLAN的中文名为虚拟局域网,VLAN的出现是为了解决二层链路中广播域的问题,传统的二层链路层广播访问太广,需要用三层路由来做lan切分隔离广播域,但是路由器的接口较少,因此在交换机上配置VLAN,使之一个交换机可以按需求配置多个LAN,来屏蔽广播域。

存储虚拟化

存储虚拟化通过软件的方式重塑存储系统,不依赖具体的存储硬件。比如通常云存储所指的公有云提供的文件存储、块存储、对象存储都是通过存储虚拟化实现的。

存储分类:

  • 块存储:文件会被分块存储到磁盘,以磁盘方式提供。块存储都遵循SCSI协议,
  • 文件存储:以文件目录的方式提供。网络文件系统NFS。
  • 对象存储:以二进制对象的形式提供服务。

分布式存储

dis 上图展示了分布式存储的总体架构,总体有有元数据管理节点和数据管理节点,要实现分布式系统,保证存储元数据模块的高可用。

分布式系统都不能违背CAP定理:

  • C(Consistenncy):一致性,指在分布式系统中多副本数据的一致性。
  • A(Avaliability):可用性,这里指能够随时读写数据。
  • P(Partition tolerance):即分区容错性,这里指能够容忍网络中断出现分区的情况。

在一些要求不高的场景下,保证基本可用和弱一致即可,对应的是BASE理论L:

  • B(Basically Avaliable):基本可用
  • S(Soft State):软状态
  • E(Eventual Consistency)最终一致。

数据分布寻址问题,如何查找到文件在那个数据节点中,共有两种种方法:;

  • 在元数据中标示数据的分布,如HDFS中,NameNode保存了所有块的元数据;它的优点是:避免在添加节点时数据迁移,缺点是:需要额外维护一套元数据,并且元数据服务的可用性是个问题。可用通过采用Raft算法来解决元数据服务的可用性问题。
  • 通过DHT算法计算得到数据的分布,如采用一致性Hash环算法,或者rados算法;它的优点是:不会存储元数据服务瓶颈和可用性问题,缺点是:在增减节点的时候,整个算法需要重新计算,导致大量数据重新分布,不仅影响集群性能,还可能造成集群暂时不可用。

开源Ceph解决数据分布寻址使用的是CRUSH方案。


LRF 记录学习、生活的点滴