摘要:GaussDB(for Redis)的双活解决方案,支持同域主备、同域双主、异地主备、异地双主四大应用场景,提供了安全可靠的容灾能力。

一场火灾引发的思考

2021年3月10日,欧洲某云服务提供商的数据中心发生火灾,当地消防部门出动上百名消防员才将大火扑灭,受影响的服务器共托管了约360万个网站,火灾过后,这些受影响的网站大多处于关闭状态。

机房火灾、网络异常、电力故障、自然灾害等极端场景,对互联网业务的连续运行有着巨大的威胁。

在安全组、反亲和、多可用区部署等能力加持下,如今的云服务已能够给客户业务带来比“自建”更可靠的保障。在面对上述极端灾害场景中,云服务也能提供更高级的防范方案——双活容灾。

谁说Redis不能双活容灾?

今天我们来聊聊全世界机房里的主力数据库服务——Redis。作为业务刚需,Redis有两大类典型应用场景:

1)缓存

Redis作为数据库缓存,搭配MySQL或其他关系型数据库使用。一旦缓存故障失效,高并发的流量请求将对下游数据库造成严重冲击,无法继续支撑高并发业务,雪崩甚至可能导致系统完全不可用。

2)主数据库

Redis独立存储核心数据,兼顾持久化与高并发访问。一旦Redis发生严重故障,将造成用户核心数据丢失以及关键业务不可用。

可见Redis的稳定性是企业要考虑的TOP问题。但是由于数据无法可靠存储、架构不稳定等原因,开源Redis很难像MySQL那样做出稳定可靠的双活系统,这也是国内云厂商很少主推Redis双活容灾的原因。

在华为内部,比如华为商城、流程IT平台等大型业务,对数据库(尤其是MySQL、Redis)都有很高的可靠性要求。在与这类企业级项目的联合演进过程中,云原生数据库GaussDB(for Redis)推出了企业级的双活容灾方案,支持四大应用场景,为业务的持续运行保驾护航。

企业级双活容灾,要看GaussDB(for Redis)

GaussDB(for Redis)的双活容灾是基于GaussDB NoSQL存算分离架构,建立可靠的数据传输链路,实现两个实例间数据同步。如果实例A遇到突发故障导致不可用,客户的业务可以快速接入实例B,避免业务长时间受损。

从原理上看,数据库实例内增加高可靠性的Rsync数据同步服务,实时监控WAL增量日志,解析后将数据同步到目标实例。

上图中实线表示实例A向实例B同步数据的路径,虚线表示实例B向实例A同步数据的路径,双活解决方案支持配置为单向同步或双写同步。实例A和实例B可以部署在同一个Region,也可以部署在不同的Region。
因此,将两个GaussDB(for Redis)实例的部署位置和主备角色进行不同组合,能搭建出不同形态的双活容灾组网,客户可以根据自身的业务规划和使用场景自由选择。

GaussDB(for Redis)双活容灾:四大应用场景

接下来我们详细聊一下GaussDB(for Redis)双活容灾的不同组网形态。

同域双活部署在同一Region,通过对等连接打通网络,对等连接无带宽费用,同步时延在毫秒级,又分为同域主备模式和同域双主模式。

异地双活部署在不同Region,可以是同一城市的不同Region互通,也可以是全球不同城市互通,通过跨域的云连接打通网络,需要根据业务的写流量来配置合适大小的带宽。

综上,GaussDB(for Redis)双活容灾共支持四大应用场景:

同域主备模式

在同域主备模式下,主实例可读可写,备实例只读,数据从主实例单向同步到备实例。如果主实例发生故障,可以将备实例角色变更为主实例,业务继续从新的主实例接入处理读写操作。

同域主备模式适合在同Region低成本获取容灾能力、有读写分离诉求的业务场景。相比同域双主模式具备更高的数据一致性,不担心双实例写冲突的问题,相比异地双活的成本更低。

同域双主模式

在同域双主模式下,两个实例都是可读可写,任一实例都可以发起数据同步,双实例不涉及业务切流。

