分布式系统之中心副本控制协议(Primary-secondary协议)

本文主要是介绍分布式系统之中心副本控制协议(Primary-secondary协议),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近又把之前接触过一段时间的分布式系统及相关算法拾了起来,继续研究研究。大体将分布式涉及的一些基本原理及算法进行了理解掌握之后,又沿着从简到繁的次序依次记录了下来。

1. 副本协议

简单来讲,副本控制协议是按照指定的流程控制副本数据进行读写行为的协议,使副本满足一定的可用性和一致性要求的分布式协议。一般来说,副本协议需要满足:容错性、可用性和一致性(强一致性、会话一致性、最终一致性)。
按照副本协议是否含有中心节点,可将协议划分为两大类:“中心化副本控制协议”和“去中心化副本控制协议”。

2. 中心副本控制协议 (Primary-secondary协议)

基本思路:由一个中心节点协调副本数据的更新、维护副本之间的一致性。所有的副本相关的控制交由中心节点完成,将分布式并发控制问题转化为一个单机并发控制问题,需要解决“写写”、“读写”等并发冲突。总所周知,中心化的分布式系统存在单点故障问题,系统的可用性依赖于中性化节点,当中心节点异常,系统将整体不可用。

接下来,我们介绍一种常用的Primary-secondary中性化副本控制协议,在后面的关于Quorum的文章中,我们还会提及到该协议。

Primary-secondary协议中副本被分为两大类,其中仅有一个副本作为primary副本,其他为secondary副本。其协议需要解决四大问题:数据更新流程、数据读取方式、Primary副本的确定和切换、数据同步

2.1 数据更新流程

1. 数据更新由primary节点协调完成。
2. 外部节点将更新操作发给primary节点
3. primary节点进行并发控制(确定并发更新操作先后顺序)
4. primary节点将更新操作发送给secondary节点
5. primary根据secondary节点的执行情况决定是都更新成功并返回外部节点

在实践当中,primary节点将同时发送N个副本给secondary,出口带宽仅为总带宽1/N,primary节点成为了系统吞吐瓶颈。为了解决这个问题,在一些系统(GFS,HDFS)中,使用接力的方式同步数据,即primary将更新发送给第一个secondary副本,该secondary副本发送给下一个secondary副本,以此类推。(该处就是HDFS中数据分发模型的使用原因)

2.2 数据读取方式

针对最终一致性,系统读取任意副本都可以满足需求。
针对会话一致性,系统可以为副本设置版本号,每次更新对版本号进行递增操作,用户读取副本时验证版本号,从而保证用户读到的数据单调递增。
Primary-secondary较难实现强一致性,下面介绍几种解决方案:

1. 始终只读primary副本,secondary不提供读服务,可以实现强一致性。此处所说的primary实现中副本与机器并不绑定,而是将数据分段,以数据段为单位维护副本,将primary副本分散到集群中。
例: 数据分为数据段a,b,c,每个数据段有2个副本,仅有一个primary副本,有3台机器X、Y、Z。那么数据段分配可以为:X【a(primary),b】、Y【b(primary),c】、Z【c(primary)、a】
2. 由primary控制节点secondary节点的可用性。当primary更新secondary副本不成功时,primary将该secondary副本标记为不可用,从而用户不再读取该不可用副本。在一个确定的时间,某secondary副本要么更新到与primary一致的状态,要么被标记为不可用。这种方式依赖于一个中心元数据管理系统,记录副本的状态信息。
3. 基于Quorum机制选择primary,这部分内容将在另一篇文章中介绍。

2.3 Primary副本的确定和切换

切换副本的难点有两个方面:

1. 如何确定primary节点是一个异常节点
2. 切换primary如何不影响副本的一致性(保证新旧primary副本保持一致)

针对问题1,将在另一篇文章中介绍基于Lease机制的确定节点状态方法;针对问题2,同样也在另一篇文章中介绍基于Quorum机制确定新primary的方法。

分布式系统中发现节点异常需要一定的探测时间,该时间一般为10秒级别(利用Lease机制确定节点状态);因此,primary-backup类副本协议的最大缺点就是primary副本切换带来的停服务问题。

2.4 数据同步

primary-secondary协议一般都会遇到secondary副本与primary不一致的问题。

该问题可能由以下三种状况导致:

