【分布式设计】复制实现原理

无论何种分布式存储,其本质都需要节点间的复制,实践中主要的实现方式有基于语句的复制、基于WAL的复制、基于行的逻辑复制、基于触发器的复制。

分布式系列文章,首发请关注公众号【伟达实验室

复制的实现原理

对于分布式存储,上节中我们提到主从同步、多主同步、无主同步,都是从分布式系统整体角度来理解分布式的复制。而无论哪种同步方式,其最终都是依赖于节点间的文件复制。

实践中,主要的复制实现方式有:基于语句的复制、基于WAL预写式日志的复制、基于行的逻辑复制、基于触发器的复制。

基于语句的复制

简单来说,主节点会将执行的每个写请求记录(操作语句)记录下来,并将操作语句作为日志发送给从节点。比如mysql,会将每个insert、update、delete语句记录并发送给从节点,从节点按照顺序分析并执行这些语句。

语句复制方式,是比较简单的一种实现方式,会直接保存客户端对节点的写语句,将其发送给从节点。但是一些动态操作语句,比如时间、自增列、有副作用的语句(触发器、存储过程、UDF)会导致不同副本出现副作用。

基于WAL-预写式日志的复制

WAL的中心概念是数据文件(存储着表和索引)的修改必须在这些动作被日志记录之后才被写入,即在描述这些改变的日志记录被刷到持久存储以后。其中心思想是先写日志,再写数据,数据文件的修改必须发生在这些修改已经记录在日志文件中之后。

这样主节点和从节点的数据同步就完全可以采用日志文件传输的方式来实现。

基于行的逻辑日志复制

基于行的逻辑日志复制方式,采用与复制和存储引擎不同的日志格式,且与存储逻辑相剥离。

对于关系型数据库,通常根据不同种类的写请求来记录描述数据表行级别的数据:

  1. 对于行插入,日志会包含所有相关表的最新值;

  2. 对于行删除,日志里会存储足够的信息来标识已删除的行。

  3. 对于行更新,日志里会有足够信息来唯一标识需要更新的行,同时会包含所有需要更新的列的最新值,或者包含所有列的最新值。

基于触发器的复制

基于触发器的复制:更高的灵活性,例如仅复制部分数据,到另一种数据库复制,冲突解决逻辑,这些场景可能需要将复制上升到应用层来解决。基于触发器的复制通常比其他复制方法具有更大的开销,并且比数据库的内置复制更容易出现错误和限制。然而,由于其灵活性,它仍然是有用的。

分布式专题,持续更新中~ 

收发请关注公众号: 伟达实验室

分布式这么多问题,升级配置不行吗?

【分布式设计】主从复制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分布式架构是指将一个大型系统拆分成多个子系统或模块,并在不同的计算节点上进行部署和运行。它的核心目标是提高系统的可伸缩性、可用性和性能。 以下是分布式架构的核心技术和原理: 1. 分布式计算:分布式计算是指将大规模的计算任务划分成多个子任务,由多个计算节点并行执行,最后将结果合并。它可以通过并行计算来提高计算速度和处理能力。 2. 数据分区和复制数据分区是将数据划分为多个片段,每个片段存储在不同的节点上。数据复制是为了提高系统的可用性和容错性,将数据备份到多个节点上。这样可以减少单个节点的负载,并且在部分节点故障时仍然能够提供服务。 3. 一致性协议:为了保证分布式系统中不同节点之间的数据一致性,需要使用一致性协议来确保节点之间的数据同步。常见的一致性协议包括Paxos、Raft和ZAB等。 4. 分布式事务:在分布式系统中,涉及到跨多个节点的事务处理。分布式事务需要保证事务的原子性、一致性、隔离性和持久性,常用的解决方案包括两阶段提交(2PC)和三阶段提交(3PC)。 5. 负载均衡:负载均衡是将请求均匀地分发到不同的节点上,以实现系统的高可用性和高性能。常见的负载均衡算法有轮询、随机、最少连接等。 6. 消息队列:消息队列是一种解耦合的通信机制,用于在分布式系统中传递和处理消息。它能够实现异步通信、削峰填谷和解耦合等功能。 7. 分布式缓存:分布式缓存是将数据缓存在多个节点上,以提高系统的性能和响应速度。常见的分布式缓存系统有Redis、Memcached等。 8. 分布式文件系统:分布式文件系统是一种将文件数据分布存储在多个节点上的文件系统。它提供了高可用性、容错性和扩展性。 这些技术和原理分布式架构设计和实现中的重要组成部分,能够提高系统的可伸缩性、可用性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值