第四周 系统架构学习总结
一、内容梳理
系统架构技术挑战
1.高并发,大流量
2.高可用
3.海量数据
4.用户分布广,网络环境复杂
5.安全环境恶劣
6.需求变更快,发布频繁
7.渐进式发展
系统架构解决方案
垂直伸缩
1.方式:升级硬件
2.优点:简单不改变原来应用架构
3.缺点:成本到一定程度急剧增加;有物理极限和操作系统或应用程序自身设计制约
水平伸缩
1.方式:增加机器
2.优点:理论上可以无限扩展,规模大时单位成本低
3.缺点:导致应用架构更复杂
架构演化
1.最简单互联网架构(应用和服务器部署在一起)
2.应用与数据分离(应用服务器和数据服务器分开)
3.加入缓存,使用缓存改善系统性能
4.使用应用服务器集群改善系统的并发处理能力
5.数据读写分离
6.使用反向代理和CDN加速网站响应
7.使用分布式文件系统和分布式数据库
8.使用NoSQL和搜索引擎
9.业务拆分
10.微服务及中台化
11.大数据与人工智能
架构模式
1.分层
2.分割
3.分布式
4.集群
5.缓存(CDN、反向代理、本地缓存、远程缓存)
6.异步(消息队列)
7.冗余(应用冗余运行、数据冗余备份)
8.自动化
9.安全(加密、身份认证)
架构要素
1.高性能
2.高可用
3.可伸缩
4.可扩展性
5.安全
6.可测试性
架构技术
1.前端架构:
App及Web开发技术、浏览器及HTTP优化技术、CDN、动静分离、图片服务、反向代理、DNS
2.网关及应用层架构:
网关架构、负载均衡、业务拆分
3.服务层架构
微服务框架、分布式消息队列、分布式缓存、分布式一致性(锁)服务
4.存储架构
分布式文件、分布式关系数据库、NoSQL 数据库
5.后台架构
大数据平台、搜索引擎、推荐引擎、数据仓库
6.运维与安全
数据采集与展示、数据监控与报警、攻击与防护、数据加密与解密
二、收获和体会
1.系统的学习到了系统架构面临的一些技术挑战和常规的解决方案
2.所有的系统架构是一个从简单到复杂的演化过程
3.系统的学习到了架构几种常用的模式
4.通过总结的架构要素的维度知道到了如何系统化评估一个架构的好坏
三、思考
系统架构第一步是要识别问题,根据系统应用场景去识别系统面临哪些挑战,例如高并发、高可用、海量数据等等;第二步根据识别到的问题提出相应的解决方案;第三步根据解决方案落地相应的技术架构;第四部根据架构要素来对技术架构进行评估,整个过程是一个重复迭代根据应用场景变更和扩展进行演进。
四、后续计划
1.根据这个课程总结的知识结构树对每个知识点进行展开研究、学习、应用
2.拜读李智慧老师的《大型网站技术架构》
评论