1 分布式架构的发展历史
1946 年情人节(2.14) , 世界上第一台电子数字计算机诞生在美 国宾夕法尼亚大学大学,它的名字是:ENIAC; 这台计算机占地 170 平米、重达 30 吨,每秒可进行 5000 次加法运算。 第一台电子计算机诞生以后,意味着一个日新月异的 IT 时代 的到来。一方面单台计算机的性能每年都在提升:从最早的 8 位 CPU 到现在的 64 位 CPU;从早期的 MB 级内存到现在的 GB 级别内存;从慢速的机械存储到现在的固态 SSD 硬盘存储。
tips:冯诺依曼模型
ENIAC 之后,电子计算机便进入了 IBM 主导的大型机时代,IBM 大 型机之父吉恩.阿姆达尔被认为是有史以来最伟大的计算机设计师 之一。1964 年 4 月 7 日,在阿姆达尔的带领下,历时三年,耗费 50 亿美元,第一台 IBM 大型机 SYSTEM/360 诞生。这使得 IBM 在 20 实际 50~60 年代统治整个大型计算机工业,奠定了 IBM 计算机 帝国的江山。
- IBM 大型机曾支撑美国航天登月计划
- IBM 主机一直服务于金融等核心行业的关键领域
由于高可靠性和超强的计算能力,即便在 X86 和云计算飞速发展的情况下,IBM 的大型机依然牢牢占据着一定的高端市场份额 20 世纪 80 年代,在大型机霸主的时代,计算机架构同时向两 个方向发展
- 以 CISC (微处理器执行的计算机语言指令集) CPU 为架构 的价格便宜的面向个人的 PC
- 以 RISC (精简指令集计算机) CPU 为架构的价格昂贵的面 向企业的小型 UNIX 服务器
2 分布式架构发展的里程碑
大型主机的出现。凭借着大型机超强的计算和 I/O 处理能力、 稳定性、安全性等,在很长一段时间内,大型机引领了计算机 行业及商业计算领域的发展。而集中式的计算机系统架构也成 为了主流。随着计算机的发展,这种架构越来越难以适应人们 的需求,比如说
由于大型主机的复杂性,导致培养一个能够熟练运维大型 主机的人的成本很高
大型主机很贵,一般只有土豪(政府、金融、电信)才能用得 起
单点问题,一台大型主机出现故障,那么整个系统将处于不 可用状态。而对于大型机的使用群体来说,这种不可用导致的 损失是非常大的
科技在进步,技术在进步。PC 机性能不断提升,很多企业 放弃大型机改用小型机及普通 PC 来搭建系统架构
3 阿里巴巴在 2009 年发起了一项"去 IOE"运动
IOE 指的是 IBM 小型机、Oracle 数据库、EMC 的高端存储 2009 年“去 IOE”战略透露,到 2013 年 5 月 17 日最后一台 IBM 小型机在支付宝下线。
3.1 为什么要去 IOE?
阿里巴巴过去一直采用的是 Oracle 数据库,并利用小型机和 高端存储设备提供高性能的数据处理和存储服务。随着业务的 不断发展,数据量和业务量呈爆发性增长,传统的集中式 Oracle 数据库架构在扩展性方面遭遇瓶颈。 传统的商业数据库软件(Oracle,DB2),多以集中式架构为主, 这些传统数据库软件的最大特点就是将所有的数据都集中在 一个数据库中,依靠大型高端设备来提供高处理能力和扩展性。 集中式数据库的扩展性主要采用向上扩展(Scale up)的方式, 通过增加 CPU,内存,磁盘等方式提高处理能力。这种集中式 数据库的架构,使得数据库成为了整个系统的瓶颈,已经越来越不适应海量数据对计算能力的巨大需求
4 分布式系统的意义
升级单机处理能力的性价比越来越低
单机的处理能力主要依靠 CPU、内存、磁盘。通过更换硬件 做垂直扩展的方式来提升性
能,成本会越来越高。
单机处理能力存在瓶颈
单机处理能力存在瓶颈,CPU、内存都会有自己的性能瓶颈, 也就是说就算你是土豪不惜成本去提升硬件,但是硬件的发 展速度和性能是有限制的。
稳定性和可用性这两个指标很难达到
单机系统存在可用性和稳定性的问题,这两个指标又是我们 必须要去解决的
5 分布式架构的常见概念
5.1 集群
小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人 多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能 炒一样的菜,这两个厨师的关系是集群
5.2 分布式
为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切 菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师 也忙不过来了,又请了个配菜师,两个配菜师关系是集群
5.3 节点
节点是指一个可以独立按照分布式协议完成一组逻辑的程序 个体。在具体的项目中,一个节点表示的是一个操作系统上的 进程。
5.4 副本机制
副本(replica/copy)指在分布式系统中为数据或服务提供的冗 余。 数据副本指在不同的节点上持久化同一份数据,当出现某一个 节点的数据丢失时,可以从副本上读取到数据。数据副本是分 布式系统中解决数据丢失问题的唯一手段。 服务副本表示多个节点提供相同的服务,通过主从关系来实现 服务的高可用方案
5.5 中间件
中间件位于操作系统提供的服务之外,又不属于应用,他是位 于应用和系统层之间为开发者方便的处理通信、输入输出的一 类软件,能够让用户关心自己应用的部分。