秒杀系统总结与思考(三) 发现热点

什么是热点:

热点分为热点操作热点数据。热点数据又分为静态热点数据动态热点数据

发现热点数据:
发现静态热点数据:

1、静态热点数据可通过强制卖家报名,提前把商品筛选,然后通过后台系统将热点商品进行预处理(提前进行缓存),不过增加了卖家的使用成本,也不够灵活
2、通过技术手动进行提前预测,大数据分析,统计TOPN商品

发现动态热点数据: 可以通过大数据预测等手动提前预测,但是实时性较差

1、构建一个异步系统,可收集交易链路上各个环节的中间件产品的热点key,如Nginx、缓存、RPC服务框架等(一些中间件产品本身有热点统计模块)
2、简历热点上报和按需订阅热点服务的下发规范,主要通过交易链路上的各个系统(详情、购物车、交易、优惠、库存、物流等)时间差,把上游热点发现的热点透传给下游系统,提前保护。比如,大促期间,详情页系统最早知道,统一接入Nginx模块统计热点URL
3、上游系统手机的任店数据发送到热点服务台,下游系统(交易系统)就会知道哪些商品频发调用,然后做热点保护。
在这里插入图片描述
通过每台机器上的Agent日志汇总到聚合和分析集群中,通过订阅分发推送到响应系统。可以进行热点数据填充到Cache,或者直接推送到应用服务器的内存中。

注意事项:
1、抓取热定数据采用异步方式,保证通用不影响主流程。
2、热点服务发现和中间件自身热点保护模块应该并存。中间件和应用需要保护自己。
3、热点发现要做到接近实时(3s内完成热点数据发现),这样才有意义。

处理热点数据:

几个思路: 一是优化,二是限制,三是隔离

优化:

最有效的缓存热点数据,热点数据动静分离,则可以长期保存静态数据。不管动、静数据,用队列LRU淘汰算法进行淘汰替换

限制

限制更多的是一种保护机制,比如,对被访问商品的ID做一致性HASH,然后根据Hash做分桶,每个分桶设置一个队列处理,这样可以吧热点商品限制在一个请求队列中,防止某些热点商品占用太多资源

隔离

隔离: 热点数据隔离,不要让1%的请求影响到另外的99%,隔离出来后,更方便对1%进行针对性的优化
1、业务隔离。卖家参加秒杀需要但单独报名,已知热点,可提前预热
2、系统隔离。运行时隔离,通过分组部署和另外99%分开。
3、数据隔离。秒杀数据都是热点数据,比如启用单独的Cache集群或MySQL数据放热点数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值