并发经验八年架构师:带你轻松解决缓存在高并发场景下的问题( 五 )

从应用架构角度 , 我们可以通过限流、降级、熔断等手段来降低影响 , 也可以通过多级缓存来避免这种灾难 。

此外 , 从整个研发体系流程的角度 , 应该加强压力测试 , 尽量模拟真实场景 , 尽早的暴露问题从而防范 。

缓存无底洞现象

该问题由 facebook 的工作人员提出的 , facebook 在 2010 年左右 , memcached 节点就已经达3000 个 , 缓存数千 G 内容 。

他们发现了一个问题——memcached 连接频率 , 效率下降了 , 于是加 memcached 节点 ,

添加了后 , 发现因为连接频率导致的问题 , 仍然存在 , 并没有好转 , 称之为”无底洞现象” 。

目前主流的数据库、缓存、Nosql、搜索中间件等技术栈中 , 都支持“分片”技术 , 来满足“高性能、高并发、高可用、可扩展”等要求 。 有些是在client端通过Hash取模(或一致性Hash)将值映射到不同的实例上 , 有些是在client端通过范围取值的方式映射的 。 当然 , 也有些是在服务端进行的 。 但是 , 每一次操作都可能需要和不同节点进行网络通信来完成 , 实例节点越多 , 则开销会越大 , 对性能影响就越大 。

推荐阅读