CRDT(Conflict-free Replicated Data Types,无冲突复制数据类型)
📅 2026/7/2 4:55:20
👁️ 次浏览
核心思想CRDT 的关键是设计一种数据结构使得操作可交换commutative操作可重复idempotent操作顺序无关order-independent这样即使消息乱序重复发送延迟到达最终结果仍然一致称为“强最终一致性”。两大类 CRDT1️⃣ 状态型State-based / CvRDT每个节点维护完整状态定期同步并“合并状态”合并函数必须满足交换律结合律幂等性例子G-Set只增集合PN-Counter正负计数器2️⃣ 操作型Operation-based / CmRDT只传播操作而不是整个状态要求操作是可交换的例子协同编辑中的插入/删除操作常见 CRDT 示例计数器Counter比如点赞数节点 A1节点 B1无论同步顺序如何最终都是 2集合Set添加元素不会冲突删除需要特殊设计如 OR-Set文本编辑协同文档像Google DocsNotion多人同时编辑 CRDT 可以保证文本最终一致很多现代协同编辑系统都基于 CRDT 或类似技术CRDT vs 传统方案特性CRDT传统锁/主从是否需要中心节点❌ 不需要✅ 需要是否支持离线✅ 很强❌ 较弱冲突处理自动手动/复杂延迟低较高优点高可用AP 系统自动冲突解决支持离线操作低延迟缺点设计复杂需要数学性质保证数据结构受限不是所有类型都容易做成 CRDT可能占用更多存储需要额外元数据简单总结CRDT 就像是一个“自带合并规则”的数据结构不管谁先改、谁后改不管网络是否稳定最终大家的数据都会自动变成一样回到顶部实际应用场景用一个多人同时编辑一段文本的例子来一步步演示 CRDT 是怎么工作的。这个过程会尽量贴近像 Google Docs 或 Notion 背后的原理。初始文本Hi有两个用户用户 A设备 A用户 B设备 B两人同时离线编辑第一步给每个字符一个“唯一 ID”CRDT 的关键每个字符不是简单位置而是带唯一标识比如初始状态可以表示为H(id1), i(id2)第二步用户同时编辑 用户 A 的操作A 想输入Heyi操作在 H 后插入e在 e 后插入y表示为insert(e, after id1, new_id3) insert(y, after id3, new_id4) 用户 B 的操作B 想输入Hoi操作在 H 后插入o表示为insert(o, after id1, new_id5)第三步发生网络同步乱序到达现在开始同步但注意消息可能乱序到达假设A 先收到 B 的操作B 后收到 A 的操作第四步合并操作核心在 A 的设备上原本 A 的本地状态H(1) e(3) y(4) i(2)收到 B 的操作insert(o, after id1, id5)问题来了 H 后面已经有 e 了还要插入 o怎么办CRDT 的解决办法确定性排序CRDT 会规定一个规则例如按 ID 排序或时间戳 节点 ID假设排序规则是按 id 从小到大现在 H 后的元素有e(id3)y(id4)o(id5)排序后H e y o i在 B 的设备上B 原本H(1) o(5) i(2)收到 A 的操作insert(e, after 1, id3) insert(y, after 3, id4)合并后同样排序H e y o i第五步最终一致不管谁先同步操作顺序如何网络是否延迟 最终两边都变成Heyoi这就是 CRDT 的核心能力不同路径收敛到同一个结果Strong Eventual Consistency关键点拆解1️⃣ 不用“位置”用“关系”不是插入到第2个位置 ❌而是插入到 id1 后面 ✅避免位置冲突2️⃣ 每个操作都是“可合并的”插入不会冲突删除用“标记删除”tombstone3️⃣ 必须有“确定性规则”比如ID 排序Lamport 时间戳节点 ID保证所有节点算出一样的结果
对于从事工业品进出口的企业来说,经营中真正消耗精力的,往往不是客户开发,而是日常运营中的琐碎管理。少则数百、多则上千的合作厂商,频繁波动的汇率,随时可能变化的货期,复杂的跨境物流环节……这些看似细…
📅 2026/7/2 4:55:20
01、7年机房沉浮
老子运维干了七年,屁都不敢多放。说出来怕人笑话——前三年在破IDC当服务器保姆,重启换硬盘混日子;两年给电商公司舔AWS,S3崩了就背锅;最近两年搞K8s,连个屁的零日漏洞都没见过。
上个月…
📅 2026/7/2 4:55:20
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
📅 2026/7/2 4:53:20
1. 项目概述:为什么选择WebGoat的General单元作为起点?如果你刚刚踏入Web安全测试这个领域,面对一堆陌生的工具和概念感到无从下手,那么从WebGoat的General单元开始,绝对是一个明智的选择。WebGoat本身就是一个设计精巧…
📅 2026/7/2 10:12:10
更多请点击:
https://intelliparadigm.com
第一章:嵌套虚拟化失效的典型现象与根本归因 当在 VMware Workstation、VirtualBox 或 KVM 宿主机中运行支持虚拟化的客户机(如 Windows Hyper-V 或 Linux KVM)时,嵌套虚拟…
📅 2026/7/2 10:12:10
更多请点击:
https://intelliparadigm.com
第一章:生产环境零停机保障的核心价值与VMware自启动战略定位 在现代企业级IT架构中,业务连续性已不再是一种可选项,而是SLA契约下的刚性要求。零停机保障的本质,是将计划内…
📅 2026/7/2 10:12:10
现在很多制造工厂想要在线上接单、展示实力,大多选择入驻各类第三方平台,但这种方式存在不少短板。平台会设置各种展示限制,调整收费标准、更改推送规则都是常事,企业没法自主规划线上宣传;更关键的是通过平台咨询过来…
📅 2026/7/2 10:12:10
本文涉及的全部源码、训练好的模型权重、数据集、配套文档已整理打包,文末附下载链接,方便读者一键复现与二次开发。开发目的
本项目聚焦茶叶种植中常见的三类病害(藻叶斑、云纹叶枯病、灰枯病)的快速检测需求,选择对应…
📅 2026/7/2 10:12:10
DB Browser for SQLite:让SQLite数据库管理变得简单直观 【免费下载链接】sqlitebrowser Official home of the DB Browser for SQLite (DB4S) project. Previously known as "SQLite Database Browser" and "Database Browser for SQLite". We…
📅 2026/7/2 10:10:10
1. 项目概述:从“能用”到“精通”的必经之路如果你正在学习或从事网络安全测试,尤其是Web应用安全评估,那么BurpSuite的Intruder模块绝对是你绕不开的核心工具。而Intruder模块里,功能最强大、也最让人又爱又恨的,莫过…
📅 2026/7/2 0:00:33
1. 项目概述:从“找东西”到“精准操控” 做自动化测试,尤其是Web UI自动化,最核心也最让人头疼的一步是什么?不是写复杂的业务逻辑,也不是处理异步加载,而是最基础的—— 让程序找到页面上那个你想操作的…
📅 2026/7/2 0:00:33
1. 项目概述:为什么是Maestro? 如果你正在寻找一个能让你快速上手、告别繁琐配置、并且对移动端UI自动化测试真正友好的框架,那么Maestro很可能就是你一直在等的那个答案。我接触过Appium、Espresso、XCUITest,也折腾过各种基于图…
📅 2026/7/2 0:00:33
6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…
📅 2026/6/30 10:04:37
引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…
📅 2026/7/1 15:35:39
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/2 1:17:03
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/2 9:49:12
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/2 1:36:45