云数据库HBase存储海量大数据,在业务场景中往往承载着重要数据,为保障数据的高可用性和安全性,云数据库HBase提供了主备双活和主备容灾特性。本文介绍云数据库HBase的主备双活和主备容灾特性功能。

使用场景

  • 主备双活:大数据量随机读响应有高要求(P999小于50ms)的实时在线业务,例如用户推荐,安全风控等。
  • 主备容灾:当云数据库HBase实例因不可预料的原因(例如设备故障、机房断电断网等)发生故障,容灾机制可用于保障数据的一致性和业务可用性。

功能优势

  • 主备双活:
    • 请求低毛刺。
    • 故障自动容错。
    • 资源利用率高。
  • 主备容灾:
    • 支持云数据库HBase、EMR HBase、自建HBase混合主备。
    • 支持1.x、2.x多个版本。
    • 自动数据同步管理,高效双向同步,延迟在百毫秒级。
    • 故障自动容错。
    • 在主备控制台可查看同步延迟、客户端链接数、主备状态等详细信息。

主备双活原理介绍

  • 低毛刺:两个独立节点同时产生毛刺概率比单节点产生毛刺概率低,采用双节点服务相同数据在最终一致性条件中能够提高数据的稳定性。当用户请求发起时先向主库发送请求,一段时间后如果主库没有返回结果,则向备库发送请求,最终取最快返回的值作为结果。发送请求和响应的流程图如下。低毛刺原理
    以下是直接访问和使用主备双活功能访问的时间对比。时间对比
  • 故障自动容错:主备双活功能提供故障自动容错能力,在故障场景下可以自动进行主备节点切换。通常需要进行主备集群切换的场景如下:
    • 机房出现断网断电等故障。无法正常连接主集群,请求全部报错。
    • 由于软件Bug导致全集群宕机。
    • 由于慢盘或者坏盘造成的集群访问超时。

    故障自动容错原理:

    自动容错原理
    单机宕机和集群宕机测试结果如下。
    • 以下是单机宕机吞吐对比图和单机宕机平均响应对比图。单机宕机测试
    • 以下是集群宕机吞吐对比图和集群宕机平均响应对比图。集群宕机测试

主备容灾原理介绍

当云数据库HBase实例因不可预料的原因(例如设备故障、机房断电断网等)发生故障,容灾机制可用于保障数据的一致性和业务可用性。云数据库HBase提供两种灾备方案供您选择,可满足不同的业务场景。

灾备方案 说明
单可用区高可用方案 主备节点部署在同一可用区中的不同机器上,当任一节点发生故障时,由高可用HA(High Availability)系统监控主备节点的健康状态并自动执行故障切换,避免单点故障引起的服务中断。
同城容灾方案 主备节点支持云数据库HBase间、云数据库HBase和自建HBase、自建HBase和自建HBase。主备节点分别部署在同一地域下两个不同的可用区,当任一可用区因电力、网络等不可抗因素失去通信时,高可用HA系统将执行故障切换,确保整个节点的持续可用。您可以使用LTS数据通道服务完成主备节点之间实时增量数据双向同步,同时在LTS上进行主备切换操作,您可以通过alihbase-connector插件访问HBase节点,alihbase-connector监听主备节点zk集群的切换事件完成节点切换操作。

架构说明

常见问题

  • Q:主备数据双向同步中是否会循环发送?

    A:不会,双向同步中会根据集群ID区分是数据同步写入的数据还是客户端写入的数据,保证数据不会循环发送。

  • Q:目标实例出现异常无法写入时,LTS是否会缓存数据?

    A:LTS不会缓存数据,数据同步中当目标实例无法写入时,会记录读取WAL的点位,保证数据在目标实例恢复后继续同步数据,数据存储在源集群的Hlog中。

  • Q:数据D1写入主实例,但数据D1尚未到达备实例时发生切换,此时备实例中写入一条数据D2后数据D1才到达,备实例中存储的是数据D1还是数据D2?

    A:存储的是数据D1和数据D2中时间戳更大的数据,数据在LTS同步过程中不会改变数据原有的时间戳,一般情况下存储的是数据D2,但是由于主备实例不同可能存在时间戳毫秒级的时间差异造成数据D2的时间戳比数据D1的时间戳小,在这种情况下存储的是数据D1(云原生多模数据库Lindorm实例多可用区版本支持强一致功能,保证存储的是数据D2,如果需要了解详情请提交工单)。