架构师-第三阶段:快速性能优化
1、动静分离,快速优化利器?
- 动静分离,静态资源用单独的域名访问,例如 css、js、图片等静态资源
- 页面静态化,少量的可以静态化,大量的页面静态化会导致碎片太多,降低性能
2、读写分离,前台后台分离?
- 数据库,一主多从,主从同步。利用 mysql 的 binlog 同步,解决读多写少的性能(分组读写分离)
- 数据库水平切分,用算法对全量数据分割,例如用户数据库 user,分为 user01、user02、user0n,线性解决数据库容量问题
- 前后台分离,前台写入,用户发布数据;后台写入,爬虫抓取数据;前台读取,用户浏览数据;后台读取,运营浏览数据
3、百万级流量,架构该怎么玩?
- 三大分离(动静分离、读写分离、前后台分离)
- 垂直拆分业务,解耦
- 业务垂直拆分
- 代码垂直划分(子系统解耦)
- 数据库垂直拆分(数据里解耦,延时缓解)
- 研发团队垂直拆分(专业化、效率提升)
- 垂直拆分后,子系统如何保证高可用
- 反向代理
- 集群
- 集群后,如何做负载均衡
- 反向代理后,保证高可用
- 反向代理后,DNS 轮询技术,实施接入层扩展
- session 一致性保证,在服务端用 redis 存储 session
- CDN 架构
- 资源更新,采用拉(镜像拉源),而不是推(源推送镜像)
- 常更新的静态资源,加上版本号
- 当系统流量超过百万,甚至是千万级别后,还有哪些优化方法?
- 分层服务化
- 服务化后的高可用、高性能、负载均衡
- 数据库极限优化
- 架构优化万金油,缓存最佳实践
- 高并发下的一致性