写点什么

架构师训练营 1 期第 4 周:系统架构 - 作业

用户头像
piercebn
关注
发布于: 2020 年 10 月 12 日

题目:一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。



互联网架构模式就是试图去描述那些为解决互联网系统高性能、高可用、易扩展、可伸缩、安全等目标,被很多互联网应用重复使用的一些解决方案,这些解决方案是互联网软件系统的重要组成部分。下面以互联网架构模式为主线,对相关的技术方案和手段,以及解决的问题进行列举。



一、分层

横向分层,按照关注点进行分层



解决问题:

  • 解决应用程序代码臃肿,职责不清,逻辑复杂,不易理解的问题。

  • 解决应用安全访问,并发访问问题



技术方案和手段

  • 应用程序前后端分离,将传统的单体应用拆分成前端应用、后端接口

  • 应用服务器内部业务逻辑与数据分层,分为应用接口层、应用服务层、领域模型层、数据访问层

  • 应用服务器外部按照访问流向以及不同职能进行分层,分为CDN服务器、反向代理服务器、负载均衡服务器、API网关服务器、应用聚合层服务器、应用共享服务层服务器、缓存服务器、数据库服务器



二、分割

纵向分块,按照高内聚低耦合的原则进行功能模块划分,或按照分散负载的原则进行数据分割或职能分割



解决问题

  • 解决随着系统增大,功能变复杂,不易维护和扩展的问题;

  • 解决应用无法分布式部署问题

  • 解决应用并发访问能力受限问题



技术方案和手段

  • 应用服务按照功能模块进行服务拆分,如电商系统可以分为商品、购物车、订单、库存、支付、物流、通知等服务子系统

  • 按照服务子系统进行数据库分库,如商品库、订单库

  • 当单表数据量很大时,数据库单表访问性能会变慢,可考虑将数据表进行水平拆分,减小单表数据量,提升单表访问性能,如user表分成user_000、user_001、user_002等表

  • 当单台数据库的容量达到极限或无法支撑访问量,可以考虑将数据库进行分片,支持数据库的水平扩展,分散容量和负载,比如按照分片键进行哈希函数映射进行数据分片、按照指定键值的范围进行数据分片、按照目录查找表进行更加灵活数据分片

  • 数据库的主从复制,读写分离,提高访问性能

  • 将数据进行冷热分离,将部分历史数据转移到其他数据库,以降低热数据库的数据量,提高访问性能



三、分布式和集群

将相同功能的多台服务器构成集群,或者将按照分层分割进行拆分的不同服务器,进行分布式部署



解决问题:

  • 解决单一服务器资源(CPU,内存,存储,网络带宽资源)有限的问题,实现高并发访问和大数据量处理



技术方案和手段

  • 将拆分后的应用和服务,分成不同服务器进行部署,降低单一服务器负载

  • 将相同的应用或服务构成集群,通过负载均衡设备共同对外提供服务

  • 分布式存储,如分布式缓存、分布式文件存储、分布式数据库、分布式消息队列、分布式搜索引擎

  • 分布式计算,如分布式离线计算,实时计算等



四、缓存

将数据存放在距离计算最近的位置以加快处理速度,缓存是改善软件性能的第一手段



解决问题:

  • 解决应用并发访问能力受限问题



技术方案和手段

  • 将访问数据进行动静分离,通过CDN、反向代理对静态数据资源进行缓存,如图片,文件,静态页面等;通过本地缓存、远程缓存对部分对失效性不是很敏感的动态数据进行缓存,如排行榜数据



五、异步

除了分层、分割、分布式外,系统解耦的另一个重要手段,将一个业务操作分成多个阶段,每个阶段之间通过共享数据而不是直接调用的方法进行协作



解决问题:

  • 解决系统可用性问题

  • 解决系统响应速度慢问题

  • 解决系统并发访问高峰问题



技术方案和手段

  • 使用消息队列,实现服务模块间调用的解耦;实现公共资源的异步调用,如短信邮件推送的调用;实现并发访问高峰时的流量消峰处理,如秒杀场景



六、冗余

保证服务器宕机的情况下网站依然可以继续服务,数据不会丢失,就需要一定程度的服务器冗余运行,数据冗余备份



解决问题:

  • 解决应用服务器可用性问题

  • 解决数据存储丢失问题



技术方案和手段

  • 将相同的应用或服务构成集群,通过负载均衡设备共同对外提供服务,实现对外提供服务的高可用

  • 将数据存储服务按照主从分离的架构进行分布式部署,实现数据的冗余备份和数据服务的高可用



七、自动化

在无人或少人值守的情况下,通过机器自动处理的方式,保证网站的正常运行



解决问题:

  • 解决由于人维护系统带来的各种问题,如误操作

  • 解决人力维护工作负荷高,效率低的问题



技术方案和手段:

  • 系统的自动监控

  • 系统的自动部署

  • 系统的自动容错,如自动剔除坏掉的服务器

  • 系统的自动的集群扩容



八、安全

保护系统不受恶意访问和攻击,保护网站的重要数据不被窃取,提供可靠的应对策略



解决问题:

  • 解决恶意访问和攻击问题

  • 解决非授权方案问题

  • 解决重要数据窃取问题



解决方案和手段:

  • 通过应用服务器前置层做限制处理,如API网关层做访问统计记录分析,识别恶意访问和攻击特征,进行访问限流控制;增加访问者的认证和鉴权控制,确保有权限的访问者才能进行访问

  • 通过对重要数据进行加密存储的方式,对数据进行保护,如用户密码加密存储



发布于: 2020 年 10 月 12 日阅读数: 51
用户头像

piercebn

关注

还未添加个人签名 2019.07.24 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 1 期第 4 周:系统架构 - 作业