Skip to content

Latest commit

 

History

History
310 lines (199 loc) · 14.9 KB

秒杀项目总结.md

File metadata and controls

310 lines (199 loc) · 14.9 KB

1 介绍项目

1)项目整体设计的感受(可以画架构图) 2)你负责了什么,承担了什么角色,做了什么 3)项目描述,最好体现自己的综合素质:如何协调开发,遇到问题如何解决,用什么技术实现了什么功能

2 缓存雪崩

3 问题:秒杀地址不应该爆漏给用户

写脚本,LRU缓存控制请求数量

4 不同数据库的数据读写

分布式锁,消息队列(提高性能,降低耦合度,流量削峰)

5 分布式事物解决方案

6 数据库与redis缓存如何保持一致性

7 秒杀多个步骤如何保证线程安全性

客观锁,悲观锁

8 用的什么测试工具

Redis缓存服务

缓存商品和商品详情信息,如果不存在,则从数据库查询,并且加入到redis缓存,如果存在,直接返回。

RabbitMQ

1)异步订单 2)异步支付 3)订单超时处理(quartz)

缓存的信息:商品信息,商品详情信息,订单信息

查询订单优化

面杀系统架构设计思路

面试经验相关

秒杀系统相关

秒杀架构设计

项目技术点

ssm

activiti

lombok、日志log4j

分布式相关

ehcache

Redis

其他

dubbo

zookeeper

消息队列

RocketMQ

RabbitMQ

kafka

分布式解决方案

分布式锁
分布式事务

微服务

分布式session

https://blog.csdn.net/qq_35620501/article/details/95047642

分库分表
读写分离

亿级流量架构设计方案

项目工具

git

maven

项目功能点

单点登录

前后端分离

mysql(优化)

生成数据工具:mockaroo

1、如果有子查询,改为连接语句 2、在where条件建立索引:user的id 3、如果有连接关键词,也建立索引:user的id 4、如果有分组或者排序,建立索引:order by time 5、同时也可以建立联合索引

需求1 某个部门查看审核人员的所有审批信息:先查询某个部门所有的审核人员,根据审批建议、审批时间及审批人查询审批信息(审批数据70w)

select u.* , c.* from user u inner join checklog c 
on c.uid == u.id
where u.deptmentId = 1
and time > {1} and time < {2}
and desc like ' %' 

①子查询:先查询部门的用户id然后再查询相关的审批信息 ②没有加索引:70w数据查询用了3w s。 ③给user的id建立索引,时间减少到了1.003s ④然后考虑到子查询,所以,改成连接操作,时间变为0.057s ⑤再给连接字段建立索引,时间变为0.001s ⑥模拟数据增加到300w时间增加到了0.016s,在部门id和用户id建立联合索引,时间降到了0.005s。 ⑦用时间进行排序,建立时间索引。

权限控制(设计、shiro)

线上问题调优(虚拟机,tomcat)

性能优化

架构设计

并发问题

Tip:本来有很多我准备的资料的,但是都是外链,或者不合适的分享方式,所以大家去公众号回复【资料】好了。

现在免费送给大家,在我的公众号 好好学java 回复 资料 即可获取。

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

1、老铁们,关注我的原创微信公众号「好好学java」,专注于Java、数据结构和算法、微服务、中间件等技术分享,保证你看完有所收获。

2、给俺一个 star 呗,可以让更多的人看到这篇文章,顺便激励下我继续写作,嘻嘻。