Redis全球多活具备高性能和低延迟的特性,本文为您介绍不同地域的子实例间同步延迟的测试方法和测试结果。

产品概述

Redis全球多活是阿里云基于云数据库Redis自研的多活数据库系统,可轻松支持异地多个站点同时对外提供服务的业务场景,助力企业快速复制阿里巴巴异地多活架构。更多信息,请参见Redis全球多活简介

测试环境

本案例中,分布式实例包含了三个子实例,分别位于华北2(北京)、华东2(上海)和华南1(深圳)地域。

图 1. 子实例地域分布
子实例地域分布
测试环境信息 说明
子实例架构 集群架构
子实例规格 由于测试结果受规格影响较小,本次测试以redis.amber.logic.sharding.2g.8db.0rodb.24proxy.multithread规格为例。更多信息,请参见内存型(集群架构)
部署测试工具的机器 包含三个云服务器ECS实例,分别位于华北2(北京)、华东2(上海)和华南1(深圳)地域。

测试工具

测试工具为replicator-daley-test,该程序通过计算在目标实例上读取到Key时的时间点与Value值的差来得出延迟信息。

说明 Value的值为源实例上数据写入时的时间戳。

测试方法

下述步骤以华北2(北京)的子实例同步数据到华南1(深圳)为例,介绍同步延迟的测试方法,其他地域间子实例采用类似的测试方法。

图 2. 同步延迟测试环境
同步延迟测试环境
  1. 登录华南1(深圳)的ECS实例,执行下述格式的命令:
    java -jar replicator-delay-test.jar ${host} ${port} ${password} ${keynumber} get
    说明 该程序会从华南1(深圳)的子实例中,读取由华北2(北京)同步过来的Key信息,然后通过计算读取到Key时的时间点与Value值的差来得出延迟信息。
    参数 说明
    {host} 子实例的私网连接地址。获取方式,请参见查看连接地址
    {port} 华南1(深圳)子实例的端口,默认为6379。
    {password} 华南1(深圳)子实例的密码。
    说明 如果使用新创建的账号,密码格式需为<user>:<password>。例如,账号名为admin,密码为Rp829dlwa,则连接Redis时的密码为admin:Rp829dlwa
    {keynumber} 需读取的Key的数量。
  2. 登录华北2(北京)的ECS实例,执行下述格式的命令:
    java -jar replicator-delay-test.jar ${host} ${port} ${password} ${keynumber} set
    说明 该程序会连续地向华北2(北京)的子实例创建Key并写入数据,以递增的整数作为Key的名称,以该数据写入时的时间戳作为Key的值(Value)。
    参数 说明
    {host} 华北2(北京)子实例的私网连接地址。获取方式,请参见查看连接地址
    {port} 华北2(北京)子实例的端口,默认为6379。
    {password} 华北2(北京)子实例的密码。
    说明 如果使用新创建的账号,密码格式需为<user>:<password>。例如,账号名为admin,密码为Rp829dlwa,则连接Redis时的密码为admin:Rp829dlwa
    {keynumber} 需写入的Key的数量,必须与步骤1中设置的值相同。
  3. 等待华南1(深圳)ECS实例上的程序运行完毕,程序将打印出华北2(北京)子实例到华南1(深圳)子实例的同步延迟。

测试结果

关于测试结果表格中涉及的术语解释如下:

平均延迟
本次测试中,所有操作完成数据同步的平均延迟时间,单位为毫秒。
95th
同步最快的95%操作中,最长的延迟时间,单位为毫秒。例如该指标的值为20毫秒,表示95%的数据可以在20毫秒内完成数据同步。
99th
同步最快的99%操作中,最长的延迟时间,单位为毫秒。例如该指标的值为50毫秒,表示99%的数据可以在50毫秒内完成数据同步。
表 1. 测试结果
源子实例 目标子实例 平均延迟(毫秒) 95th(毫秒) 99th(毫秒)
北京 上海 28.35 39.0 54.5
深圳 34.2 69.5 103.0
上海 北京 28.35 39.0 54.5
深圳 29.0 40.6 61.7
深圳 上海 29.0 40.6 61.7
北京 34.2 69.5 103.0
说明 如果网络链路过长(例如跨洲的地域间同步),链路的往返时延RTT(Round-trip time)会成为影响同步延迟的主要因素,通常情况下,受运营商网络和出口路由变化,同步延迟约在百毫秒至数秒左右。