协同编辑场景的基础分析及方案设计最近笔者在做一款具有协同编辑功能的思维导图时。在实现协同编辑的过程中对这一场景中笔者有了

最近笔者在做一款具有协同编辑功能的思维导图时。在实现协同编辑的过程中对这一场景中笔者有了一些自己的理解,于是便在这里抛砖引玉。

协同编辑,即多个操作端同时对一个对象进行操作。在协同编辑的过程中,有俩个首要的性能指标,一致性与实时性。二者相互制约,不同的场景有不同方案。

协同编辑中最容易出现的问题就是由于多个操作端状态不一致导致的操作冲突。

所以,如何解决具体某个具体模式协同编辑中的冲突,首先的就是了解该事物的状态与操作。

状态,即事物表现出来的状况与形态。操作,这里我把操作定义为改变状态的动作。

在一次操作改变状态的过程中,有以下四个要素:

1、原始状态

2、触发操作的条件

3、操作

4、新的状态

以上述过程为例,完整即为馒头的初始状态,触发操作的条件为饥饿,吃为该操作的具体动作,而半个则是馒头在经历这次操作后的后续状态。

所以为了确保协同编辑的一致性,我们就要确保每一次事件发生在不同端时,四要素一致。

不同的业务场景下,我们往往对一项技术的性能要求也不同。

在思维导图协同编辑的过程中,我们重一致性,轻实时性。

在明确重一致,轻实时这一目标后。我们就对目标进行解构。

所谓的重一致性,经前文分析,也就是说要确保事件发生的四要素一致。

在设计一款需要重一致的产品时,我们可以先抛出一个问题。如何设计一款绝对一致的产品?在得到方案后,我们对其中要求过高的条件进行弱化,就可以得到一个重一致,但不偏执的方案。

我们从四要素出发:

其中触发操作的条件是最容易把持一致的,只要我们在各个端采用相同的逻辑片段判断即可。所以我们把重点放在1,2,4。

以下是一套确保某个单一操作在各个端都可以按预期执行的理论方案,该方案不考虑性能等问题,单纯的为确保四要素一致而构想。

该方案主要利用ACK机制来确保要素一直:

通过以上流程,我们可以确保某一次操作是强一致性的。

根据上文设想,当我们设计出一套理想模型时,我们可以通过对其中过于苛刻的条件进行弱化,从而得到一个可工程化的方案。

那么首先要进行的就是对方案本身进行解构,从而了解那些部分是不适合工程化的。

步骤1:用户想要执行一个操作C,去修改A对象(客户端操作,无风险)

步骤2:发送操作申请,及操作对象A的标识(socket消息,可工程化,低风险)

步骤3:在服务器上建立A对象临时控制区(在服务器上开辟内存,可能导致内存暂用过高或内存泄露,高风险)

步骤7:对比所有端的A对象状态(对比操作可能会消耗大量服务器资源,高风险)

分支1:

步骤8:广播操作C(socket消息,可工程化,低风险)

步骤9:各客户端执行操作C(客户端操作,无风险)

步骤11:对比所有端的A对象(对比操作可能会消耗大量服务器资源,高风险)

分支1-1:

步骤12:允许下次操作(本身无风险,但这意味着在这次操作之前不允许其他任何操作,高风险)

分支1-2:

步骤12:通知撤回A对象状态(客户端操作,但需设计操作的撤销事件,低风险)

分支2:

步骤8:合并所有A对象的状态(需要设计一套合并方法,低风险)

步骤9:驳回此次动作申请(socket消息,可工程化,低风险)

步骤10:客户端拉取最新状态并覆盖对象A状态(客户端操作,无风险)

经上分析,我们可以看到该方案不适合工程化的主要俩点:

1、在服务器开辟内存空间,及对比文件带来的服务器资源消耗问题

深入剖析,以上俩点主要是因为方案把确认要素一致的动作交给服务器端执行,而各个客户端近乎只承担了执行动作的功能。

针对以上问题有俩种角度:

1、部分确认机制是否必要,是否可以进行简化

2、是否可将部分逻辑转移至客户端执行,或简化

角度1的思路:

整个链条中确认了俩次状态一致,如果有任意一次不同都会取消这次操作及其影响。

1、执行前状态(要素1)

2、执行后状态(要素4)

理论上,在一个output=(input)的程序中,当给定输入一定是,输出也是一定的。所以要素4的确认机制在某些场景可以舍去。

角度2的思路:

目前在服务端执行的主要职责有:

1、消息传递

2、文件暂存

3、文件对比及合并

职责1不建议,也不适合放在客户端。职责2本质上是职责3可以执行的前提。

职责3:文件对比是为了确认要素,即便把这一步骤放在客户端执行。在不考虑端对端通信的前提下,同样需要借助服务器进行文件存储。

服务器进行文件合并的初衷:扮演第三方(除协同者外)的角色确定文件的最终形态。

