分布式架构的演进过程

一.分布式架构的发展过程
1946年2月14 , 世界上第一台电子数字计算机诞生在美国宾夕法尼亚大学大学,它的名字是:ENIAC; 这台计算机占地170平米、重达30吨,每秒可进行5000次加法运算。 第 一台电子计算机诞生以后所带来的影响是单台计算机的性能每年都在提升:从最早的 8 位 CPU 到现在的 64 位 CPU ;从早期的 MB 级内存到现在的 GB 级 别 内 存 ;从 慢 速 的 机 械 存 储 到 现 在 的 固 态 SSD 硬盘存储。
ENIAC之后,电子计算机便进入了IBM主导的大型机时代,IBM大 型机之父吉恩.阿姆达尔被认为是有史以来最伟大的计算机设计师 之一。1964 年 4 月 7 日,在阿姆达尔的带领下,历时三年,耗费 50亿美元,第一台IBM大型机SYSTEM/360诞生。这使得IBM在 20世纪50~60年代统治着整个大型计算机工业。
20世纪80年代,在大型机霸主的时代,计算机架构同时向两 个方向发展: 以CISC (微处理器执行的计算机语言指令集) CPU为架构 的价格便宜的面向个人的PC 和以RISC (精简指令集计算机) CPU为架构的价格昂贵的面 向企业的小型UNIX服务器。
大型主机凭借着大型机超强的计算和 I/O 处理能力、 稳定性、安全性等,在很长一段时间内,大型机引领了计算机行业及商业计算领域的发展,而此时集中式的计算机系统架构也成为了主流。随着计算机的高速发展,这种架构越来越难以适应人们 的需求,主要体现在以下方面:
1.由于大型主机的复杂性,导致了培养一个能够熟练运维大型主机的工人的成本很高;
2.大型主机很贵,一般只有政府、金融、电信等机构才能用得 起;
3.单点问题,一台大型主机出现故障,那么整个系统将处于不 可用状态。而对于大型机的使用群体来说,这种不可用导致的 损失是非常大的;
4.科技在进步,技术在进步。PC机性能不断提升,很多企业 放弃大型机改用小型机及普通PC来搭建系统架构。
于是,随着系统架构的演进,出现了现在的分布式系统。

阿里巴巴在 2009 年发起了一项"去 IOE"运动 IOE指的是IBM小型机、Oracle数据库、EMC的高端存储。
2009年“去IOE”战略透露,到2013年5月17日最后一台IBM 小型机在支付宝下线。
阿里巴巴之所以要去IOE,是因为过去一直采用的是 Oracle 数据库,并利用小型机和
高端存储设备提供高性能的数据处理和存储服务。随着业务的 不断发展,数据量和业务量呈爆发性增长,传统的集中式
Oracle数据库架构在扩展性方面遭遇瓶颈。 传统的商业数据库软件(Oracle,DB2),多以集中式架构为主,
这些传统数据库软件的最大特点就是将所有的数据都集中在 一个数据库中,依靠大型高端设备来提供高处理能力和扩展性。
集中式数据库的扩展性主要采用向上扩展(Scale up)的方式, 通过增加CPU,内存,磁盘等方式提高处理能力。这种集中式
数据库的架构,使得数据库成为了整个系统的瓶颈,已经越来 越不适应海量数据对计算能力的巨大需求 。