1. 由于网络分化异常,secondary上的数据落后于primary上的数据
2. secondary上的数据有可能是脏数据,需要被丢弃
3. secondary是新增加的副本,没有数据

针对第一种状况,可以通过回放primary操作日志进行实现,从而使节点状态达到一致;针对第二种情况,通常从设计阶段就尽量避免分布式协议产生脏数据,如果一定存在脏数据,可以直接丢弃脏数据副本,然后将问题转化为第三种情况;针对第三种情况,可以使用检查点或者快照方式较快速完成同步,然后通过日志方式与当前副本状态达成一致。

在这一篇文章中,我们大体介绍了Primary-secondary协议,并针对其四大问题进行了依次解决,部分问题的解决方案放到了后面的文章进行细致的讲述。

参考:

  • 《分布式系统原理介绍》

这篇关于分布式系统之中心副本控制协议(Primary-secondary协议)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/825966

相关文章

跨国公司撤出在华研发中心的启示:中国IT产业的挑战与机遇

近日,IBM中国宣布撤出在华的两大研发中心,这一决定在IT行业引发了广泛的讨论和关注。跨国公司在华研发中心的撤出,不仅对众多IT从业者的职业发展带来了直接的冲击,也引发了人们对全球化背景下中国IT产业竞争力和未来发展方向的深思。面对这一突如其来的变化,我们应如何看待跨国公司的决策?中国IT人才又该如何应对?中国IT产业将何去何从?本文将围绕这些问题展开探讨。 跨国公司撤出的背景与

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

分布式系统的个人理解小结

分布式系统:分的微小服务,以小而独立的业务为单位,形成子系统。 然后分布式系统中需要有统一的调用,形成大的聚合服务。 同时,微服务群,需要有交流(通讯,注册中心,同步,异步),有管理(监控,调度)。 对外服务,需要有控制的对外开发,安全网关。

分布式系统的主要考虑

异构性:分布式系统由于基于不同的网路、操作系统、计算机硬件和编程语言来构造,必须要考虑一种通用的网络通讯协议来屏蔽异构系统之间的禅意。一般交由中间件来处理这些差异。缺乏全球时钟:在程序需要协作时,它们通过交换消息来协调它们的动作。紧密的协调经常依赖于对程序动作发生时间的共识,但是,实际上网络上计算机同步时钟的准确性受到极大的限制,即没有一个正确时间的全局概念。这是通过网络发送消息作为唯一的通信方式

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

Modbus-RTU协议

一、协议概述 Modbus-RTU(Remote Terminal Unit)是一种基于主从架构的通信协议,采用二进制数据表示,消息中的每个8位字节含有两个4位十六进制字符。它主要通过RS-485、RS-232、RS-422等物理接口实现数据的传输,传输距离远、抗干扰能力强、通信效率高。 二、报文结构 一个标准的Modbus-RTU报文通常包含以下部分: 地址域:单个字节,表示从站设备

网络原理之TCP协议(万字详解!!!)

目录 前言 TCP协议段格式 TCP协议相关特性 1.确认应答 2.超时重传 3.连接管理(三次握手、四次挥手) 三次握手(建立TCP连接) 四次挥手(断开连接)  4.滑动窗口 5.流量控制 6.拥塞控制 7.延迟应答 8.捎带应答  9.基于字节流 10.异常情况的处理 小结  前言 在前面,我们已经讲解了有关UDP协议的相关知识,但是在传输层,还有

DNS协议基础笔记

1.定义 DNS(Domain Name System,域名系统)是互联网的一项核心服务,它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。 2.域名解析过程 当用户在浏览器中输入一个域名,浏览器首先会检查自己的缓存中是否有该域名对应的 IP 地址。本地 DNS 服务器收到查询请求后,首先会检查自己的缓存中是否有该域名对应的 IP 地址。根域名服务器收到查询请

模具要不要建设3D打印中心

随着3D打印技术的日益成熟与广泛应用,模具企业迎来了自建3D打印中心的热潮。这一举措不仅为企业带来了前所未有的发展机遇,同时也伴随着一系列需要克服的挑战,如何看待企业引进增材制造,小编为您全面分析。 机遇篇: 加速产品创新:3D打印技术如同一把钥匙,为模具企业解锁了快速迭代产品设计的可能。企业能够迅速将创意转化为实体模型,缩短产品从设计到市场的周期,抢占市场先机。 强化定制化服务:面