这一步,在俩种场景下可以发生变化。

1、状态本身无法合并(比如思维导图中一个节点在不同端绑定了俩份完全无关的笔记,笔记之间无法合并)

2、通过某种机制避免产生冲突,极端情况发生时采用覆盖策略。(一般意味着某种形式的操作加锁,也是市面上最常见的协同策略)

上传状态md5从本质上来说是把对比这个职责进行分工,客户端负责特征值提取,服务器进行简单对比。

THE END
1.思维导图制作指南:激发创意与提升学习效率的实用工具思维导图是一种非常有效的工具,它能帮助我们整理思路、激发创意和提高学习效率。无论是在学习、工作还是日常生活中,掌握思维导图的制作方法都能让我们的思维更加清晰,沟通更加顺畅。接下来,我就来聊聊怎么做思维导图。 首先,想要制作思维导图,最重要的是明确主题。主题可以是一个问题、一项任务或者一个项目。比如说https://news.huochengrm.cn/cygs/6892.html
2.6步解锁思维导图画法,让思维跃然纸上,效率翻倍!●可在大纲模式下快速输入文本并无无缝转换成思维导图。 4、XMind 入口:https://xmind.cn/ 特点: ●一款全功能的思维导图和头脑风暴软件。 ●提供各种结构,如鱼骨图、矩阵图等,并且支持多种结构混用。 ●支持一键应用配色方案更换视觉风格或个性化定制样式细节。 https://zhuanlan.zhihu.com/p/2729851972
3.word思维导图怎么制作?开拓思维就用它!word思维导图怎么制作?我们都知道Word是一个文字处理工具,大家经常会用到它,其实它还有一些隐藏的功能也是不错的,例如可以绘制思维导图,现在日常学习中,思维导图的使用频率也越来越高了,今天我们就一起来看下Word思维导图怎么制作吧!演示机型:戴尔游匣G15 5520系统版本:Windows 10软件版本:Google Chrome 105https://baijiahao.baidu.com/s?id=1752798160081601225&wfr=spider&for=pc
4.思维导图+同学协作=复习事半功倍思维导图+同学协作=复习事半功倍,思维导图,同学协作https://www.163.com/dy/article/JF8R54Q505568AQH.html
5.3.11思维导图作业?今天的作业就是运用思维导图的形式,设计【3.11思维导图作业】?今天的作业就是运用思维导图的形式,设计一个方案。焦点主题是:如何增加自己的幸福感。随机图像任选其一:大象、葫芦、架子鼓、仙人掌、海马。作业呈现形式:思维导图方案 图片发自简书Apphttps://www.jianshu.com/p/f980fa282fba
6.小学数学思维导图活动方案.docXX小学数学思维导图活动方案一、活动目的:思维导图是一种图形思维工具,它运用图文并重的技巧,使主题关键词与图像、颜色等建立记忆链接。它能充分运用左右脑的机能,利用记忆、阅读、思维的规律,协助人们在科学与艺术、逻辑与想象之间平衡发展,有效表达发散性思维。通过举办本次活动,使学生了解并学会运用思维导图,锻炼学https://www.renrendoc.com/paper/299485528.html
7.原型设计丫世界和平丫这个作业要求在哪 原型设计 这个作业的目标 学习设计软件,项目模块设计 目录 作业正文 团队成员介绍 结队感受和评价 记录需求分析和方案设计的过程 前期初步设计 登录注册的思维导图 遇到的问题 展示原型效果 作业正文 团队成员介绍 队员1:刘俊,性别男,喜欢玩亚索; 队员2:宋佳豪,性别男,喜欢旅游; 结队感受和评价 本https://www.cnblogs.com/JokerXue/p/14664308.html
8.Unit5Weather(作业设计方案)2023附件2 作业正文(指具体作业内容)设计格式鲁科版(四上)Unit5 Weather主题实践作业【自主实践作业】选择自己有兴趣的一项完成即可。1. 绘制一幅思维导图作品:在网上或其他材料上查找更多关于weather的内容,以本单元所学内容为基础,用你喜欢的方式完成有关天气的思维导图,要求书写规范、图文结合、色彩丰富、结构清晰,找https://m.zxxk.com/soft/45694852.html
9.作业设计方案(通用15篇)为确保事情或工作高质量高水平开展,常常要根据具体情况预先制定方案,方案是阐明具体行动的时间,地点,目的,预期效果,预算及方法等的企划案。那么我们该怎么去写方案呢?以下是小编收集整理的作业设计方案,仅供参考,大家一起来看看吧。 作业设计方案 1 教学目标: 1、https://m.ruiwen.com/shejifangan/7357362.html
10.小学三年级暑假作业设计方案(精选10篇)小学三年级暑假作业设计方案 10 语文学科: 1、用思维导图的形式归纳三年级下册语文生字表并书写。 2、预习四年级上册语文,要求:字词全默,理解意思,熟读课文。 3、课外阅读(坚持每天打卡),要求:写读书笔记。 推荐书目:《汤姆索亚历险记》《鲁宾逊漂流记》《爱的教育》《男生贾里》《女生贾梅》《格列佛游记》。 https://www.yjbys.com/xuexi/shujiazuoye/1777693.html
11.“双减”政策下小学数学作业设计方案(通用12篇)除此之外,数学日记、思维导图、数学游戏、数学魔术等都可以走进我们的作业。设计多样性的课外作业,把数学的“学科知识”变成学生可以感受、操作、体验的“生活状态”。总之,通过精心设计与布置课外作业、及时评价与反馈作业和用心修改与完善作业等措施,在减轻学生作业负担的同时,充分挖掘课外作业的育人功能,达到激发学习兴https://www.unjs.com/fanwenku/294184.html
12.美术寒假作业设计方案(精选14篇)为了确保工作或事情能高效地开展,常常要根据具体情况预先制定方案,方案是阐明具体行动的时间,地点,目的,预期效果,预算及方法等的企划案。那么方案应该怎么制定才合适呢?以下是小编精心整理的美术寒假作业设计方案,仅供参考,欢迎大家阅读。 美术寒假作业设计方案 1 https://m.oh100.com/a/202302/6064825.html
13.小学数学作业分层设计的研究方案张维68170在实施课堂教学的各个环节,教师要积极贯彻落实“双减”政策,增强教师解析教材与设计作业的能力,切实减轻学生作业负担,提高作业质量,充分发挥作业的实效性,实现减负增效目标。 2、探究性原则 数学既是系统的演绎科学,又是一门实验性的归纳科学。抽象是另一种重要的数学思维与学习数学的方式。比如通过思维导图和数学日记https://blog.sina.com.cn/s/blog_14f337837010303r7.html
14.通用技术知识点复习技术是指从人类需求出发,秉持一定的价值理念,运用各种物质及装置、工艺方法、知识技能与经验等,实现一定使用价值的创造性时间活动。技术不仅包含物质手段、工具或方法,还是从技术方案设计转化为生产技术和工程技术的过程。这是一个不断发展创新的过程。 技术是人类文明的重要组成部分,是社会生产力水平的重要标志之一。 https://www.vfuw.cn/news-37075-1.html
15.《优化》教学设计(通用20篇)以知识链接和迁移为依托的思维导图,在历史的联系中感受历史的进步与发展;以乡土资源的挖掘和设计为支撑的文创设计,在对家乡的赞叹中领略家国之美。 《优化》教学设计 10 在提高生物课堂效益的众多途径中,生物教学设计的优化占有举足轻重的地位,具体可从课题导人、课堂提问、实验教学这几个方面来体现优化生物教学的重https://www.yuwenmi.com/jiaoxuesheji/4317240.html
16.初二数学思维导图设计比赛方案教学管理初二数学思维导图比赛方案 1、指导目的: 思维导图是一种图形思维工具,它运用图文并重的技巧,使主题关键词与图像、颜色等建立记忆链接。数学学科思维导图结合本学科的思维规律、记忆规律,实现提高学生学习能力。希望通过本次活动,使学生了解并学会运用思维导图,锻炼学生的发散思维、逻辑思维,帮助学生改进学习方法、提高学https://www.yzwenj.com/jxgl/content_1899
17.双减工作落实情况汇报(通用22篇)学校把提高作业质量为一个课题加以研究,成立作业研究小组,先后出台了《作业管理实施方案》、《作业管理制度》、《作业公示制度》、《作业布置与批改十项要求》、《作业设计十项原则》等质量提升办法,积极实行分层作业,每周五在公示板上公示每个年组、班级的作业,使作业从大水漫灌变为精准浇灌,帮助学生在有限时间内提升https://www.fwsir.com/Article/html/Article_20221022091529_2027002.html
18.基础教育机构信息公开① 开学前,进行单元作业设计各年级的设计内容规划和具体工作要求的制定;利用校本教研组织教师认真研读《小学数学作业设计与实施指南》;在各年级数学教研组长层面布置单元作业设计工作:以各年级“数与代数“领域的单元内容进行单元设计、单元校本作业设计。学期结束形成各年级计算单元教案集和计算单元校本作业集。 https://xxgk.mhedu.sh.cn/fwxxgk/detail.jsp?id=42167
19.四年级上册《角的度量》单元作业设计思维导图模板拓展作业3 拓展作业4 作业成效预分析 如图 37% 0 1 分享模板简介 四年级上册《角的度量》单元作业设计参考资料 小学数学作业设计分享 举报/反馈 猜你喜欢 知识拓展 查看 使用 小学思维导图学习法 60.7k88 官方模板 查看 使用 产品设计方案 41.6k548 官方模板 查看 使用 七年级数学上册有理数 23.9k532 官方模https://www.zhixi.com/tpl/d2a2fa0e40ad55634a4d121fd268643a