二.分布式系统的意义

  1. 升级单机处理能力的性价比越来越低: 单机的处理能力主要依靠CPU、内存、磁盘。通过更换硬件做垂直扩展的方式来提升性能,成本会越来越高。
  2. 单机处理能力存在瓶颈:CPU、内存都会有自己的性能瓶颈,即使不惜成本去提升硬件,硬件的发展速度和性能也是有限制的。
  3. 稳定性和可用性这两个指标很难达到: 单机系统存在可用性和稳定性的问题,这两个指标又是我们必须要去解决的。
    三.分布式架构中的一些概念
    集群
    分布式
    节点:一个可以独立按照分布式协议完成一组逻辑的程序个体。在具体的项目中,一个节点表示的是一个操作系统上的进程。
    副本(replica/copy):在分布式系统中为数据或服务提供的冗 余。 数据副本指在不同的节点上持久化同一份数据,当出现某一个 节点的数据丢失时,可以从副本上读取到数据。数据副本是分 布式系统中解决数据丢失问题的唯一手段。 服务副本表示多个节点提供相同的服务,通过主从关系来实现 服务的高可用方案。
    中间件:位于操作系统提供的服务之外,又不属于应用,他是位 于应用和系统层之间为开发者方便的处理通信、输入输出的一 类软件,能够让用户关心自己应用的部分。
    四.架构的发展过程
    一个成熟的大型网站系统架构并不是一开始就设计的非常完 美,也不是一开始就具备高性能、高可用、安全性等特性,而 是随着用户量的增加、业务功能的扩展逐步完善演变过来的。 在这个过程中,开发模式、技术架构等都会发生非常大的变化。 而针对不同业务特征的系统,会有各自的侧重点,比如像淘宝 这类的网站,要解决的是海量商品搜索、下单、支付等问题; 像腾讯,要解决的是数亿级别用户的实时消息传输;百度所要 解决的是海量数据的搜索。每一个种类的业务都有自己不同的 系统架构。
    架构的发展主要包括以下阶段:
    阶段一,单应用架构
    在这里插入图片描述
    网站的初期也可以认为是互联网发展的早期,我们经常会在单 机上跑我们所有的程序和软件。 把所有软件和应用都部署在一台机器上,这样就完成一个简单 系统的搭建,这个时候讲究的是效率。
    阶段二,应用服务器和数据库服务器分离
    随着网站的上线,访问量逐步上升,服务器的负载慢慢提高, 在服务器还没有超载的时候,我们应该做好规划,提升网站的 负载能力。假如代码层面的优化已经没办法继续提高,在不提 高单台机器的性能的情况下,增加机器是一个比较好的方式,投入产出 比非常高。这个阶段增加机器的主要目的是将 web 服务器和 数据库服务器拆分,这样不仅提高了单机的负载能力,也提高 了容灾能力 。
    在这里插入图片描述
    阶段三,应用服务器集群-应用服务器负载告警
    如何让应用服 务器走向集群 ?
    随着访问量的继续增加,单台应用服务器已经无法满足需求。 在假设数据库服务器还没有遇到性能问题的时候,我们可以增 加应用服务器,通过应用服务器集群将用户请求分流到各个服 务器中,从而继续提升负载能力。此时多台应用服务器之间没 有直接的交互,他们都是依赖数据库各自对外提供服务
    在这里插入图片描述
    架构发展到这个阶段,各种问题也会慢慢呈现 :
    1.用户请求由谁来转发到具体的应用服务器
    2.用户如果每次访问到的服务器不一样,那么如何维护 session
    在这里插入图片描述
    阶段四,数据库压力变大,数据库读写分离
    架构演变到这里,并不是终点。虽然把应用层的性能提升了, 但是数据库的负载也在慢慢增大,要提高数据库层面的负 载,自然会想到增加服务器。但是假如单纯的把数据库一分为二,然后对于后续数据库的请求,分别负 载到两台数据库服务器上,那么一定会造成数据库不统一的问题。 所以一般先考虑读写分离的方式 。
    在这里插入图片描述
    这个架构的变化会带来几个问题 :
    1.主从数据库之间的数据同步 ; 可以使用 mysql 自带的 master-slave方式实现主从复制 2. 对应数据源的选择 ; 采用第三方数据库中间件,例如mycat
    阶段五,使用搜索引擎缓解读库的压力
    数据库做读库的话,经常对模糊查找效率不是特别好,比如电商类的 网站,搜索是非常核心的功能,即便是做了读写分离,这个问题也 不能有效解决。那么这个时候就需要引入搜索引擎了, 使用搜索引擎能够大大提高我们的查询速度,但是同时也会带来一 些附加的问题,比如维护索引的构建。
    在这里插入图片描述
    阶段六,引入缓存机制缓解数据库的压力
    随着访问量的持续增加,逐渐出现许多用户访问同一部分内容的情况,对于这些热点数据,没必要每次都从数据库去读取,我们可以 使用缓存技术,比如memcache、redis来作为我们应用层的缓存; 另外在某些场景下,比如我们对用户的某些IP的访问频率做限制, 这个放内存中又不合适,放数据库又太麻烦,这个时候可以使用 Nosql的方式比如mongDB来代替传统的关系型数据库
    在这里插入图片描述
    阶段七,数据库的水平/垂直拆分
    网站演进的变化过程,交易、商品、用户的数据在同一 个数据库中,尽管采取了增加缓存,读写分离的方式,但是随着数 据库的压力持续增加,数据库的瓶颈仍然是个最大的问题。因此可以考虑对数据的垂直拆分和水平拆分。
    垂直拆分:把数据库中不同业务数据拆分到不同的数据库
    在这里插入图片描述
    水平拆分:把同一个表中的数据拆分到两个甚至跟多的数据库中, 水平拆分的原因是某些业务数据量已经达到了单个数据库的瓶颈, 这时可以采取将表拆分到多个数据库中
    在这里插入图片描述
    阶段八,应用的拆分
    随着业务的发展,业务越来越多,应用的压力越来越大。工程规模 也越来越庞大。这个时候就可以考虑将应用拆分,按照领域模型将用户、商品、交易拆分成多个子系统
    在这里插入图片描述
    这样拆分以后,可能会有一些相同的代码,比如用户操作,在商品 和交易都需要查询,所以会导致每个系统都会有用户查询访问相关 操作。这些相同的操作一定是要抽象出来,否则就会是一个坑。所 以通过走服务化路线的方式来解决
    在这里插入图片描述
    那么服务拆分以后,各个服务之间如何进行远程通信呢? 通过RPC技术,比较典型的有:webservice、hessian、http、RMI 等等 ,前期通过这些技术能够很好的解决各个服务之间通信问题,但是互联网的发展是持续的,所以架构的演变和优化仍需要持续进行。
    在这里插入图片描述
    一般地,最终会演变为如下架构:
    在这里插入图片描述
    下一篇:构建分布式架构的重要因素
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值