CRDT宝典 - Multi-Value-Register

宝典目录

背景

学了这么多state-based CRDT,我们发现merge一般都要解决冲突(除了kernel), 我们比较两个对同一个元素的操作,有四种状态

  1. 大于
  2. 小于
  3. 等于
  4. 冲突

当状态为冲突时,我们有一些解决冲突的方式,比如

  1. 基于LLW-Register的last-write-wins策略
  2. 基于GCounter的Add-Wins策略

可是我们业务有一些场景,需要在实际遇到冲突时,才决定使用什么策略来解决冲突,比如权限问题,权限高的用户可以覆盖权限低的用户,权限低的用户不能覆盖权限高的用户。

这就要求我们的CRDT在遇到冲突时,将冲突抛出,由实际的业务代码来决定使用什么策略来解决冲突。

它有一个专业的名字:多值寄存器,Multi Value Registers。

这个MVR在初始化时,需要业务代码里传入解决冲突的算法,然后将其应用在CRDT上。

相关推荐
霸道流氓气质几秒前
Java中信号量(Semaphore):从本地到分布式
java·开发语言·分布式
怪奇云呼军2 分钟前
G.711、Opus 和重采样会拖慢识别吗?闪电智能VoiceAgent 的音频入口怎么选
java·人工智能·python·算法·云计算·音视频
cindershade39 分钟前
用原生 HTML5 视频与 Canvas 实现浏览器端视频抽帧封面
前端
笨鸟先飞,勤能补拙41 分钟前
Web 服务器与计算机网络全景原理
运维·服务器·前端·网络·人工智能·计算机网络·web安全
NutShell Wang1 小时前
Wails v3 Beta 实战:用显式对象模型重写你的第一个 Go 桌面应用
前端·人工智能·go·vibe coding
cindershade1 小时前
前端国际化工程实践:语言包拆分、动态加载与日期数字格式统一
前端
kisbad1 小时前
Day 036|OpenAI Agents SDK 快速开始:今天跑通第一个 Agent
java·前端·javascript
qq_267612891 小时前
Gitee CodePecker行业场景化落地指南:金融、车联网与IoT双引擎选型与工程化路径
前端·gitee·自动化
初晨未凉1 小时前
elementui自定义内容图片预览
前端
乐观勇敢坚强的老彭1 小时前
C++ 竞赛常用算法模板速查表
开发语言·c++·算法