高并发秒杀场景:双十一,618
常规设计:需要在横向考虑:功能、限流、安全; 在纵向考虑:极致性能和数据的一致性; 关注全链路在高并发极限压力下的表现
秒杀系统在设计过程中,需要用到高并发、缓存、数据库、架构和性能优化等多方面的技术知识
秒杀架构:分为主动秒杀和被动秒杀 被动秒杀是场景非人为设计,比如火车票抢购
平台:C端目标、B端目标和平台目标
(C端用户):体验是否流畅、数据是否无误至关重要
(B端用户):价格、数量和资金上都不能出错。防止恶意下单
(平台目标):保证不影响平台其他业务
设计原则和方法::分-限-快-准-稳-练
(分):一是前后端资源分离,二是动态数据与静态数据的分离,三是高低频数据分离。
(限):1.客户端流量打散(前端可以通过答题,滑块验证,验证码)2.服务端限流,有分布式限流和单机限流(可以将业务规则概率向特定客户倾斜)3.安全校验(流量清洗),识别出黄牛党,通常方法是人机识别和cc攻击 4.秒杀品校验和资格校验:秒杀品是否还在,用户是否已经参与秒杀过等
(快):1.多用缓存 2.中心缓存和本地缓存 3.少用数据和计算
(准):数据一致:1缓存与数据库一致 2.本地缓存与中心缓存一致 3.订单和库存一致 4.前端和后端一致
(稳):1.风险隔离 (熔断)(01:应用隔离 02数据库隔离 03:业务隔离 04:中间件隔离) 2、风险管控: 【基础指标的监控:CPU+内存+负载+网络+磁盘使用率】【JVM:Full GC、Young GC、java线程、死锁线 程、可运行线程】【中间件:接口、缓存、容量、数据库、MQ的RT和QPS以及消息堆积】
(练):全链路测试验收