暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【AntDB 分布式内存数据】产品架构

北陌 2023-06-09
552

AntDB 分布式内存数据库的架构基于标准的 Shared-nothing 设计,包括驱动组件,管理节点和数据分片三部分。其中每个数据分片可以包含多个副本, 每个副本都具备独立的 SQL 引擎与存储引擎。如图 4-1 所示是一个标准 AntDB 分布式内存库集群的示例架构图。


4-1 AntDB 整体架构图


分布式集群中每个数据节点可以包含多个数据副本,通常部署不少于副本,以满足 Raft 算法的选主要求。示例中的架构包含了 3 个数据分片,每个分片有个副本,一主两从。其中每个数据副本都是一个计算和数据节点,与集群内其他节点互联,并独立完成外部请求的处理。在示例图中简化了管理节点,通常在正式部署过程中,管理节点自身也是一个集群,包含多个数据副本, 以确保管理节点自身的高可用。

驱动组件部分,对标准的 JDBC、ODBC 驱动进行了优化,加入了连接重定向能力,由管理节点负责分配连接至哪个数据分片,驱动层根据系统元数据将连接定向至被分配的数据分片,这一过程对应用无感。概括起来,驱动层根据管理节点指示的连接信息进行数据分片的连接,在遇到连接异常的情况下, 可以通过重定向能力重新连接到新的数据分片。如图 4-2 所示将这一过程进行了展示。

4-2   驱动连接示意图


如图 4-2(a)所示,当 App 发起数据库连接时,驱动第一步询问管理节点, 管理节点根据集群负载情况分配数据分片 2,第二步驱动层根据所分配的联系信息进行连接。

如图 4-2(b)所示,当 App 与分片 2 的连接因某种原因断开时,驱动层通过心跳响应可以迅速获知并立即向管理节点发起重定向请求,管理节点根据集群负载情况重新分配分片,驱动层获取新分片信息并进行连接。整个重定向时间可以控制在秒级。

管理节点,从上述场景可以看出,管理节点不同于传统通过中间件、代理等手段实现的分布式。管理节点主要功能为:

● 存储集群的主机信息,对外提供新增、删除、下线机器功能(udf实现),管理节点向集群所有数据分片及其副本发送心跳包以确定数据分片属性,如分片数量、副本主从等。

● 维护整个集群的分片信息,集群的迁移、扩展、缩容都由管理节点发起。

● 维护集群各数据分片上报的统计信息,决策分配方案。

● DDL语句的分发,当数据分片收到DDL语句时会上报给管理节点,通过管理节点将请求分发给整个集群。

维护与收集整个集群的基础数据,包括各机器数据量、总的分片情况等。


数据分片,每个数据分片可以设置多个副本,副本之间通过 Raft 协议保障高可用强一致性。在部分环节进行了精细优化,比如无锁任务队列、log 的批量提交和执行及一些逻辑原地执行等,从而保证了日志复制的高性能。数据分片规则可支持 Hash 与Range 两种算法类型,规则设定后由管理节点进行控制, 应用层对此无感。通过 Raft 协议保证分布式强一致性。

服务节点,Active-Active 架构,每个服务节点包含独立的 SQL 引擎,可同时对外提供数据库接入服务。

RDMA,AntDB 分布式内存库集群内部可配置使用 RDMA 的通信模式。主从事务 binlog 日志复制、主从选举、心跳,跨节点数据访问,管理中心节点和数据节点之间心跳、数据下发、数据上报等通信全部采用 RDMA 的方式通信, 利用RDMA 的零拷贝(Zero-copy)、内核旁路(Kernel bypass)、无CPU 干预(No CPU involvement)等优势,使用更高带宽、更低时延的网络来进一步提升分布式内存数据库性能。


最后修改时间:2023-06-09 17:37:23
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论