当前位置:网站首页>多主复制下处理写冲突(4)-多主复制拓扑
多主复制下处理写冲突(4)-多主复制拓扑
2022-07-31 15:27:00 【华为云】
复制的拓扑结构描述了写请求从一个节点传播到另一个节点的通信路径。若有两个主节点,如图-7,只有一个合理拓扑结构:M1必须把他所有的写同步到M2,反之亦然。当有两个以上M,各种不同拓扑都可能的。如图-8说明了一些例子。

最普遍的拓扑是全部到全部,即图-8 ,每个M将其写入同步到其他所有M。
但也会使用更多受限制的拓扑:例如,MySQL仅支持环形拓扑(circular topology),其中每个节点接收来自前一个节点的写入,并将这些写入(加上自己的写入)转发给后序节点。
另一流行结构是星形形状^v。一个指定的根节点将写入转发给所有其他节点。星型拓扑可以推广到树。
环形、星形拓扑
写请求需通过多个节点才能到达所有副本,即中间节点需要转发从其他节点收到的数据更改。为避免无限循环,每个节点需赋予一个唯一标识符,在复制日志中的每个写请求都标记了所有已经过的节点的标识符。当某节点收到用自己的标识符标记的数据更改时,该数据更改将被忽略,避免重复转发。
问题
若某节点故障,则可能会中断其他节点之间的复制消息流,导致它们无法通信,直到节点修复。拓扑结构可以重新配置为在发生故障的节点上工作,但在大多数部署中,这种重新配置必须手动完成。更密集连接的拓扑结构(例如全部到全部)的容错性更好,因为它允许消息沿着不同的路径传播,避免单点故障。
全部到全部的拓扑也可能问题。特别当一些网络链接可能比其他网络链接更快(网络拥塞),结果一些复制消息可能“超过”其他复制消息,如图-9。
客户端A向L1的表中插入一行,B在L3更新该行。然而,L2能以不同顺序接收写入:可先接收更新(从它的角度来看,是对数据库中不存在的行的更新),之后接收L1的插入日志(本该在更新日志之前到达)。
这是个因果关系问题,类似“一致前缀读”中的:更新依赖先前完成的插入,所以需确保所有节点先接收插入,再处理更新。在每次写日志里添加一个时间戳还不够,主要因为无法确保时钟完全同步,因而无法在L2上正确排序所收到的日志。
为正确排序日志消息,可使用版本向量。冲突检测技术在很多主节点复制系统中实现不够完善。如PostgreSQL BDR不提供写入的因果排序,Tungsten Replicator for MySQL甚至不尝试检测冲突。
边栏推荐
- abaqus find contact pairs报错:surface name is already in use
- Doing things software development - the importance of law and understanding of reasonable conclusions
- 数据库的范式(第一范式,第二范式,第三范式,BCNF范式)「建议收藏」
- 工程水文学名词解释总结
- 如何进行需求分析评审
- How useful is four-quadrant time management?
- The use of border controls
- WPF project - basic usage of controls entry, you must know XAML
- Insert into data table to insert data
- The R language ggstatsplot package ggbarstats function visualizes bar charts, and adds hypothesis test results (including sample number, statistics, effect size and its confidence interval, significan
猜你喜欢

Why don't you make a confession during the graduation season?

Why is the field of hacking almost filled with boys?

TRACE32 - C source code association

国内市场上的BI软件,到底有啥区别

Female service community product design

Public Key Retrieval is not allowed error solution when DBeaver connects to MySQL 8.x

工程流体力学复习

What is the difference between BI software in the domestic market?

How useful is four-quadrant time management?

「秋招系列」MySQL面试核心25问(附答案)
随机推荐
Unity中实现点选RenderTexture中的3D模型
radiobutton的使用
力扣:738.单调递增的数字
Vb how to connect mysql_vb how to connect to the database collection "advice"
DBeaver连接MySQL 8.x时Public Key Retrieval is not allowed 错误解决
TRACE32——基于SNOOPer的变量记录
Selenium自动化中无头浏览器的应用
模板与泛型编程值typelist实现
01 Encounter typescript, build environment
Ubuntu Topic 5: Setting a Static IP Address
Efficient use of RecyclerView Section 3
The use of border controls
Delete table data or clear table
R语言ggstatsplot包ggbarstats函数可视化条形图、并添加假设检验结果(包含样本数、统计量、效应大小及其置信区间、显著性、组间两两比较、贝叶斯假设)、检验结果报告符合APA标准
Efficient use of RecyclerView Section 2
三、数组
Linux check redis version (check mongodb version)
双边滤波加速「建议收藏」
R language ggplot2 visualization: use the ggboxplot function of the ggpubr package to visualize the grouped box plot, use the ggpar function to change the graphical parameters (caption, add, modify th
Excel quickly aligns the middle name of the table (two-word name and three-word name alignment)