Memcached 缓存
Memcached 是一个开源、分布式的内存缓存系统。本例中,将介绍如何使用和管理 Memcached 缓存服务。
创建
在本例中,我们将介绍如何创建一个 Memcached 缓存服务。
第一步:选择基本配置
在创建的对话框中,您需要指定缓存服务的类型为 Memcached。 每个 Memcached 缓存服务都会包含 N 个独立的节点,N 最小为1。 在这里,我们指定节点个数为 2,即这个 Memcached 缓存服务将拥有两个用于存储和访问的节点,然后点击提交。
注解 Memcached 的所有节点是可读可写的。另外,由于 Memcached 不支持持久化,当 Memcached 节点重启时,位于内存的缓存空间会被重置。
[
第二步:配置网络
步骤同 创建 Redis 缓存服务 ,不再赘述。
第三步:创建成功
步骤同 创建 Redis 缓存服务 ,不再赘述。
第四步:连接缓存
当缓存服务创建完成之后,我们可以进行连接测试。 如图所示,我们可以同时连接到多节点进行查询和写入,Memcached 的客户端会根据 Hash 算法来自动计算数据的存放节点位置。
注解 默认情况下,缓存服务将使用系统的默认配置,但您可以随时对配置项进行更改并应用到缓存服务中。
扩容
在缓存服务运行过程中,会出现服务能力不足或者容量不够的情况,您都可以通过扩容来解决。
1)增加缓存节点
Memcached 缓存服务支持多个缓存节点。当容量或者性能不足时,您可以通过增加缓存节点来提升。 如图所示,我们在原有集群基础上新增两个节点,并在创建时为新节点指定 IP。
注解 如果服务能力过剩,您也可以删除多余的缓存节点。
注解 默认的 Memcached 客户端使用简单 Hash 来进行数据分片,当增加或删除节点时可能会造成大量的缓存失效。可以采用支持一致性 Hash 算法的 Memcached 客户端来避免这个问题,例如 hash_ring
2)增加缓存容量
当缓存容量不足时,您可以通过扩容操作来提升缓存容量。 如下图所示,我们可以将原有缓存服务的容量从 1 GB 提升到 2 GB。
注解 在线扩容期间,缓存服务会被重启,因为 Memcached 不支持持久化,当重启之后,内存中缓存的数据将因为被重置而失效。
监控
我们提供了强大的监控和告警功能,帮助用户更好的管理和维护运行中的 Memcached 缓存集群。
1)监控服务
我们提供了多达十几项的监控数据,来帮助用户随时了解缓存服务的运行状态和各项指标。 每一项监控都提供了历史监控和实时监控,最短时间间隔可以达到10s。 Memcached 服务的监控数据是通过 Memcached 的 stats 命令来进行采集的。 我们提供的监控项目为如下:
- 节点监控
- 带宽监控: 监控缓存节点的网卡出/入流量。
- 缓存服务监控
- 内存监控: 缓存服务的实际内存使用率,对应 bytes 字段。
- Get操作: Get 相关操作的总数。
- Set操作: Set 相关操作的总数。
- Delete操作:Delete 相关操作的总数。
- Incr操作: Incr 相关操作的总数。
- Decr操作: Decr 相关操作的总数。
- Touch操作: Touch 相关操作的总数。
- Cas操作: Cas 相关操作的总数。
- Flush操作: Flush 相关操作的总数。
- 总连接数: 建立总连接数,对应 total_connections 字段。
- 当前连接数: 活跃的连接数,对应 curr_connections 字段。
- 查询命中数: 查询的命中个数,对应 get_hits 字段。
- 查询未命中数: 查询的未命中个数,对应 get_misses 字段。
- 查询命中率: 查询命中率,对应 get_hits / ( get_hits + get_misses )。
- 总Key个数: 缓存中总的 Key 个数,对应 curr_item 字段。
- 使用召回内存的Key个数: 缓存中使用召回内存的 Key 个数,对应 reclaimed 字段。
- 被拒绝Key个数: 缓存中被拒绝 Key 个数,对应 evictions 字段。当缓存内存不足时,会根据 LRU 算法来删除一些 key。
下图显示了一些监控的图表:
2)告警服务
我们支持对每个缓存节点配置监控告警策略,当发生异常时,会触发用户设定的告警阈值,并发送短信和邮件通知给用户。 缓存目前支持的监控告警规则有”内存使用率”、”已过期 Key 个数”等:
更多关于告警服务的内容可以参见 监控告警 。
配置
我们通过缓存配置组来管理缓存服务的配置。缓存服务和缓存配置组是解耦的,您可以创建多个独立的缓存配置组,并应用到不同缓存服务。 缓存服务在运行过程中,也可以随时变更缓存配置组。
1)创建新的缓存配置组
默认情况下,我们会为每个用户创建一个缺省配置组。用户也可以创建新的配置组,如图所示:
注解 缺省配置组不可以被删除。
- 修改配置项
点击该新建的缓存配置组,我们可以对每项配置项进行修改,如图所示:
修改完后,我们需要进行 “保存”,并点击 “应用” 让新的配置生效。
注解 当配置发生变化时,将会重启对应的缓存服务。
- 常用配置项
- port: 缓存服务端口,默认为 11211。
- udp_port: 缓存服务的 UDP 端口,默认为 11211,0 为禁用 UDP 服务端口。
- cas_disabled: 禁用 CAS (Check and Set), 0 为 启用,1 为禁用,默认为 0。
- error_on_memory_exhausted: 内存不足时的行为,0 为删除 key,1 为返回错误,默认为 0。
其他更多的配置项解释请参见 Memcached 官方文档。