为CacheCloud添加机器资源后,可以利用自动化部署功能部署Redis应
用,这是自动化部署Redis的基础。本节将利用CacheCloud自动化部署一个
应用,并介绍开发人员如何通过CacheCloud客户端实现对Redis的使用。
注意
在CacheCloud中,Redis Standalone、Redis Sentinel、Redis Cluster统一称
为应用,后面读者将看到开发者只需要一个应用id,就可以实现Redis节点
的获取,完成客户端的正常调用。

13.4.1 总体流程
CacheCloud的应用开通和客户端接入的总体流程,参见图13-8。

云redis 是paas还是saas组件 redis cloud_数据库

具体包含如下流程:
1)申请账户:普通用户在CacheCloud进行用户注册,待管理员审核
后,成为CacheCloud的用户。
2)创建应用:普通用户填写申请应用的工单,待管理员审核后,拥有
自己的应用。
3)接入应用:在自己的项目中使用CacheCloud的客户端接入代码进行
开发,之后就可以使用CacheCloud提供的各种功能。

13.4.2 账户申请和审批
CacheCloud用户注册和审核步骤如下:
1)进入CacheCloud首页,单击“注册”。
2)填写用户申请的表单,如图13-9所示。 

云redis 是paas还是saas组件 redis cloud_redis_02

3)管理员进入后台审批通过或驳回即可,如图13-10所示。

云redis 是paas还是saas组件 redis cloud_客户端_03

 

除此之外,管理员还可以进入用户管理界面管理CacheCloud用户。

运维提示
CacheCloud中,用户登录只验证用户名是否正确(是否注册并审批通
过),如果需要使用密码功能,管理员需要在系统配置管理中添加LDAP的
登录地址,具体参考13.6.6节。

13.4.3 应用申请和审批
1)点击“应用申请”按钮,弹出“应用申请”界面,如图13-11所示,按要
求填写应用需求,提交申请即可。 

云redis 是paas还是saas组件 redis cloud_Redis_04

其中比较重要的属性用表13-2进行说明。

云redis 是paas还是saas组件 redis cloud_redis_05

 运维提示

上述选项会作为CacheCloud部署应用的参考依据,申请人要结合自身业

务填写或者与管理员沟通,否则会造成应用部署不合理的情况。

2)邮件通知给当前用户和管理员。

3)管理员进入后台的流程审批页面,如图13-12所示,单击“审批处

理”按钮

云redis 是paas还是saas组件 redis cloud_java_06

 

4)不同类型的Redis,开通使用不同的格式:
·数据节点:masterIp:maxmemory(以MB为单位):slaveIp。
·Sentinel节点:sentinelIp。
图13-13部署了一个5主5从的Redis Cluster集群,每个分片为1024MB,
格式检查通过后即可一键部署Redis Cluster集群。
运维提示
部署Redis时要综合考虑用户提交关于客户端的基本信息:OPS、容
量、机房、持久化等信息,决定采用哪种类型机器部署Redis实例。
5)如果部署成功,页面会跳回审批页面,如果审核状态显示审核已处
理(如图13-14),单击“通过”后,一个Redis Cluster自动部署完毕。

云redis 是paas还是saas组件 redis cloud_数据库_07

 

实际上上面的自动化部署和10.2节使用redis-cli部署Redis Cluster的原理
是一样的,都是利用了Redis Cluster的相关协议完成的,如图13-15所示。

云redis 是paas还是saas组件 redis cloud_数据库_08

 

整个过程如下:
1)利用配置模板生成配置、利用SSH协议拷贝配置到机器、利用redis-
server启动Redis节点。
2)利用meet命令对所有节点执行握手。
3)平均分配slot。
4)从节点复制主节点。
5)等待集群状态ok。
6)保存应用实例关系、启动相关监控任务、提交审批流程。
自动部署应用时,端口是自动生成的,且不会被重复利用,具体生成规
则是从6379端口开始,如果出现下面任意一种情况的话,当前端口自增1,
直到最终得到目标端口。
·实例表(instance_info表)中记录端口已经被占用。
·机器上端口已经被占用。 

