赞
踩
目录
方法3:多级缓存,代理层面增加本地缓存+Redis+JVM缓存(Guava的LoadingCache,Caffeine等等)
热Key问题:当10w+QPS打到同一个Key上,导致单台Redis(QPS4-6w)可能会宕机,此时各种集群都无法解决这个问题,那么又有哪些策略可以应对呢?
Redis是单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题;性能受限于CPU,单实例QPS在4-6w。
Memcached是多线程,可以利用多核优势,单实例在正常情况下,可以达到写入60-80w qps,读80-100w的QPS。
Redis的big key与热key类操作,如果qps较高则容易造成redis阻塞,影响整体请求。Memcached因为是多线程,与redis相比,在big key与热key类操作上支持较好。
对于某件过热商品,提前拆分热key和库存,具体做法:可以根据本机的ip或mac地址做hash,之后的值与拆key的数量做取余,最终决定拼接成什么样的key后缀,从而打到哪台机器上;服务启动时的一个随机数对拆key的数量做取余。
原理就是在client端做洞察,然后上报对应hotkey,server端检测到后,将对应hotkey下发到对应服务端做本地缓存,并且这个本地缓存在远程对应的key更新后,会同步更新,已经是目前较为成熟的自动探测热key、分布式一致性缓存
解决方案
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。