架构师训练营第四周 - 作业
一个典型的大型互联网应用使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
大型互联网应用面临的挑战
高并发,大流量
高可用
海量数据
网络情况复杂
安全环境恶劣
需求快速变更,发布频繁
渐进式发展
指导思想——将系统分解,用不同手段解决不同问题
横向分层
例如分为表示层、应用层、数据访问层、数据存储层,各层负责相对单一的数据处理职责
纵向分割
* 根据业务进行分割,不同的业务子系统各自采用合适的内部分层结构
* 将可复用的服务包装成高内聚、低耦合的单元;各种服务单元内部可能是分布式部署的集群(有助于提高并发、高可用、可伸缩);成熟的多种服务单元还可以向业务中台演化,支撑前端应用的快速开发
解决大型互联网应用常见问题的手段举例
高并发、大流量
* 垂直伸缩(有单机的物理极限,非线性增长)
* 水平伸缩(单机成本低,伸缩性强,对于访问量波动大的应用,还可以动态调整。但运维水平要求也更高)
* 使用缓存
* 读写分离
* 动静分离
* 消息队列
* 反向代理和CDN
高可用
* 多机部署,在少量机器故障时仍提供可接受的服务质量
海量数据
* 分布式文件系统
* 分布式数据库
* NoSQL
* 搜索引擎
网络情况复杂
* 多数据中心,让数据靠近用户
* CDN
* GeoDNS
安全环境恶劣
* DDoS防御(高防IP,高防CDN,端口过滤,限流,熔断,监控)
* 加密
* 身份认证
需求快速变更、发布频繁
* 业务拆分
* 团队划分适应业务发展的需要(有横贯各个业务线的架构风格指导,也有业务单元内部的职责分工。既有擅长总体规划的通才,也有擅长某些技术的专才。)
* 微服务
* 中台化
渐进式发展
大型的互联网应用都是从小规模发展而来的,随着访问量的增加,架构也快速变化,有时候甚至没有现成的架构可供参考,没有现成的产品与基础设施可供使用,在解决具体应用遇到的问题时,催生了新的架构,新的架构成熟以后,基础设施还可以作为产品提供出来(云服务)。
不能一蹴而就,而是在生存的压力下快速演化。演化的方向也无法预先计划,做计划只是为了在遇到意外时有应对措施。
评论