03 | 二八原则:有针对性地处理好系统的“热点数据”
该思维导图由 AI 生成,仅供参考
为什么要关注热点
什么是“热点”
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了处理系统中的热点数据的方法和思路。针对热点数据的优化、限制和隔离提出了具体的解决方案,包括缓存热点数据、一致性Hash限制、业务、系统和数据层面的隔离等。文章还介绍了如何发现热点数据,包括人工标识、大数据统计计算和实时热点发现方案。通过对热点数据的处理和隔离,可以有效优化系统性能,减少请求量和路径,对高性能分布式系统具有重要价值。整体而言,本文内容丰富,涉及技术实现和系统优化,对处理系统中的热点数据具有一定的指导意义。
《如何设计一个秒杀系统》
全部留言(44)
- 最新
- 精选
- 放羊大王思路大概是通过日志和数据分析判断,某商品是热点,即将有大量请求到来。把商品请求移交给另外的秒杀系统,秒杀系统动静分离出html页面,和ajax请求。
作者回复: 😏
2018-10-0419 - A星空之夜如果是微博的热点数据,应该怎么优化读操作呢
作者回复: 微博我没做过,但是我觉得大体思路应该是通用的 微博的内容基本是静态数据,发了就不能修改,所以cache应该没问题,而微博的热点比较明显,所以发现热点和对热点数据进行针对性的优化比较重要 至于要怎么进行优化还要看看微博的数据结构是怎么设计的,微博内容和评论的关系已经发微博的人和关注的人关系等
2018-10-03815 - qingbusheng解决快速发现热点数据的另一个思路:1.在前端nginx 通过商品、下单、购物车URI 做数据镜像 2 通过nginx+lua+redis 根据不同的业务key 做计数,如果超过设定阈值则采用redis 发布订阅机制或消息中间件 通知下游Cache 模块缓存数据。感谢老师点评
作者回复: 😉
2018-11-1010 - 爱我曲例如对被访问商品的 ID 做一致性 Hash,然后根据 Hash 做分桶,每个分桶设置一个处理队列,这样可以把热点商品限制在一个请求队列里 ----------------------- 作者,您好,这个分桶设置处理队列是怎么实现的?可以讲下实现过程吗?
作者回复: 例如对每个请求的商品id取模,让后根据取模的结果分别设置多个linkedhashmap,每个map当做一个队列
2018-10-0438 - 诗泽但是,缓存热点数据更多的是“临时”缓存,即不管是静态数据还是动态数据,都用一个队列短暂地缓存数秒钟,由于队列长度有限,可以采用 LRU 淘汰算法替换。 为什么选择用队列来缓存数据呢,队列如何做到快速读取缓存数据的呢?
作者回复: 不一定非要用队列,也可以用其他内存集合如hashmap都行 缓存数据,一般静态数据可以提前加载到内存,如通过配置系统推送的方式。动态数据可以在远程调用时零时缓存在本机中。
2018-10-085 - rango你好,想问一下通过异步采集日志的形式获取热点数据这方面的话,我想知道日志如何存储,是不是加一些特定字符串以便收集,采集的方法等技术,有没有思路或者推荐的文章等。
作者回复: 日志收集和存储的技术现在都比较成熟了,有很多开源的组件,例如zabbix可以学习一下他是如何实现的
2018-11-054 - Mr.钧👻虽然这个热点可能只占请求总量的亿分之一,但是可能占用服务器90%的资源 这句话是什么意思呢?可以详细解释一下吗?
作者回复: 亿分之一是指热点商品指占商品用量的比例很小 占用服务器资源是指一台服务器秒杀商品的qps占了大部分请求比例
2018-10-034 - 钱这节的重点感觉是加深对二八原理的认识,这个原理不知为何好像具有普适的感觉,各个领域都有它的用武之地。
作者回复: 😉
2018-11-133 - 重案组之虎关于隔离层次的一个小问题:想了下数据隔离好像不太好实现吧?如果都是只读的,那么还好办一些,开一些只读实例专用就好,但是这样的场景肯定会有写请求,但是写的记录要和其他数据互通,最后不还得打到数据库集群里么?这好像和“启用单独的 MySQL”相悖了......请老师具体指教下,多谢!
作者回复: 是不好做,隔离数据是按照一个纬度隔离的,例如隔离秒杀商品,是按照商品纬度,就是把一部分商品数据单独放到另外一个数据库,这样只要把一部分商品路由到新的隔离数据库就行了。
2018-10-2823 - 钱热点数据-我们之前做过一个系统也用到热点数据,我们的思路比较简单,对于仓库生产,仓库的范围是有限的,具体到仓,从业务的角度出发北上广的仓库基本属于比较热的数据,于是就有了定时和手动往缓存中刷新热点数据的处理方式了。
作者回复: 虽然土点,但是有效😉
2018-11-131