架构师 01 期,第四周课后作业
作业一:
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
垂直伸缩
通过升级硬件和网络吞吐能力可以实现垂直伸缩。由于不需要改变应用架 构,所以通常 被认为是最简单的短期伸缩性方案
水平伸缩
水平伸缩是指通过增加服务器提升计算能力的一类架构方法。
架构演化
第一阶段 :应用数据分离
第二阶段:使用缓存改善系统性能
第三阶段:使用应用服务器集群改善系统的并发处理能力
第四阶段:数据库读写分离
第五阶段:使用反向代理和 CDN 加速网站响应
第六阶段:使用分布式文件系统和分布式数据库系统
第七阶段:使用 NoSQL 和搜索引擎
第八阶段:业务拆分
第九阶段:微服务及中台化
第十阶段 大数据与智能化
应用集群
反向代理:nginx
无状态的应用服务:N 个
数据库:HA
要点:
一、对于有状态的服务涉及 Session 的处理。
反向代理支持 session 保持,但是应用服务器的增加和删除,导致 session 失效
应用服务器之间进行 session 同步
部署 HA 或集群模式的 session 服务器
session 存在cookie中,右浏览器来告诉应用服务器 session,以此实现了session和应用服务器的解耦
二、动静结合
1、静态资源是用反向代理
2、静态资源使用 CDN
3、静态资源使用浏览器缓存
瓶颈:数据库,读写比例失衡,超出数据库处理能力
读写分离
绝大多数应用是读多写少,因此,进行读写分离。
反向代理:nginx
无状态的应用服务:N 个
数据库:HA + 多个从节点(3-5)
要点:
一、判断主从延迟
1、 seconds_behind_master
2、点位法
3、 GTID 法
二、主从数据之间的延迟
1、强制走主库法:对一致性低的,可以直接读从节点;一致性高的,走主库读。
2、判断主库延迟法:对操作根据一致性的要求高度应用,通过判断主库延迟来决定读从库还是读主库。
3、半同步法
4、等主库点位法
5、等 GTID 法
6、写缓存法
三、访问数据模式
1、三方依赖:ShardingJDBC、TDDL
2、代理层:MyCat、DBProxy
瓶颈:数据量很超过单机存储能力。
分库分表
反向代理:nginx
无状态的应用服务:N 个
数据库:HA + 多个从节点(3-5)+ 分库 + 分表
要点:
1、全局唯一 ID:ID 发号器
2、分库分表的逻辑:基于范围、基于 hash
3、引入NoSQL:比如引入 ES 满足特定场景的读性能,HBase 满足更大数据量的处理
引入缓存
反向代理:nginx
无状态的应用服务:N 个
缓存:redis、memcached
数据库:HA + 多个从节点(3-5)+ 分库 + 分表
要点
一、缓存分离
本地缓存:guava、caffine、ehcache
分布式缓存:redis、memcached
二、缓存更新套路
1、cache Aside
2、write through、read through
3、write back
三、缓存引入问题
1、热点问题
2、缓存穿透
3、缓存击穿
4、缓存雪崩
分布式服务
反向代理:nginx
无状态的应用服务:根据DDD 思想对服务精拆分
缓存:redis、memcached
数据库:HA + 多个从节点(3-5)+ 分库 + 分表
要点
1、服务治理:服务发现、配置中心、注册中心、客户端负载均衡、熔断、限流、链路跟踪等等服务治理手段。
2、DevOp、服务网格应对应用爆炸
3、引入消息中间件解耦。
数据驱动、智能化、中台化
反向代理:nginx
无状态的应用服务:根据DDD 思想对服务精拆分
缓存:redis、memcached
数据库:HA + 多个从节点(3-5)+ 分库 + 分表
数据分析:大数据平台、AI 平台
要点:
1、建立大数据技术对业务进行分析,找到业务数据的价值
2、引入机器学习、AI 技术赋能业务
3、AIops 简化运维
4、Cloud Native
5、业务中台、数据中台、AI 中台
评论