1.技术背景
对于一些典型行业,如跨境电商和大型互联网企业,其业务往往遍及世界各地。在当今中资出海的浪潮下,客户业务全球化部署诉求对传统的数据库部署形态提出了挑战。
过去客户主要选择的解决方案有两类:第一类,数据库中心化部署一套,应用端统一接入;第二类,数据库随应用全球部署,通过同步工具完成各区域间数据同步。对于前者,异地读写数据库的时延不甚理想;对于后者,数据状态一致性难以保障,整体链路成本也偏高。
针对传统解决方案的弊端,同时结合客户的诉求,华为云GaussDB(for MySQL)团队预见性地提出未来云原生数据库的部署形态将从以资源、地域为中心转变为以应用、流量为中心这一理念。基于此,GaussDB(for MySQL) RegionlessDB形态应运而生。
GaussDB(for
MySQL) RegionlessDB,是由分布在全球多个地域间若干GaussDB(for MySQL)集群组成的数据库网络。其中,主集群对外提供写服务,每个集群均可提供读服务(从集群接收到的写请求会被转发到主集群处理),RegionlessDB网络中所有集群的数据保持同步。客户可以无需上层应用改造,享受GaussDB(for
MySQL) RegionlessDB的跨地域同步低时延,全球业务就近读取等优势。
2.特性价值
(1)全球多活,近端访问:在业务部署跨全球多个地域情况下,传统中心化数据库部署方案中,数据库在主地域,其它地域的应用需要跨region,乃至跨大洲访问主地域的数据库,较高的网络延迟会导致数据库性能低下,带来种种不良的用户体验。通过GaussDB(for MySQL) RegionlessDB的跨地域低延迟同步,叠加本地就近读取能力,可以确保在常规负载下,各地域的应用访问数据库时的延迟均小于1秒。
(2)Global级的数据库灾备:在提升服务整体可用性、搭建容灾集群的角度,通过GaussDB(for MySQL) RegionlessDB的实时同步和故障时主动切换的能力,可轻松搭建金融级可用的跨地域数据库灾备集群。
3.实现原理
3.1 跨洲际复制延迟< 1s和RTO < 30s的关键技术
(1) 基于Redo的实时异步复制。
(2)直接从存储读取Redo Log,SQL节点只同步位点信息。复制效率与主Region业务效率无相互干扰。
(3)并行地读取、同步和写入Redo Log,并在存储节点独立地并行地回放Page。
(4)长距离高网络延迟下,Window中的发送不需要等待回包,网络带宽得到极大的利用,最终确保复制延迟< 1s。
(5)日志同时写入到从Region的Log Server和Page Server,Page真正实现实时回放。一旦进行跨Region切换,Crash Recovery所需的页面已经准备好了,使得容灾切主的时间可小于30s。
3.2 构建Global事务快照,写转发能力满足就近读
User Session与Write Forwarding
Session通过共享事务状态,构建Global的事务快照,从集群等待日志同步到快照的LSN位点,后续的读操作皆可直接在本地读取数据,而不用转发到主集群中,且满足各种级别的一致性要求。
3.3 可控RPO支持用户控制容灾切换下,允许丢失事务的量级
复制延迟