项目网站流量的指标: 1、TPS 2、QPS 3、PV 4、UV
TPS: 每秒执行事务的数量 (Transactions Per Second)
QPS: 每秒查询接口的数量(数据库中的概念) = 数据库中的每秒执行查询sql的次数
UV: 浏览网站的用户数量
PV: 页面浏览量, 接口的请求数量

qps > 大于 tps ,因为一个事务当中可以有多个sql 语句 pv > 大于 uv

1、电商项目学习

1.1、项目整体架构

业务架构
技术架构

1.2、项目技术点

基础接口
后台定时任务
异步消息
延迟异步消息

1.3、技术与场景结合

1.3.1 使用场景之: 定时任务
1.3.2 异使用场景之: 异步消息
1.3.3 使用场景之: 延时消息

2、核心流程分析

2.1、整体的流程

图片.png

2.2、分支流程的业务分析

图片.png

3、技术难点解决

3.1、读并发

主要解决的问题是: 接口响应的速度

核心的技术问题:

  1. 缓存失效如何解决
  2. 热点数据如何解决

1、列表读
不建议使用缓存
1.1、 使用字段冗余的方式,减少表的链接次数,从而提高相应的速度RT response time。
1.2 、使用宽表的方式,索引设置,从而提升查询效率。-> 但是需要保证数据一致性(定时任务,异步监听)。
1.3 、使用es 倒排索引

2、详情读
2.1、分布式缓存
2.2、本地缓存
2.3、页面静态化

补充: 读写分离可以解决部分 详情读 和 列表读的问题。

3.2、写并发

主要解决的问题是: 服务器的压力 将大部分请求拦截到外部,尽量避免无效请求

核心业务问题:

  1. 超卖如何解决
  2. 售罄状态如何同步

3.2.1、分布式锁
数据库的锁
全局服务的锁
批量锁,请求合并

3.2.2、异步队列
rocketmq
延迟队列

3.2.3、分布式事务
2pc 两阶段提交事务
AT 模式
TCC 模式

3.2.4、限流熔断
限流算法
中间件redis 限流
框架sentinel 限流
框架hystrix 熔断
框架sentinel 熔断

3.2.5、分库分表
sharedingJdbc 分库分表
id 策略的生成
分库的维度和分表的维度
分库分表的路由策略
分库分表的分布式事务的解决

3.2.6、分布式id
雪花算法
uuid
leaf 框架