13.4.4 客户端接入

当应用申请流程全部完成后,用户申请的应用状态会变为运行中,如图

13-16所示,可以看到一个id为10001的应用。点击应用id(appId)或应用

名,即可进入应用详情页面。

云redis 是paas还是saas组件 redis cloud_客户端_09

在应用详情界面点击接入代码选项卡,可以看到CacheCloud提供了Rest

API和Java客户端两种接入方式,图13-17所示。

云redis 是paas还是saas组件 redis cloud_java_10

 

在说明如何使用这两种客户端接入方式之前,首先有必要介绍一下
CacheCloud客户端与服务端是如何交互的?CacheCloud服务端不是客户端的
代理,只是提供了Rest API来实现通过一个appId获取到Redis节点信息,客
户端只有在第一次启动时会通过Rest API从CacheCloud服务端获取这些信
息,之后无需再与CacheCloud交互,获取节点信息后,使用各种Redis的客
户端进行初始化,例如Jedis、redis-py等,整个过程如图13-18所示

1.REST接口

下面为CacheCloud的REST接口,开发者可以利用各种编程语言的HTTP

类库从接口中获取到Redis节点信息:

云redis 是paas还是saas组件 redis cloud_java_11

http:// ip:port/cache/client/redis/cluster/10001.jsonclientVersion=1.2-SNAPSHOT
{
message: "client is up to date, Cheers!",
shardNum: 10, #  节点个数
appId: 10001, #  应用 id
status: 1, #  状态为 1 表示数据正确
shardInfo: "10.10.xx.1:6379,10.10.xx.2:6380 10.10.xx.3:6379,10.10.xx.4:6381
10.10.xx.5:6380,10.10.xx.7:6381 10.10.xx.8:6379,10.10.xx.xx:6381" # 所有
节点信息。主从节点用逗号隔开,多对主从节点用空格隔开。
}

 有一点需要注意的是clientVersion=1.2-SNAPSHOT参数,它表示客户端
的版本,这个参数会传到服务端做校验,错误的版本将无法获取到接口信
息,如图13-19所示。

云redis 是paas还是saas组件 redis cloud_Redis_12

管理员可以在后台的系统配置管理中,添加目前可以使用的客户端版
本,如图13-20所示。

云redis 是paas还是saas组件 redis cloud_redis_13

 

REST接口存在安全性问题,任意用户通过应用id都可以获取Redis节点
信息。如果希望更加安全,需要一个秘钥在CacheCloud服务端进行验证。这
个秘钥在应用申请成功后就会自动生成,并且展示到了应用详情页面(13.5
节会介绍)。新的接口添加了两处改动:
·参数增加了一个appkey。
·接口地址添加了一个safe路径。

所以如原接口为: 

http:// ip:port/cache/client/redis/cluster/10001.jsonclientVersion=1.2-SNAPSHOT
那么新接口为:
http:// ip:port/cache/client/redis/cluster/safe/10001.jsonclientVersion=1.2-
SNAPSHOT&appkey=xxxxx

运维提示
CacheCloud服务端为了兼容老的客户端,保留了两套接口,如果有需要
可以自行修改。
2.Java客户端
CacheCloud为Java开发者提供了封装好的客户端,基本实现原理也是调
用之前的REST接口,解析并初始化Jedis相关API,如JedisPool、
JedisSentinelPool、JedisCluster。
CacheCloud项目中的cachecloud-open-client模块是客户端模块,由以下
子模块组成:
·cachecloud-jedis:cachecloud-web用到的Jedis。
·cachecloud-open-client-basic:CacheCloud客户端基础模块。
·cachecloud-open-client-redis:CacheCloud客户端。
·cachecloud-open-jedis-stat:CacheCloud客户端上报统计。
用户需要修改cachecloud-open-client-basic模块中
cacheCloudClient.properties的domain_url为你的域名,这个域名是作为获取
REST接口用,之后使用接入代码中的示例进行开发测试即可。