架构师培训 -04 系统架构
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
“高并发”是一个大型互联网应用系统的主要特征,要让这样一个系统能够给用户正常提供服务,系统就得具备高可用和高性能的能力。在现在高并发、高性能和高可用的处理上都有相对比较成熟的方案。
1.高并发
高并发是因系统用户访问而客观存在的问题,解决高并发的问题一般有两种方案:
垂直伸缩:通过升级硬件和网络吞吐来提升系统支持高并发的能力。
优点:能够相对快速的完成支持高并发的能力。在一定规模下耗费的成本也相对低。
缺点:无论硬件配置多么高,对于大规模的并发来说有时候都是无法满足的。
水平伸缩:通过添加服务器提升系统支持高并发的能力。
优缺点刚好跟垂直伸缩相反。
优点:能够通过添加服务器数量满足大规模并发的场景。
缺点:扩展速度慢,往往都需要架构重构,重新开发来实现,无法满足应急的情况。
2.高性能
高性能是满足用户体验的一个重要指标。在解决高性能的问题在软件的各个层级都有体现。
前端
CDN:将用户访问的数据(静态页面和图片之类的)放置到离用户更近的地方,减少网络访问时间,从而提供访问的效率。
动静分离:将静态资源与动态数据分开在不同的服务器来处理,从而达到提高性能的目的。同时静态资源也方便使用缓存来处理。
网关及应用层
负载均衡:负载均衡可以请求分派给不同的服务器进行处理,减少单台服务器的请求量,从而达到提供性能的目的。
动态页面静态化:例如商品详情这种动态页面,可以通过模板之类的技术,将每个商品的详情页面静态化通过存放到CDN,缓存等能够加速访问的手段达到提高系统性能。
业务拆分:通过拆分业务,将拆分出来的业务部署到不同的服务器,从而使流量分散到不同的服务器上,达到提升性能的目的。
服务层
微服务框架:同上面业务拆分道理一样。
分布式缓存:缓存是提升性能中最主要的手段之一。通过减少磁盘读写和复杂处理过程来快速响应用户需要的数据。
存储层
分布式文件:通过更多的服务器来分摊流量,达到提升性能的目的。
NOSQL数据库:NOSQL数据库有些是基于内存来存储数据的,处理速度非常快。
后台架构层
搜索引擎:利用搜索引擎解决了关系型数据库模糊查找非常慢的问题,在这种场景下大大的提高了查找数据的性能。
总结:从上面不同层面上提升性能的方案中大概可以总结为两点:分割和缓存。
3.高可用
系统高可用的主要手段是冗余。
应用程序:主要通过集群部署来做到高可用,同时结合一些类似ureka注册组件来自动剔除不可用的节点。
数据:将数据存储在多台服务器上互相备份,任何一台服务器宕机都不会导致数据丢失。mysql常用的就是准备。hdfs,es等通过数据分片+副本的方式进行存储。
评论