9.4 缓存优化之无底洞

1.简介
(1).问题描述
2010年,Facebook有了3000个Memcache节点,但是发现一个问题,增加机器后性能没有提升反而下降了,这便是无底洞问题。

(2).问题关键点
执行一个命令,一次网络传输变成多次网络传输,增加了网络的开销。
在这里插入图片描述

  • 更多的机器!=更高的性能
  • 批量接口需求(mget或者mset等)

2.优化IO的方法

  • 命令本身优化:如慢查询命令keys或hgetall bigkey
  • 降低介入成本:例如客户端长连接/连接处或者NIO等
  • 减少网络通信次数

3.四种批量优化的方法
(1).串行mget
在这里插入图片描述

(2).串行IO
在这里插入图片描述

(3).并行IO
在这里插入图片描述

(4).hash_tag
在这里插入图片描述

(5).四种方案对比

方案优点缺点网络IO
串行mget编程简单,少量keys满足需求大量keys请求延时严重O(keys)
串行IO编程简单,少量节点满足需求大量node延迟严重O(nodes)
并行IO利用并行特性,延迟取决于最慢的节点编程复杂,超时定位困难O(max_slow(node))
hash_tag性能最高读写增加tag维护成本,tag分布易出现数据倾斜O(1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值