未分类 · 2024年5月28日 0

Abase2: NoSQL数据库中的CRDT支持实践【】

导读本文将分享Abase2在跨地域部署下的CRDT支持实践。首先将介绍NoSQL数据库在多地域部署下的一些挑战,然后介绍解决多地域部署下冲突问题的CRDT方案,接下来将介绍Abase2为了支撑多地域部署下冲突解决以及CRDT技术而打造的架构,最后将分享具体工程实践的经验。

今天的介绍会围绕下面四点展开:

1. 多地域部署挑战

2. CRDT技术

3. Abase2架构

4. Redis常见命令的CRDT支持分享嘉宾|刘健 字节跳动 Abase产品研发负责人编辑整理|熊丹妮

出品社区|DataFun

01多地域部署挑战

1. Abase简介

首先简单了解一下Abase在字节跳动公司(以下简称字节)的使用情况。

Abase是字节跳动规模最大的NoSQL数据库之一,峰值QPS达到了百亿级别,管理的数据存储容量达到了EB级别,服务了字节跳动大多数产品线。Abase支持Redis协议/Thrift协议/批量导入等接入方式。用户最常使用的接入方式为Redis协议,本次的分享主要围绕Redis协议的CRDT支持来介绍。

2. 多地域部署需求

再来看一下为什么数据库需要多地域部署。

  • 就近访问:用户和服务本身就是多地域部署的场景,服务有就近访问需求;需要做到本地访问的地延迟。
  • 容灾需求:相比于同地域内部多可用区域容灾,多地域部署能够提供更高的容灾能力;
  • 资源问题:当某个地域没有足够资源,只能在其他地域部署;

3. Abase架构演进

Abase多地域部署的架构也经历了一个演进过程。


如上图所示,是Abase 1.0版本中的异地多活方案,简单来讲就是部署两个Abase集群,然后通过一个中间组件把一个地域的Abase集群的op log传输到另一个地域,再写入到Abase集群中。

但这个方案存在以下几个问题:

  • 同步延迟:由于跨越多个组件,所以同步延迟较长,无法提供RPC级别的时延。如多地域的网络延时可能是50ms,但是数据同步延迟可能到达秒级别以上。
  • 一致性问题:由于是外挂系统,在架构设计中没有能够保证100%的数据传输可靠,另一方面多地域写入数据冲突问题更难解决。
  • 额外成本:包括同步组件的成本,数据冲突时修复数据时的成本,以及部署两套集群需要额外的副本等。


下面我们具体介绍一下Abase1.0方案中,多地域部署下的数据不一致的问题:如上图。在地域A和地域B各部署了一套Abase服务,初始时X都等于1,在地域A将X值设置为2,在地域B执行删除X的操作。当数据互相同步之后,地域A可能看到X是一个空值,地域B可能看到X的值是2,如果没有其他手段介入,这两个地域的X值就会一直不一

文章来源于互联网:Abase2: NoSQL数据库中的CRDT支持实践

打赏 赞(0) 分享'
分享到...
微信
支付宝
微信二维码图片

微信扫描二维码打赏

支付宝二维码图片

支付宝扫描二维码打赏