同域双主模式适合在同Region低成本获取容灾能力、有双写诉求的业务场景。相比同域主备模式,两个实例的计算节点都在处理读写业务,资源利用率更高,但需要在业务层面避免key冲突的问题,相比异地双活的成本更低。

异地主备模式

在异地主备模式下,主实例可读可写,备实例只读,数据单向同步,主实例故障时由备实例继续处理业务。

异地主备模式适合期望有跨Region容灾能力、有读写分离诉求的业务场景,例如金融服务或核心用户数据等。相比异地双主模式具备更高的数据一致性,不担心双实例写冲突的问题,相比同域双活具备跨Region容灾能力。

异地双主模式

在异地双主模式下,两个实例都是可读可写,数据双向同步,任一实例发生故障则由另一实例继续处理业务。

异地双主模式适合期望有跨Region容灾能力、有双写诉求、或者异地业务希望在就近Region接入数据库获取更低时延的业务场景,例如广告竞价、推荐系统等。相比异地主备模式,资源利用率更高,需要避免key冲突的问题,相比同域双活具备跨Region容灾能力。

双活容灾方案已在超大规格集群上验证稳定可靠

华为内部某重要业务部门在超大规模集群(1w+个vCPU算力,1000+TB数据量)上,使用了基于GaussDB NoSQL统一架构的双活解决方案,在故障演练中进行了一系列严苛的可靠性测试,其中包括模拟机房断电、网络故障等场景,最终,GaussDB(for Redis)的双活容灾能力,充分满足了业务部门对RTO和RPO等指标的严格要求。

总结

综上所述,GaussDB(for Redis)的双活解决方案,支持同域主备、同域双主、异地主备、异地双主四大应用场景,提供了安全可靠的容灾能力,具体亮点如下:

  1. 组网灵活,按需搭建双活容灾系统
  2. 支持秒级快照,快速搭建双活关系
  3. 支持实时同步最新数据,同Region时延毫秒级
  4. 采用多线程异步并发模式发送数据,按Key保序
  5. 基于WAL单调递增特性,采用滑窗机制确保可靠传输
  6. 采用Reactor事件管理的机制,全流程批量高效发送
  7. 支持异常重传,解决网络抖动导致的丢包或延迟现象
  8. 支持断点续传,每个DB持久化应答过的同步日志序号,在发生宕机、网络隔离、进程重启等故障场景,可从该位置进行续传。

附录

  • 本文作者:华为云数据库GaussDB(for Redis)团队
  • 更多产品信息,欢迎访问官方博客:bbs.huaweicloud.com/blogs/248875

点击关注,第一时间了解华为云新鲜技术~

