博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《云数据管理:挑战与机遇》2.1 向量时钟
阅读量:6255 次
发布时间:2019-06-22

本文共 763 字,大约阅读时间需要 2 分钟。

本节书摘来自华章出版社《云数据管理》一书中的第2章,第1节,作者迪卫艾肯特·阿格拉沃尔,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.1.2 向量时钟

逻辑时钟可以捕获潜在的因果关系,但是,这并不意味着一定有因果关系,逻辑时钟条件只是一个必要条件,并不是充分条件。分布式系统中的所有事件可能需要一个更强的时钟条件:

e→f当且仅当clock(e)<clock(f)。

该条件可按如下方式实现:为每一进程i赋一个长度为n的向量Vi,n是系统中所有进程的数量。每一个执行的事件都被赋一个本地向量。

每个向量都初始化为0,即:Vi[j] = 0,其中i, j = 1, …, N。进程i在每一个事件之前增加本地向量元素的值,Vi[j] = Vi[j] +1。当进程i发送消息的时候,会将本地向量Vi和消息一起发送。当进程j接收消息时,会将接收向量和本地向量的元素逐个进行比较,并将本地向量设置为两者之中较大的值,Vj[i] = max(Vi[i], Vj[i]), i = 1, …, N。

给定两个向量V和V',V=V'当且仅当V[i] = V'[i], i = 1, …, N,并且V≤V'当且仅当V[i]≤V'[i], i = 1, …, N。如果至少存在一个j(1≤j≤N),使得V[j]<V'[j],并且,对所有的i≠j,其中,1≤i≤N,V[i]≤V'[i],则V<V'。对任意两个事件e和f,e→f当且仅当V(e)<V(f)。如果既不满足V(e)<V(f),又不满足V(f)<V(e),那么两个事件是并发的。

图2-3中,我们为图2-1示例中的所有事件都赋了向量时间值。

 

图2-3 向量时钟

虽然向量时间可以准确地捕获因果关系,但是向量的大小是网络大小的函数,可能非常大,并且每一个消息都需要携带额外的向量

转载地址:http://qefsa.baihongyu.com/

你可能感兴趣的文章
[BZOJ 2140]稳定婚姻(强连通分量)
查看>>
人工智能工程师学习路线
查看>>
Nginx入门(2)反向代理和负载均衡
查看>>
MySQL库表状态查询
查看>>
【鲁班学院】干货分享!《面试必备之Mysql索引底层原理分析》
查看>>
第十一周项目0-是春哥啊
查看>>
poi做一个简单的EXCAL
查看>>
几种查询emacs帮助的办法
查看>>
Python_基础_(模块,time,random,os,sys,json,shelve,xml,序列化反序列化)
查看>>
异常:Project configuration is not up-to-date with pom.xml解决方案
查看>>
HDU2647 拓扑排序
查看>>
ThinkPHP/---微信支付PC流程
查看>>
JavaScript 05
查看>>
python 多线程编程之threading模块(Thread类)创建线程的三种方法
查看>>
实验三
查看>>
水仙花数
查看>>
P3308 [SDOI2014]LIS(最小割+退流)
查看>>
C语言作业--数据类型
查看>>
压位高精
查看>>
jsp 中对jar 包的引用
查看>>