13.1 CacheCloud是什么?
13.1.1 现有问题
- 部署成本
以Redis Cluster为例子,虽然Redis的作者开发了redistrib.rb这样的工具帮助我们快速构建和管理Redis Cluster,但是每个Redis节点仍然需要手工配置和启动,相对来说还是比较繁琐的,
而且由于是人工操作,所以存在一定的错误率。例如作为一个Redis运维人员,管理几百上千个Redis节点是很正常的事,如果单纯手工安装配置,既耗时又容易出错。
- 实例碎片化
关系型数据库(例如Oracle、MySQL)发展很多年已经非常成熟,会有专职的DBA人员管理,运维流程和监控平台相对成熟稳定。
对于像Redis这样的NoSQL数据库,很多公司没有专职人员来维护,于是就会出现一种现象:
Redis由各个业务组来维护,造成Redis散落在各个机器上,没有整体的管理。
并且存在着很多由于业务收缩或者下线无人管理的Redis节点。高效
的做法应该是提供统一管理和监控的Redis平台,用于管理机器、集群、节点、用户等资源并做好全方位监控,防止各种“私搭乱建”造成的混乱现象。
- 监控、统计和管理不完善
Redis Live[1]等工具虽然提供了可视化的方式来监控Redis的相关数据,但是如果从功能全面性上还是不够的,例如Redis2.8之后提供的RedisSentinel和Redis3.0提供的Redis Cluster,
目前的开源工具没有提供较好的支持,而且对于Redis info中的某些重要指标也没有实现很好的监控和报警功能。
- 运维经济成本
业务组运维Redis会造成如下三个问题:
- 业务组的开发人员可能更加善于使用Redis实现各种功能,但是没有足够的精力和经验来维护好Redis。
- 各个业务组的Redis较为分散地部署在各自服务器上,造成机器利用率较低,出现大量闲置资源,同时监控和运维无法有效支撑。
- 各个业务组的Redis使用各种不同的版本,不便于管理和交互。
13.1.2 CacheCloud基本功能
它实现多种Redis类型(Redis Standalone、Redis Sentinel、
Redis Cluster)的自动部署、解决Redis节点碎片化现象,提供完善的统计、
监控、运维功能,减少运维成本和误操作,提高机器的利用率,提供灵活的
伸缩性,可方便地接入客户端,对于Redis的开发和运维人员非常有帮助。
整体功能架构如图13-1所示。

CacheCloud提供的主要功能如下:
- 监控统计:提供了机器、应用、实例下各个维度数据的监控和统计界面。
- 一键开启:Redis Standalone、Redis Sentinel、Redis Cluster三种类型的应用,无需手动配置初始化。
- Failover:支持Redis Sentinel、Redis Cluster的高可用模式。
- 可伸缩性:提供完善的垂直和水平在线伸缩功能。
- 完善运维:提供自动化运维功能,避免纯手工运维出错。
- 方便的客户端:方便快捷的客户端接入,同时支持客户端性能统计。
- 元数据管理:提供机器、应用、实例、用户信息管理。
- 流程化:提供申请、运维、伸缩、修改等完善的处理流程。
- 一键导入:一键导入已经存在的Redis。
- 迁移数据:Redis Standalone、Redis Sentinel、Redis Cluster、AOF、RDB可进行数据迁移。
13.2 快速部署
13.2.1 CacheCloud 环境需求
13.2.2 CacheCloud快速开始
13.3 机器部署
13.3.1 部署脚本
13.3.2 添加机器
13.4 接入应用
13.4.1 总体流程

13.4.2 账户申请和审批
13.4.3 应用申请和审批
13.4.4 客户端接入
13.5 用户功能
13.5.1 应用统计信息
13.5.2 实例列表
13.5.3 应用详情
13.5.4 命令曲线
13.5.5 CacheCloud Redis Shell控制台
13.5.6 慢查询
13.5.7 应用拓扑
13.6 运维功能
13.6.1 应用运维
13.6.2 接入已存在的redis节点
13.6.3 redis配置模板
13.6.4 迁移工具
13.6.5 监控报警
13.6.6 系统配置管理
13.7 客户端上报
13.7.1 客户端上报整体设计
13.7.2 Jedis核心代码修改
13.7.3 带上报功能的客户端
13.7.4 CacheCloud客户端统计