写点什么

第四周 系统架构 学习总结

用户头像
feiyun123
关注
发布于: 2020 年 12 月 19 日

学习总结



提升高并发处理能力的方法有两种:

1、垂直伸缩

(1) 增加物理硬件提升计算能力

(2) 垂直伸缩是有物理极限的

(3) 扩展最多只能过到某个点

(4) 虽然提升能力有限,但是也有他的优势,某些时间使用垂直伸缩可以快速达到效果,不需要调整软件,将缩短扩展处理能力的时间。

(5) 早期投入成本相对低一些,但后期成本会极速上升,甚至达到极限。

2、水平伸缩

(1) 通过增加服务器提升计算能力的一类架构方法

(2) 水平伸缩可以克服垂直伸缩的物理极限,随着服务器的增加可不断提升计算能力。

(3) 水平伸缩是目前互联网技术的主要技术手段。

(4) 早期投入成本相对较高一些,担后期成本基本达到一个平衡,并可不断扩展提升。



分布式架构演化阶段:

1、单一服务器。文件、应用、数据库部署在单一的应用服务器中,适用于早期用户使用情况不明时。

2、应用数据分离。分别由文件服务器、应用服务器、数据库服务器组成的简单服务器集群,每台服务器处理单一的职责功能,这样在单一服务器基础上大概提升三倍计算处理能力。

3、使用缓存改善系统性能。由于硬盘的访问速度比较慢,将高访问量的数据放在内存中,提供缓存服务,节省计算处理能力提升整体系统性能。

4、使用应用服务器集群。使用应用服务器集群改善系统的并发处理能力。

5、数据库读写分离。数据库的数据是储存在硬盘上,硬盘的访问速度慢,这个时候数据库的处理能力成为了整个应用服务处理的瓶颈,大量的请求需要等待数据库返回数据,这时使用数据库主从,将写和读操作进行分离,保证数据的一致性和提升了数据访问的速度。

6、使用反向代理和CDN加速网站响应。CDN作为网络运营商的缓存服务器,使用CDN服务将节省请求到网络运营商再到机房服务的时间,直接在CDN服务器查找是否有请求的资源进行返回,这样提升了访问速度降低了系统服务的访问压力。反向代理服务器作为应用服务器的前面一层,将部分内容缓存在反向代理服务器中,如果有缓存将直接返回,没有才继续向应用服务器传递下去,进行计算处理。CDN处理了大部分的请求,剩余的少部分请求到反向代理服务,在反向代理服务中又处理了大部分的请求,给到应用服务器的只剩余了很少一部分,这样极大的提高了应用系统的处理能力。

7、使用分布式文件系统和分布式数据库系统。在之前数据库只是做到了读写分离,大量写的操作还是只有一台数据库主服务器进行处理,使用分布式数据库,将大量的数据分片储存在不同的数据库,这样极大的提高了数据的读写访问能力。同样的文件系统也是的,将大量的文件分片储存在不同的文件服务器中,提高了文件的访问处理能力,从而整体提升了系统的处理能力。

8、使用NoSQL和搜索引擎。使用了分布式数据库后,虽然可以满足大量的读写操作,但是对模糊查询和特殊的复杂查询分布式数据库支持的不是很好,这样就要使用搜索引擎来满足更高要求的查询操作,使用NoSQL数据库来满足特殊的数据储存和查询操作。

9、对业务拆分。随着用户量的增加,业务也在不断发展,整体的业务逻辑开始变的繁杂,难以维护。为了保证代码的易维护性,这时就需要将整体的业务进行拆分,比如电商系统将业务拆分成用户、订单、商品等不同的业务系统,系统之间通过http、rpc、mq消息进行通信。

10、微服务及中台化。拆分成的业务系统都会有调用同一服务的情况,将公用的服务拆分出来,构建一个独立的微服务集群,各个微服务建立起来后可供相互调用,可供复杂的业务场景使用,提供了通用的服务调用,这样服务中台就建立起来了,新产品开发的时候只需要调用服务中台就可以了。

11、大数据与智能化。通过系统中大数据的分析和挖掘,提供更智能的服务。

 

构架模式

构架中应对重复问题的解决方案:

1、分层。横向分为:视图->应用逻辑->公用服务->基础设施->储存

2、分割。纵向分为:按功能进行分割,横向纵向分割后进行分布式部署,可独立扩展。

3、分布式。分层分割后可便于分布式部署。

4、集群。将多台服务器相同功能的应用构成一个集群,通过负载均衡设备对向提供服务。

5、缓存。将数据存放在距离计算最近的位置以加快处理速度。

6、异步。计算软件发展的一个重要目标和驱动力是降低软件耦合性。

7、冗余。互联网应用需要7*24小时运行,服务和数据都需要冗余设计。

8、自动化。在无人执守的情况下保证网站正常运行,可避免大量人为的犯错。

9、安全。互联网的开放特性使得其从诞生开始就面对巨大的安全挑战,要防止xss攻击、sql注入等。

 

互联网系统的核心要素

1、高性能。性能是互联网的一个重要指标。是互联网架构设计的一个关键点。

2、高可用。当服务器宕机时服务依然是可用的。是系统设计的硬性指标。

3、可伸缩。是否可以构建集群,是否可以向集群中添加服务器来提升服务能力。加入新服务器后是否可以提供和原来的服务器无差别的服务。

4、可扩展。扩展性是系统的功能性需求。衡量系统架构扩展性好坏的主要标准就是在系统增加新的业务产品时,是否可以实现对现有产品的透明无影响,不需要任务改动或很少改动既有业务功能就可以上线新产品。不同产品之间是否很少耦合,一个产品改动对其他产品无影响,其他产品和功能不需要牵连进行改动。可扩展架构的主要手段是事件驱动构架和分布式服务。

5、安全。安全架构对各种攻击有应对策略。



用户头像

feiyun123

关注

还未添加个人签名 2019.09.28 加入

还未添加个人简介

评论

发布
暂无评论
第四周 系统架构 学习总结