QianBase xTP的分布式存储管理引擎(DSE Distributed Storage Engine)是一种用于管理和存储大规模数据的系统。它提供了一系列用于存储、管理和处理数据的功能。
QianBase xTP的分布式存储管理引擎可以将数据分布在多个节点上,以提高可扩展性和容错性。其写入数据过程可分为以下几步:
应用程序使用 QianBase xTP 提供的驱动程序或客户端库与数据库建立连接,支持PostgreSQL 协议。
应用程序发送 SQL 语句到 QianBase xTP。QianBase xTP 的 SQL 解析器解析 SQL 语句并进行查询优化。
QianBase xTP 使用范围路由来确定 SQL 语句应该在哪个节点上执行。
如果 SQL 语句是在一个事务中执行的,QianBase xTP 会为该事务分配一个全局唯一的事务标识符。事务通过在副本之间协调写入操作来确保 ACID(原子性、一致性、隔离性和持久性)属性。
QianBase xTP 使用 Raft 协议将写入操作从主节点复制到副本节点。主节点负责协调副本节点的写入操作,并通过 Raft 协议中的多数派确认机制来确保强一致性。
一旦写入操作被 Raft 协议确认,QianBase xTP 将数据写入持久化存储,通常是SSD磁盘。
QianBase xTP 将写入操作的结果返回给客户端。客户端可以根据需要处理返回的结果。0
2
QianBase xTP的分布式存储管理引擎通过使用一致性协议(Raft)来确保数据在分布式环境中的一致性。Raft算法的核心思想是将集群中的节点划分为三种角色:领导者(leader)、跟随者(follower)和候选者(candidate)。
在集群启动或领导者节点故障时,候选者节点可以发起选举来成为新的领导者。候选者会向其他节点发送选举请求,并收集足够的选票以成为领导者。
图:候选者会向其他节点发送选举请求
图:follower同意候选者为领导者
图:候选者成为了领导者,就可以对follower发送指令
领导者节点接收到客户端的写入请求后,将该请求追加到自己的日志中,并向其他节点发送日志复制请求。其他节点接收到请求后,将该日志条目写入自己的日志,并向领导者发送确认消息。
图:leader对follower发送指令复制日志“hello,esgyn”
图:follower复制完成后向leader发送确认消息
当领导者节点确定大多数节点已成功复制了某个日志条目时,它将该条目标记为已提交,并将其应用到自己的状态中。然后,领导者会通知其他节点执行相同的操作,以确保所有节点的状态保持一致。
Raft算法只有在大多数节点成功复制了日志条目并提交后,该操作才被视为已提交。
QianBase xTP将数据划分为多个Range,并将每个范围的多个副本分配给不同的节点。每个范围有一个主副本和多个副本,主副本负责协调数据的读写操作。
根据负载评估和决策,QianBase xTP会触发分区迁移操作。
在进行分区迁移时,QianBase xTP会采取一些措施来控制迁移过程中的负载影响。例如,可以限制并发的迁移操作数量,控制数据复制的速率等。
QianBase xTP支持水平扩展,允许在集群中添加新的节点来扩大数据库的容量和吞吐量。
图:传统的纵向扩展,代价昂贵
图:用廉价机器水平扩展,成本更低
QianBase xTP 将数据分为多个范围(Range),每个范围包含一定范围的数据。QianBase xTP 使用 Raft 协议来复制和分布数据。
QianBase xTP的分布式存储管理引擎使用多副本机制来提供数据的冗余和高可用性, QianBase xTP支持指定副本数(默认情况下,系统表5副本,用户表3副本),多个副本存储在不同的节点上,当某个节点故障时,数据仍然可以从其他副本节点读取和写入,保证数据的可用性。
QianBase xTP集群具备自动故障检测和恢复的能力。
分布式存储管理引擎负责读取和写入数据到磁盘,提供数据操作接口、数据副本位置管理和副本数据复制功能。
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!