摘要: GCounter 这段代码实现了一个GCounter,是一个分布式计数器,支持增加计数和合并计数器。GCounter是一种弱一致性的数据结构,可以用于分布式系统中的计数场景。 其中,zero()函数返回一个空的计数器,value(c)函数返回计数器c的总和,inc(c, key)函数将计数器c中ke 阅读全文
posted @ 2023-03-26 17:11 起床睡觉 阅读(41) 评论(0) 推荐(0) 编辑
摘要: GSet 这段代码定义了一个GSet类,它是一个set类型的别名。其中zero()函数返回一个空的set,value(s)函数返回s,add(s, value)函数向s中添加value,merge(a, b)函数返回a和b的并集。这些函数实现了GSet的基本操作,即初始化、添加元素和合并两个GSet 阅读全文
posted @ 2023-03-26 17:10 起床睡觉 阅读(26) 评论(0) 推荐(0) 编辑
摘要: LWWReg LWW Register是一种数据结构,用于存储一个值和一个时间戳,支持读取和写入操作。在写入时,如果新的时间戳比原来的时间戳更大,那么就更新值和时间戳;在读取时,直接返回当前的值。这个数据结构可以用于分布式系统中,支持多个节点对同一个值进行读写操作,最终保证一致性。其中,merge函 阅读全文
posted @ 2023-03-26 17:10 起床睡觉 阅读(32) 评论(0) 推荐(0) 编辑
摘要: ORSet 这段代码实现了OR-Set,是一种基于版本向量的CRDT,用于实现集合的合并。OR-Set由两个集合add和remove组成,add集合存储添加的元素,remove集合存储删除的元素。每个元素都有一个版本向量,用于标识该元素的添加和删除操作。其中,add集合中的元素版本向量的值大于rem 阅读全文
posted @ 2023-03-26 17:09 起床睡觉 阅读(196) 评论(0) 推荐(0) 编辑
摘要: PNCounter 这段代码实现了一个PNCounter,即正负计数器。PNCounter是基于GCounter实现的,GCounter是一个只增不减的计数器,而PNCounter则是在GCounter的基础上增加了减操作。PNCounter由两个GCounter组成,一个用于记录增加操作,一个用于 阅读全文
posted @ 2023-03-26 17:09 起床睡觉 阅读(24) 评论(0) 推荐(0) 编辑
摘要: PSet 这段代码实现了一个PSet,即Positive Set,是GSet的扩展。PSet是一个集合,支持添加和删除元素,但是不支持重复元素。PSet的实现是通过两个GSet来实现的,一个GSet存储添加的元素,另一个GSet存储删除的元素。value函数返回PSet中的元素,add函数向PSet 阅读全文
posted @ 2023-03-26 17:08 起床睡觉 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 这段代码实现了一个VClock类,它是基于GCounter实现的。VClock是一种向量时钟,它可以用于在分布式系统中对事件发生的顺序进行排序。VClock的实现方式是将每个节点的计数器值存储在一个字典中,字典的键是节点的标识符,值是计数器的值。compare函数用于比较两个VClock的大小,它会 阅读全文
posted @ 2023-03-26 17:07 起床睡觉 阅读(118) 评论(0) 推荐(0) 编辑