文档

全球多活同步延迟测试

更新时间:

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

产品概述

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

测试环境

本案例中,分布式实例包含了三个子实例,分别位于华北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.3539.054.5
深圳34.269.5103.0
上海北京28.3539.054.5
深圳29.040.661.7
深圳上海29.040.661.7
北京34.269.5103.0
说明 如果网络链路过长(例如跨洲的地域间同步),链路的往返时延RTT(Round-trip time)会成为影响同步延迟的主要因素,通常情况下,受运营商网络和出口路由变化,同步延迟约在百毫秒至数秒左右。