华为云GaussDB(for Redis)揭秘第25期:高斯Redis双活容灾支持四大应用场景

举报
GeminiDB-Redis博客 发表于 2022/09/07 11:01:12 2022/09/07
【摘要】 云原生数据库GaussDB(for Redis)推出了企业级的双活容灾方案,支持四大应用场景,为业务的持续运行保驾护航。

【最新活动】“MySQL + Redis” 组合购特惠!全年低至5.6折!购买链接

1      一场火灾引发的思考

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

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

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

 

2      谁说Redis不能双活容灾?

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

1)缓存

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

2)主数据库

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

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

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


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

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


1.png


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


2.png


       上图中实线表示实例A向实例B同步数据的路径,虚线表示实例B向实例A同步数据的路径,双活解决方案支持配置为单向同步或双写同步。实例A和实例B可以部署在同一个Region,也可以部署在不同的Region

       因此,将两个GaussDB(for Redis)实例的部署位置和主备角色进行不同组合,能搭建出不同形态的双活容灾组网,客户可以根据自身的业务规划和使用场景自由选择。


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

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

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

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

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


3.png


       1.同域主备模式

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

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


4.png


       2.同域双主模式

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

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


5.png


       3.异地主备模式

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

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


6.png


        4.异地双主模式

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

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


7.png



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

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


8.png



6      总结

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

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


附录

  • 本文作者:

华为云数据库GaussDB(for Redis)团队

  • 杭州/西安/深圳简历投递:

yuwenlong4@huawei.com

  • 更多产品信息,欢迎访问官方博客:

bbs.huaweicloud.cn/blogs/248875

 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。