架构师训练营第 2 期 第四周总结
分布式架构的演化
1、第零阶段:最简单的互联网应用架构
部署在单一的服务器上
2、第一阶段:应用数据分离
将应用程序、数据库、文件部署在不同的服务器上,成为文件服务器、文件服务器、应用服务器。得到了几倍的并发处理能力的提升。
体现了互联网架构核心的一个思路:不断的增加服务器,提升系统处理能力。
增加的服务器分摊了当前服务器的计算资源要求,减轻了压力,可以使系统服务更多的用户。
3、第二阶段:使用缓存改善系统性能
访问的数据存储在低速的存储设备上时,我们找一个高速的缓存服务来存放这些数据。
缓存分本地缓存、远程分布式缓存。进一步可以构建一个分布式缓存集群,增加缓存提供服务的能力。
可以极大得改善系统的处理能力,服务更多的用户。
此时访问数据的能力得到了提示,但当用户的数量增加,单一的应用服务器满足不了高并发请求的要求,于是走到下一个阶段。
4、第三阶段:使用应用服务器集群改善系统的并发处理能力
负载均衡服务器将请求分发给不同的应用服务器。这样使得分摊在每台应用服务器的请求数量减少,即减少了应用服务器个体上的压力,应用层面上的高并发处理能力得以保障。此时压力来到了数据库的访问上。
5、第四阶段:数据库读写分离
虽然一部分的读操作可以由缓存来分摊。但依旧有大量的读写操作会访问数据库。单一的数据库无法满足需求。数据库在硬盘上,操作较慢。导致应用服务器能够在高并发环境下处理请求,但会有部分用户请求依旧会等待数据库操作结果时阻塞,无法及时响应。
常见的处理方法是主从分离。
如部署一台主服务器,一台从服务器:当执行写数据时,访问主服务器,且通过主从复制,将更新的数据同步到从服务器上;当执行读数据时,访问读服务器;降低了数据库服务器的压力,提升了一倍的能力。
6、第五阶段:使用反向代理和 CDN 加速网站响应
CDN 是部署在网络运营机房里的缓存服务器,离用户非常近,一般是一些静态资源,如图片,css 文件等。实现无需到达我们的数据中心,从已缓存的数据中获取所需的资源,减轻我们服务器的压力。
用户请求到达我们的机房时,第一个请求会到达反向代理服务器。它承担的主要职责,依然是缓存的职责。反向代理服务器先检查请求的资源在本机是否存在,存在即返回;不存在则向下分发。通过负载均衡服务器分发到应用服务器去。
CDN 与负载均衡处理了大量请求,这些请求不需要到达负载均衡服务器。这是该阶段提高高并发处理能力的原理。
7、第六阶段:使用分布式文件系统和分布式数据库系统
第四阶段的读写分离对涉及数据库处理能力的提升是有限的。
随着数据量的提升,甚至会出现单一的数据库存放不下一张表的数据。
使用分布式的关系数据库,将数据库进行分片处理,多台服务器共同对外提供服务。读写操作分布在多台服务器上,提高了数据操作的并发能力。文件服务器同理。
可以通过增加服务器增加数据库、文件的并发处理能力。
8、第七阶段:使用 NOSQL 和搜索引擎
解决分布式数据库依旧不能很好满足的场景:模糊查询,复杂查询
9、第八阶段:对业务进行拆分
功能模块增多、系统越来越复杂。针对不断增加的业务,在业务层面进行拆分,部署到不同的服务器上(甚至是集群)。可以用简单的网络通讯,或者是消息队列进行通讯。优势:扩容与伸缩很容易。
10、第九阶段:微服务及中台化
拆分后的服务可能依赖一些相同的服务。如一旦需要,就重新开发,这显然既昂贵,又复杂。我们把这些相同的服务拆分,改建为独立的微服务集群,有需要的服务,直接调用即可。这个微服务集群能提供的功能逐渐增多,且当各种各样的服务都依赖这个它时,中台化的概念就体现出来了。后来的产品,需遵循这些服务定制的规范进行开发,基础的服务由微服务与中台提供即可。
11、第十阶段 大数据与智能化
根据用不同特征,提供不同的服务。通过用户的偏好、提供每个用户感兴趣的内容。系统体现出智能化的特点。如何进行数据分析,挖掘用户的特征,大数据平台要关注的内容。
架构模式与要素
如何衡量一个系统的架构设计
1、高性能
用户无法忍受一个响应较慢的应用。任何架构设计方案都必须考虑带来的性能问题。
影响用户请求的所有环节,都可以进行性能优化。性能指标有很多:TPS 响应时间、并发数,各种各样的计数器。
系统架构是为了满足高性能的一个条件进行挑战的。
2、高可用
大型互联网系统通过会有大量的服务器,每天必定有一些服务器宕机。
存在服务器宕机是系统高可用架构设计的前提,在这种情况下,保证服务依旧可用是高可用的目标。
主要手段就是冗余。
应用部署在多台服务器,数据存储在多台服务器的存储设备,任何一台服务器宕机都不会影响整体可用。
这是一个比较硬的指标,毕竟使用者无法容忍系统挂掉。
3、可伸缩
即通过不断向集群加入服务器的手段,来缓解不断上升的并发请求压力与数据存储需求。
衡量指标是:是否能构建集群,是否容易向集群中添加机器。容易是指新加入的服务器是否能与其他服务器提供相同的功能。
4、可拓展性
应对功能性的需求。
衡量指标是:在系统上增加新的功能是否容易,是否改动较少,是否对现有业务没有影响,其他产品与功能不需要受牵连等等。
主要手段:事件驱动架构和分布式服务。
5、安全
衡量指标:对现存于潜在的各种攻击与窃密手段等,是否有可靠的应对手段。
互联网架构技术方案
1、前端架构: APP 及 WEB 开发技术、浏览器及 http 优化技术、CDN、动静分离、图片服务、反向代理、DNS
2、网关及应用层架构: 网关架构、负载均衡、动态页面静态化、业务拆分
3、服务层架构:消息队列、微服务、缓存
4、存储层架构:分布式文件、分布式关系数据库、NOSQL 数据库
5、后台架构:大数据平台、搜索引擎、推荐引擎、数据仓库
6、运维和安全:数据采集与展示、数据监控与报警、攻击与防护、数据加密与解密
评论