作者回复: 微博我没做过,但是我觉得大体思路应该是通用的
微博的内容基本是静态数据,发了就不能修改,所以cache应该没问题,而微博的热点比较明显,所以发现热点和对热点数据进行针对性的优化比较重要
至于要怎么进行优化还要看看微博的数据结构是怎么设计的,微博内容和评论的关系已经发微博的人和关注的人关系等
作者回复: 😏
作者回复: 例如对每个请求的商品id取模,让后根据取模的结果分别设置多个linkedhashmap,每个map当做一个队列
作者回复: 不一定非要用队列,也可以用其他内存集合如hashmap都行
缓存数据,一般静态数据可以提前加载到内存,如通过配置系统推送的方式。动态数据可以在远程调用时零时缓存在本机中。
作者回复: 😉
作者回复: 日志收集和存储的技术现在都比较成熟了,有很多开源的组件,例如zabbix可以学习一下他是如何实现的
作者回复: 是不好做,隔离数据是按照一个纬度隔离的,例如隔离秒杀商品,是按照商品纬度,就是把一部分商品数据单独放到另外一个数据库,这样只要把一部分商品路由到新的隔离数据库就行了。
作者回复: 亿分之一是指热点商品指占商品用量的比例很小
占用服务器资源是指一台服务器秒杀商品的qps占了大部分请求比例
作者回复: 也可以把他当成后台系统的一部分,但是中间件本身就一直存在,并不是因为热点发现系统才加入的。
中间件记录热点大部分是记录到日志里面的,但也不绝对
作者回复: 热点的统计可以很简单的对访问的商品进行访问计数,然后排序
还有就是用通常的队列的淘汰算法如lru等都可以实现
作者回复: 对秒杀这个场景,商品基本是固定的,基本都会一直在内存中
作者回复: 加过期时间也是一个好思路
作者回复: :)
作者回复: 数据库层深层优化我不是专家,建议可以参考一下MySQL的优化书籍😁
作者回复: 这个具体的指标要看情况,不一定就是多少次就判定是热点,也可能根据top多少来设置,到底设置多少合理,要根据其他一些因素来综合考虑,例如缓存这些热点的cache空间大小以及你对这些热点的处理方式(例如可能会限流)都会影响。
作者回复: 从效果上来说,都是为了达到保护的作用。限制是防止你越界,而隔离是不让你越界 :)