目录
上一篇提到,Memcached将数据全部保存在内存中,并且服务端节点间互相分离,这就带来了一定的性能问题:
首先,由于数据完全存储于内存中,一方面其性能上限比较低,很容易产生单点问题,另一方面,一旦服务器实例重启,原本的数据将全部丢失,因此,服务宕机的代价非常高;
其次,由于服务器很容易出现单点问题,宕机概率很高,从而导致访问穿透缓存层打向数据库,造成雪崩,如果应用到分布式系统架构中,会带来很大的潜在风险;
此外,由于Memcached无法像其他分布式组件那样具有自动发现的能力,因此无法扩展。
它主要依赖客户端提供分布式特性,官方对此的描述是:“Logic Half in Client, Half in Server”。
Memcached的常用客户端有xmemcached、spymemcached等。这里以xmemcached为例,官方介绍的特性如下:
- 完全支持Memcached的 text/bianry 协议
- 异步API
- 多线程/线程安全
- 支持通过哈希或一致性哈希管理多个服务器节点
- 使用JMX管理服务器节点
- 支持为节点设置权重
- 支持动态伸缩集群规模、设置节点权重
- 支持客户端统计数据
- 自动重连和心跳机制