目录


mac-cache 缓存组件

基本概念

  mac-cache提供了对缓存中间件的封装与监控,目前主要针对Redis提供监控服务与API封装,以实现缓存的分布式集群。   注:虽然此组件与REDIS哨兵和Cluster集群在一定程序上可以共存(参见高级应用),但为降低系统部署复杂度,不推荐这么做。
  1. 支持基于JVM和Redis的缓存
  2. 支持Redis的主从模式
  3. 支持基于分组和hash的水平分片
  4. 支持分片内节点的主备、主从、冷备三种模式
  5. 提供单独的缓存监控中心,可以完全替代哨兵
  6. 集群节点状态自动检测与恢复(解决类似redis哨兵集群出现的混乱)
  7. 可在读写本地缓存时自动与远程缓存同步
  8. 提供数据装载机制,确保缓存与持久化存储中的数据一致,节点启动时,可从业务数据库或文件重新加载数据

图片未加载

集群结构

  如上图所示,我们将缓存视做若干个缓存数据库(DB),每个DB下有多个分片(Shard),每个Shard下有一个主节点(master),若干个备节点(backup)或从节点(slave)。

主备策略

  目前支持三种主备策略(standby):

缓存监控

  当缓存监控发现某个分片中的主节点不可用时,将根据该分片的主备策略,采取对应的措施。它在启动时也会根据此策略决定如何协调主备关系,以避免集群出现混乱,并实现故障的自动处理。

分片策略

  一个缓存库下可以有多个分片,目前支持以下两种分片策略来划分分片:

主从同步

  mac-cache并不实现数据的主从同步,它依赖缓存中间件自身的主从复制能力:

数据装载

  某些缓存数据需要严格保证与持久化中的数据一致,或者此类数据希望自动加载到缓存,而不必人工干预,这就需要数据装载机制。
  当缓存监控发现某个主节点宕机,并执行主备切换后,备节点中可能没有数据,或者数据已经不是最新,它会调用客户端应用(业务应用)的接口,将数据从持久化存储中装载到内存中。