技术栈:SpringBoot Mysql Redis RabbitMQ Mybatis-Plus Maven Linux Jmeter
- 秒杀/高并发主要解决两个问题:并发读、并发写
- 并发读的核心优化理念是尽量减少用户到DB来"读"数据,或者让他们读更少的数据, 并发写的处理原则也一样
- 针对秒杀系统需要做一些保护,针对意料之外的情况设计兜底方案,以防止最坏的情况发生
- 系统架构要满足高可用: 流量符合预期时要稳定,要保证秒杀活动顺利完成,即秒杀商品顺利地卖出去,这个是最基本的前提
- 系统保证数据的一致性: 就是秒杀 10 个 商品 ,那就只能成交 10 个商品,多一个少一都不行。一旦库存不对,就要承担损失
- 系统要满足高性能: 也就是系统的性能要足够高,需要支撑大流量, 不光是服务端要做极致的性能优化,而且在整个请求链路上都要做协同的优化,每个地方快一点, 整个系统就快了
- 、秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键,对应的方案比如页面缓存、
Redis预减库存/内存标记与隔离、请求的削峰(RabbitMQ/异步请求)、分布式Session共享等。
略
用户密码设计:两次加密加盐md5(md5(pass明文+固定salt)+salt2)