本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
DTS(Data Transmission Service)的数据订阅功能结合MongoDB或Redis,可以实现高可靠、低延迟的缓存更新策略。本文以源为RDS MySQL、目标为云数据库Tair(兼容Redis)为例,为您介绍缓存更新策略。
前提条件
- 已完成数据订阅通道的配置并新增消费组,详情请参见创建RDS MySQL数据订阅任务和新增消费组。 
- 已创建云数据库Tair(兼容Redis)并允许公网访问,详情请参见步骤1:创建实例和申请公网连接地址。 说明- 您需要将客户端的IP地址或IP地址段添加到Redis实例的白名单中,详情请参见设置IP白名单。 
背景信息
为提高业务访问速度,提升业务读并发,在业务架构中引入了缓存层。业务的读请求路由到缓存层,通过缓存的内存读取机制提升业务读取性能;同时,为保证数据的完整性,业务的更新数据持久化存储至RDS MySQL中。此时,业务需要实现缓存更新策略,保证业务数据更新后,缓存中的数据能够被同步更新。
操作步骤
本文以IntelliJ IDEA软件为例,介绍如何运行SDK示例代码来消费订阅数据。
- 下载数据订阅SDK示例代码文件,然后解压该文件。 
- 使用IntelliJ IDEA软件,以Maven工程打开解压后的SDK示例代码文件。 
- 在/subscribe-demo/src/main/java/com/alibaba/dts/demo/路径下,双击打开DTSMySQL2RedisDemo.java文件。 
- 修改main函数中的参数。 - 需要修改如下图所示的绿色字体,例如 - String brokerUrl = "your broker url";中的- your broker url。 - 数据订阅任务参数 - 参数 - 说明 - 获取方式 - brokerUrl- 数据订阅通道的网络地址及端口号信息。 说明- 如果您部署SDK客户端所属的ECS实例与数据订阅通道属于经典网络或同一专有网络,建议通过内网地址进行数据订阅,网络延迟最小。 
- 不建议使用公网地址。 
 - 在DTS控制台单击目标订阅实例ID,在基本信息页面的网络区域,您可以获取网络地址及端口号信息。  - topic- 数据订阅通道的订阅Topic。 - 在DTS控制台单击目标订阅实例ID,在基本信息页面的基本信息区域,您可以获取到订阅Topic。  - sid- 消费组ID。 - 在DTS控制台单击目标订阅实例ID,然后单击数据消费,您可以获取到消费组ID和消费组的账号信息。 说明- 消费组账号的密码已在您新建消费组时指定。  - userName- 消费组的账号。 警告- 如您未使用本文提供的客户端,请按照 - <消费组的账号>-<消费组ID>的格式设置用户名(例如:- dtstest-dtsae******bpv),否则无法正常连接。- password- 该账号的密码。 - initCheckpoint- 消费位点,即SDK客户端消费第一条数据的时间戳,格式为Unix时间戳,例如1620962769。 说明- 消费位点信息可用于: - 当业务程序中断后,传入已消费位点继续消费数据,防止数据丢失。 
- 在订阅客户端启动时,传入所需的消费位点,调整订阅位点,实现按需消费数据。 
 - 消费位点必须在订阅实例的数据范围(如图示)之内,并需转化为Unix时间戳。  说明 说明- Unix时间戳转换工具可用搜索引擎获取。 - ConsumerContext.ConsumerSubscribeMode subscribeMode- SDK客户端的使用模式,取值为: - ConsumerContext.ConsumerSubscribeMode.ASSIGN:ASSIGN模式,即一个消费组下仅支持一个SDK客户端消费订阅数据。
- ConsumerContext.ConsumerSubscribeMode.SUBSCRIBE:SUBSCRIBE模式,即支持在同一个消费组下同时启动多个SDK客户端实现灾备。
 - 无 
- 目标Redis实例参数 - 参数 - 说明 - 获取方式 - redisUrl- Redis实例的网络地址信息。 - 进入Redis实例的实例信息页签,在连接信息区域获取公网访问的连接地址。 - redisPort- Redis实例的端口信息。 - 进入Redis实例的实例信息页签,在连接信息区域获取公网访问的端口号(Port)。 - redisPassword- 消Redis实例的账号及密码。 重要- 数据库密码格式为<user>:<password>。例如,Redis实例自定义的用户名为admin,密码为Rp829dlwa,则此处填入的数据库密码为admin:Rp829dlwa。 - 在您创建Redis实例时已指定。 说明- 若您忘记密码,可以重新设置实例的密码,详情请参见修改或重置密码。 
 
- 在IntelliJ IDEA软件界面的顶部,单击运行该程序。 
执行结果
- 登录订阅的源数据库,在订阅的源表中插入几条数据。 - 可以查看到该程序订阅到了对应的增量数据变更,然后将对应的数据写入到目标数据库。  
- 登录目标数据库,查询对应的数据。 - 可查看到对应的数据已正常写入。 