写点什么

架构师训练营第四周 - 作业

用户头像
Eric
关注
发布于: 2020 年 07 月 01 日
架构师训练营第四周 - 作业

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

大型互联网应用面临的挑战

  • 高并发,大流量

  • 高可用

  • 海量数据

  • 网络情况复杂

  • 安全环境恶劣

  • 需求快速变更,发布频繁

  • 渐进式发展



指导思想——将系统分解,用不同手段解决不同问题

  • 横向分层

例如分为表示层、应用层、数据访问层、数据存储层,各层负责相对单一的数据处理职责

  • 纵向分割

* 根据业务进行分割,不同的业务子系统各自采用合适的内部分层结构

* 将可复用的服务包装成高内聚、低耦合的单元;各种服务单元内部可能是分布式部署的集群(有助于提高并发、高可用、可伸缩);成熟的多种服务单元还可以向业务中台演化,支撑前端应用的快速开发



解决大型互联网应用常见问题的手段举例

  • 高并发、大流量

* 垂直伸缩(有单机的物理极限,非线性增长)

* 水平伸缩(单机成本低,伸缩性强,对于访问量波动大的应用,还可以动态调整。但运维水平要求也更高)

* 使用缓存

* 读写分离

* 动静分离

* 消息队列

* 反向代理和CDN

  • 高可用

* 多机部署,在少量机器故障时仍提供可接受的服务质量

  • 海量数据

* 分布式文件系统

* 分布式数据库

* NoSQL

* 搜索引擎

  • 网络情况复杂

* 多数据中心,让数据靠近用户

* CDN

* GeoDNS

  • 安全环境恶劣

* DDoS防御(高防IP,高防CDN,端口过滤,限流,熔断,监控)

* 加密

* 身份认证

  • 需求快速变更、发布频繁

* 业务拆分

* 团队划分适应业务发展的需要(有横贯各个业务线的架构风格指导,也有业务单元内部的职责分工。既有擅长总体规划的通才,也有擅长某些技术的专才。)

* 微服务

* 中台化

  • 渐进式发展

大型的互联网应用都是从小规模发展而来的,随着访问量的增加,架构也快速变化,有时候甚至没有现成的架构可供参考,没有现成的产品与基础设施可供使用,在解决具体应用遇到的问题时,催生了新的架构,新的架构成熟以后,基础设施还可以作为产品提供出来(云服务)。

不能一蹴而就,而是在生存的压力下快速演化。演化的方向也无法预先计划,做计划只是为了在遇到意外时有应对措施。



用户头像

Eric

关注

给写代码的人写代码 2017.10.17 加入

Clojure

评论

发布
暂无评论
架构师训练营第四周 - 作业