xuanyuan
2020-12-09
赞,很多设计思想可以和mysql对比着看,收获颇丰
作者回复: 是的,如果能和其他系统对比起来学习,一般会有更多收获。这是个好方法。
7
Kaito
2020-11-16
在有数据访问倾斜时,如果热点数据突然过期了,而 Redis 中的数据是缓存,数据的最终值保存在后端数据库,此时会发生什么问题? 此时会发生缓存击穿,热点请求会直接打到后端数据库上,数据库的压力剧增,可能会压垮数据库。 Redis 的很多性能问题,例如导致 Redis 阻塞的场景:bigkey、集中过期、大实例 RDB 等等,这些场景都与数据倾斜类似,都是因为数据集中、处理逻辑集中导致的耗时变长。其解决思路也类似,都是把集中变分散,例如 bigkey 拆分为小 key、单个大实例拆分为切片集群等。 从软件架构演进过程来看,从单机到分布式,再到后来出现的消息队列、负载均衡等技术,也都是为了将请求压力分散开,避免数据集中、请求集中的问题,这样既可以让系统承载更大的请求量,同时还保证了系统的稳定性。
共 5 条评论
194
Summer 空城
2020-11-27
我们把热点数据复制多份,在每一个数据副本的 key 中增加一个随机前缀,让它和其它副本数据不会被映射到同一个 Slot 中。 这样做了以后怎么查呢?key前边加了随机数,客户端也不知道用啥key去查数据了
共 17 条评论
15
nxcat
2020-11-16
终于追上了,期待课代表的留言!课后问题我理解的话,只读模式下会发生缓存击穿,严重的话还可能造成雪崩。
10
Sam Fu
2021-02-13
不过业界中解决热key的话一般不采用hotkey+随机数的方式吧。毕竟如果集群实例个数特别多的话,删除hotkey的话成本有点大。 查看网上资料说解决热key更多的采用是将热点key加入到二级缓存(如JVM缓存) 不知道对不对?
共 3 条评论
4
静
2021-09-26
感觉后面干货越来越少了,前几篇,一篇一看就是一晚上,后面一晚上看8,9篇,还是我变强了呢?
共 1 条评论
3
Lemon
2020-11-17
课后题:将发生缓存击穿,导致数据库压力激增,可能导致数据库奔溃。与之相对的解决方法是不设置热点 Key 的过期时间,并以采用热点数据多副本的方法减少单实例压力。 疑问:老师您好,热点数据多副本的方法使得每一个数据副本的 key 都有一个随机前缀,那么客户端在读取的时候怎么获取这个随机前缀?又怎么保证带上随机前缀后的热点 Key 会被较为均匀的请求呢?
共 6 条评论
3
InfoQ_小汤
2021-11-26
针对流量倾斜问题,对key作切分 理论上其实很简单 但是联合业务实践上挺复杂的,某个key一开始是非热点数据状态的,需要有监控redis key的工具,需要有相关自动切分或者人工干预切分的行为,切分以后业务端查询也需要同步被告知切分的规则,否则业务查询时候无法获取正确的key,切换的过程中新key与旧key需要同时存在一小段时间,否则肯能存在读旧key的请求异常。目前唯一能想到的是通过zookeeper这种配置中心去协调(watch机制),但是大量读会给zookeeper带来比较大的压力。增加二级缓存又会有数据延迟的情况,真的不清楚实际上业务是如何实现这种联动的。
2
dfuru
2020-11-26
缓存击穿
2
云海
2020-11-19
热点多副本方案的使用:客户端请求时带上客户端标记即可,不同的客户端请求就会hash分散到不同的热点副本。
2