向量时钟算法简介

向量时钟是一种用于分布式系统中解决并发一致性问题的算法。每个节点维护一个向量,其中每个元素对应一个系统中的节点,记录了该节点接收到的事件序列。当节点间通信时,它们会传递自己的向量时钟,通过比较和更新,可以检测到因果顺序的冲突,从而实现并发控制。此算法简单且不需要全局时钟,但可能导致不必要的冲突检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、使用背景
先说一下需要用到 向量时钟的场景。我们在写数据时候,经常希望数据不要存储在单点。如db1,db2都可以同时提供写服务,并且都存有全量数据。而client不管是写哪一个db都不用担心数据写乱问题。但是现实场景中往往会碰到并行同时修改。导致db1和db2数据不一致。于是乎就有人想出一些解决策略。向量时钟算是其中一种。简单易懂。但是并没有彻底解决冲突问题,现实分布式存储补充了很多额外技巧。
 
这里反向叙述方式, 介绍向量时钟。先举实际例子让读者有个感性认识,然后再说算法规则。
二、举个例子
向量时钟实际是一组版本号(版本号=逻辑时钟),假设数据需要存放3份,需要3台db存储(用A,B,C表示),那么向量维度就是3,每个db有一个版本号,从0开始,这样就形成了一个向量版本 [A:0, B:0, C:0];
Step 1: 初始状态下,所有机器都是  [A:0, B:0, C:0]
      DB_A——> [A:0, B:0, C:0]
      DB_B——> [A:0, B:0, C:0]
      DB_C——> [A:0, B:0, C:0]
 
Step 2:  假设现在应用是一个商场,现在录入一个肾X 的价格  iphoneX price 5888 ; 客户端随机选择一个 db 机器写入。现假设选择了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值