• A星空之夜
    2018-10-03
    如果是微博的热点数据,应该怎么优化读操作呢

    作者回复: 微博我没做过,但是我觉得大体思路应该是通用的

    微博的内容基本是静态数据,发了就不能修改,所以cache应该没问题,而微博的热点比较明显,所以发现热点和对热点数据进行针对性的优化比较重要

    至于要怎么进行优化还要看看微博的数据结构是怎么设计的,微博内容和评论的关系已经发微博的人和关注的人关系等

    
     13
  • 放羊大王
    2018-10-04
    思路大概是通过日志和数据分析判断,某商品是热点,即将有大量请求到来。把商品请求移交给另外的秒杀系统,秒杀系统动静分离出html页面,和ajax请求。

    作者回复: 😏

    
     8
  • 爱我曲
    2018-10-04
    例如对被访问商品的 ID 做一致性 Hash,然后根据 Hash 做分桶,每个分桶设置一个处理队列,这样可以把热点商品限制在一个请求队列里
    -----------------------
    作者,您好,这个分桶设置处理队列是怎么实现的?可以讲下实现过程吗?

    作者回复: 例如对每个请求的商品id取模,让后根据取模的结果分别设置多个linkedhashmap,每个map当做一个队列

    
     6
  • 诗泽
    2018-10-08
    但是,缓存热点数据更多的是“临时”缓存,即不管是静态数据还是动态数据,都用一个队列短暂地缓存数秒钟,由于队列长度有限,可以采用 LRU 淘汰算法替换。

    为什么选择用队列来缓存数据呢,队列如何做到快速读取缓存数据的呢?

    作者回复: 不一定非要用队列,也可以用其他内存集合如hashmap都行
    缓存数据,一般静态数据可以提前加载到内存,如通过配置系统推送的方式。动态数据可以在远程调用时零时缓存在本机中。

    
     4
  • qingbusheng
    2018-11-10
    解决快速发现热点数据的另一个思路:1.在前端nginx 通过商品、下单、购物车URI 做数据镜像 2 通过nginx+lua+redis 根据不同的业务key 做计数,如果超过设定阈值则采用redis 发布订阅机制或消息中间件 通知下游Cache 模块缓存数据。感谢老师点评

    作者回复: 😉

    
     3
  • rango
    2018-11-05
    你好,想问一下通过异步采集日志的形式获取热点数据这方面的话,我想知道日志如何存储,是不是加一些特定字符串以便收集,采集的方法等技术,有没有思路或者推荐的文章等。

    作者回复: 日志收集和存储的技术现在都比较成熟了,有很多开源的组件,例如zabbix可以学习一下他是如何实现的

    
     2
  • 重案组之虎
    2018-10-28
    关于隔离层次的一个小问题:想了下数据隔离好像不太好实现吧?如果都是只读的,那么还好办一些,开一些只读实例专用就好,但是这样的场景肯定会有写请求,但是写的记录要和其他数据互通,最后不还得打到数据库集群里么?这好像和“启用单独的 MySQL”相悖了......请老师具体指教下,多谢!

    作者回复: 是不好做,隔离数据是按照一个纬度隔离的,例如隔离秒杀商品,是按照商品纬度,就是把一部分商品数据单独放到另外一个数据库,这样只要把一部分商品路由到新的隔离数据库就行了。

     1
     2
  • Mr.钧👻
    2018-10-03
    虽然这个热点可能只占请求总量的亿分之一,但是可能占用服务器90%的资源

    这句话是什么意思呢?可以详细解释一下吗?

    作者回复: 亿分之一是指热点商品指占商品用量的比例很小

    占用服务器资源是指一台服务器秒杀商品的qps占了大部分请求比例

    
     2
  • halo
    2018-10-06
    图1 热点发现系统: 中间件nginx cache rpc 为什么不是后台服务的一部分呢 ? 还是说中间件构成的异步监控系统用来日志记录?

    作者回复: 也可以把他当成后台系统的一部分,但是中间件本身就一直存在,并不是因为热点发现系统才加入的。

    中间件记录热点大部分是记录到日志里面的,但也不绝对

    
     1
  • 小喵喵
    2018-10-03
    发现动态热点中的第二点,建立一个热点上报。。
    怎么判断数据是不是热点呢?是一个具体的算法没有写出来吗?这个地方看了好几遍都看不明白,请指点。

    作者回复: 热点的统计可以很简单的对访问的商品进行访问计数,然后排序
    还有就是用通常的队列的淘汰算法如lru等都可以实现

     1
     1
  • iWill
    2018-10-03
    缓存数据,LRU淘汰算法,那么缓存的这些数据会不会频繁的移动、删除,并发比较大的时候会不会成为性能的瓶颈,想了解下。

    作者回复: 对秒杀这个场景,商品基本是固定的,基本都会一直在内存中

    
     1
  • 杨晓维
    2019-07-17
    请问老师,异步读取日志具体怎么实现?
    
    
  • 张祎
    2019-07-07
    热点请求会大量占用服务器处理资源,虽然这个热点可能只占请求总量的亿分之一,然而却可能抢占 90% 的服务器资源
    这个怎么理解,请求量少为什么还会大量占用资源呢?
    
    
  • Jefung
    2019-04-21
    分桶限制还是无法理解, 这么处理才能把热点请求和正常请求区分开
    
    
  • WL
    2019-04-20
    请问下老师缓存数据,LRU淘汰算法的实现可不可以用redis加一个过期时间,如果可以的话是否需要动态的判断过期时间,如果不可以的话是什么原因不可以?

    作者回复: 加过期时间也是一个好思路

    
    
  • 威猛小茂然
    2019-03-18
    写的挺好的

    作者回复: :)

    
    
  • 李白
    2019-02-28
    再来说说限制。限制更多的是一种保护机制,限制的办法也有很多,例如对被访问商品的 ID 做一致性 Hash,然后根据 Hash 做分桶,每个分桶设置一个处理队列,这样可以把热点商品限制在一个请求队列里,防止因某些热点商品占用太多的服务器资源,而使其他请求始终得不到服务器的处理资源。
    这个具体怎么操作呢?nginx可以处理吗?
    
    
  • 冉博哲(Free_Mason ...
    2019-02-27
    DB 层,如何对热点数据进行优化呢?比如:a 表的某一行的库存,是热点更新?除了把数据拦在 DB 层之外的,进入 DB 层的热点更新请求,要如何给 DB 减压呢?想到给热点行的库存分成多个减压,当缺点太多,而且对于动态热点没用。其它方案都还有那几种?

    作者回复: 数据库层深层优化我不是专家,建议可以参考一下MySQL的优化书籍😁

    
    
  • williamcai
    2019-01-27
    热点发现系统,通过日志分析出热点数据,有没有判断标准说明该数据是热点,比如搜索次数达到多少,能不能给出具体的指标

    作者回复: 这个具体的指标要看情况,不一定就是多少次就判定是热点,也可能根据top多少来设置,到底设置多少合理,要根据其他一些因素来综合考虑,例如缓存这些热点的cache空间大小以及你对这些热点的处理方式(例如可能会限流)都会影响。

    
    
  • Andy_Claire
    2019-01-21
    你好, 看到你处理热点数据的思路, 其中限制和隔离让我有点混淆, 感觉区别不大. 你给出限制的做法是根据id做hash, 然后用单独的队列处理. 我理解这也是一种维度(请求)的隔离.

    作者回复: 从效果上来说,都是为了达到保护的作用。限制是防止你越界,而隔离是不让你越界 :)

    
    
我们在线,来聊聊吧