Tair全球多活实例具备高性能和低延迟的特性,本文为您介绍不同地域的子实例间同步延迟的测试方法和测试结果。
产品概述
Tair全球多活实例是阿里云基于云数据库 Tair(兼容 Redis)自研的多活数据库系统,可轻松支持异地多个站点同时对外提供服务的业务场景,助力企业快速复制阿里巴巴异地多活架构。更多信息,请参见Tair全球多活简介。
测试环境
本案例中,分布式实例包含了三个子实例,分别位于华北2(北京)、华东2(上海)和华南1(深圳)地域。
测试环境信息 | 说明 |
子实例架构 | 集群架构。 |
子实例规格 | 由于测试结果受规格影响较小,本次测试以redis.amber.logic.sharding.2g.8db.0rodb.24proxy.multithread规格为例。更多信息,请参见内存型(集群架构)。 |
部署测试工具的机器 | 包含三个云服务器ECS实例,分别位于华北2(北京)、华东2(上海)和华南1(深圳)地域。 |
测试工具
测试工具为replicator-daley-test,该程序通过计算在目标实例上读取到Key时的时间点与Value值的差来得出延迟信息。
Value的值为源实例上数据写入时的时间戳。
测试方法
下述步骤以华北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(北京)的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中设置的值相同。
等待华南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)会成为影响同步延迟的主要因素,通常情况下,受运营商网络和出口路由变化,同步延迟约在百毫秒至数秒左右。