GaussDB(for Redis)双活容灾支持4大应用场景,为业务安全保驾护航的更多相关文章

  1. 华为云计算IE面试笔记-请描述华为容灾解决方案全景图,并解释双活数据中心需要从哪些角度着手考虑双活设计

    容灾全景图: 按照距离划分:分为本地容灾 同城容灾 异地容灾  本地容灾包括本地高可用和本地主备.(本数据中心的两机房.机柜) 本地高可用这个方案为了保持业务的连续性,从两个层面来考虑: ①一个是从主 ...

  2. 【转载】redis容灾策略

    版权声明:转载请注明出处 http://blog.csdn.net/irean_lau. https://blog.csdn.net/Irean_Lau/article/details/5136027 ...

  3. 传统业务上云:跨AZ容灾架构解析

    本文由  网易云发布. 数字化转型浪潮之下,采用云计算服务提升业务敏捷性.降低运维成本,成为了传统企业的优选方案.网易云资深解决方案架构师张亮通过某物流企业客户的实际案例,分享了传统业务系统在云上的架 ...

  4. 即时通讯系统为什么选择GaussDB(for Redis)?

    摘要:如果你需要一款稳定可靠的高性能企业级KV数据库,不妨试试GaussDB(for Redis). 每当网络上爆出热点新闻,混迹于各个社交媒体的小伙伴们全都开启了讨论模式.一条消息的产生是如何在群聊 ...

  5. 深度评测丨 GaussDB(for Redis) 大 Key 操作的影响

    本文分享自华为云社区<墨天轮评测:GaussDB(for Redis)大Key操作的影响>,作者: 高斯 Redis 官方博客. 在前一篇文章<墨天轮评测:GaussDB(for R ...

  6. QQ 相册后台存储架构重构与跨 IDC 容灾实践

    欢迎大家前往云加社区,获取更多腾讯海量技术实践干货哦~ 作者简介:xianmau,2015 年加入腾讯 TEG 架构平台部,一直负责 QQ 相册平台的维护和建设,主导相册上传架构重构和容灾优化等工作. ...

  7. 从数据仓库双集群系统模式探讨,看GaussDB(DWS)的容灾设计

    摘要:本文主要是探讨OLAP关系型数据库框架的数据仓库平台如何设计双集群系统,即增强系统高可用的保障水准,然后讨论一下GaussDB(DWS)的容灾应该如何设计. 当前社会.企业运行当中,大数据分析. ...

  8. 主从集群搭建及容灾部署redis

    redis主从集群搭建及容灾部署(哨兵sentinel) Redis也用了一段时间了,记录一下相关集群搭建及配置详解,方便后续使用查阅. 提纲 l  Redis安装 l  整体架构 l  Redis主 ...

  9. redis主从集群搭建及容灾部署(哨兵sentinel)

    Redis也用了一段时间了,记录一下相关集群搭建及配置详解,方便后续使用查阅. 提纲 Redis安装 整体架构 Redis主从结构搭建 Redis容灾部署(哨兵sentinel) Redis常见问题 ...

  10. 删库到跑路?还得看这篇Redis数据库持久化与企业容灾备份恢复实战指南

    本章目录 0x00 数据持久化 1.RDB 方式 2.AOF 方式 如何抉择 RDB OR AOF? 0x01 备份容灾 一.备份 1.手动备份redis数据库 2.迁移Redis指定db-数据库 3 ...

随机推荐

  1. LCT(link cut tree) 详细图解与应用

    樱雪喵用时 3days 做了 ybtoj 的 3 道例题,真是太有效率了!!1 写死自己系列. 为了避免自己没学明白就瞎写东西误人子弟,这篇 Blog 拖到了现在. 图片基本沿用 OIwiki,原文跳 ...

  2. mysql练习案例(实操)

    最近想要在回去复习mysql语句,就在网上找了一些案例练习,起初找得都是零零散散的,后面参考这篇博客做出了一个实操案例.Eric_Squirrel:mysql学生表经典案例50题. 首先是建表,我用的 ...

  3. 22. 从零用Rust编写正反向代理,一个数据包的神奇HTTP历险记!

    wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,内网穿透,后续将实现websocket代理等,会将实现 ...

  4. rancher安装及部署k8s

    一.安装docker 参考:https://www.cnblogs.com/uestc2007/p/15598527.html 二.安装rancher 1.Rancher概述 rancher官方文档 ...

  5. Mybatis和其他主流框架的整合使用

    Mybatis简介 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google ...

  6. 普冉PY32系列(十二) 基于PY32F002A的6+1通道遥控小车III - 驱动篇

    目录 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境 普冉PY32系列(三) P ...

  7. 【开源】int,long long去一边去:高精度大合集!

    加法 \(add\) string add(string s1, string s2) { //时间复杂度 O(log n) string res = ""; int c = 0, ...

  8. 【Android】使用litepal实现数据库的创建和升级

    1.配置litepal 配置过程见:2.进行创建和升级数据库,可以省略sql语句的录入 定义一个Note类,代码如下 接下来将note类添加到映射模型列表当中,修改litepal.xml中的代码.如下 ...

  9. Centos 7在线安装JDK1.8+Tomcat+MySQL8.0+Nginx

    一.安装JDK 注: 以下命令环境在Xshell中进行. 温馨提示: 在线安装方式需要有网速的前提,有的软件下载需要大量时间. 1.查询出系统自带的OpenJDK及版本 rpm -qa | grep ...

  10. Fast ORM 读写分离功能使用方式

    Fast Framework 作者 Mr-zhong 代码改变世界.... 一.前言 Fast Framework 基于NET6.0 封装的轻量级 ORM 框架 支持多种数据库 SqlServer O ...