CN104462037B - 文档协同编辑中的一致性维护方法 - Google Patents
文档协同编辑中的一致性维护方法 Download PDFInfo
- Publication number
- CN104462037B CN104462037B CN201410613054.5A CN201410613054A CN104462037B CN 104462037 B CN104462037 B CN 104462037B CN 201410613054 A CN201410613054 A CN 201410613054A CN 104462037 B CN104462037 B CN 104462037B
- Authority
- CN
- China
- Prior art keywords
- client
- server
- consistency
- caching
- maintaining method
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种文档协同编辑中的一致性维护方法,包括如下步骤:步骤1、在多人协同编辑的环境下,通过操作转换算法提供对于一致性维护的支持;步骤2、在步骤1的基础上,结合移动环境下的操作转换算法,使得一致性维护方法可以满足异构环境下的要求;步骤3、在步骤2的基础上,利用Node.js的特点,使得一致性维护方法提供并发操作的支持。具有有效利用了服务器的资源和提高了资源的利用率等优点。
Description
技术领域
本发明涉及一种文档协同编辑技术,特别涉及一种文档协同编辑中的一致性维护方法。
背景技术
正在进行的信息革命对传统的生产、生活方式产生了深远的影响。技术的进步和发展使许多原来只能在同一地点进行的高交互性协同活动可以通过由网络连接的协同应用系统在线进行。实时协同广泛采用数据复制技术来隐藏网络延迟、提高响应速度和改善交互体验。在复制式结构中,用户可以无约束地在不同数据副本上进行操作,这必然会引发一致性维护问题。随着网络技术的发展、Web应用的普及以及多种协同终端以不同接入模式的参与,涌现了一大批以Web2.0和移动计算为代表的新型协同应用。这些应用呈现出大规模、动态性、操作复杂性、数据类型多样性等新特性,给实时协同中一致性维护的研究带来了新的技术挑战。
综上所述,数据的一致性维护在协同工作中是十分重要的,而一致性维护的研究已经经过了许多年,在这方面有各种方案被提出来,其中操作转换算法是最高效也是最被大家所认可的一种解决方法。
发明内容
本发明的目的在于克服现有技术的缺点与不足,提供一种文档协同编辑中的一致性维护方法,该一致性维护方法以Node.js平台为基础,利用Node.js的特点构建高并发高响应性的一致性维护方法;该一致性维护系统在传统操作转换算法的基础上加入了适用于移动网络环境下的操作转换算法,通过中间层来调度操作转换算法,使得该发明可以适用于异构网络环境下的一致性维护。
本发明的目的通过下述技术方案实现:一种文档协同编辑中的一致性维护方法,包括以下步骤:
步骤1、利用传统操作转换算法构建一个基于操作转换的一致性维护框架。可以将文本内容修改转成以下3种类型的操作:retain(n)---保持n个字符,也就是说这n个字符不变;insert(str)---插入字符str;delete(str)---删除字符str;假设用户为两个人,一个为Alice,另一个为Tom,初始字符串为hello.o world.o,具体示例可以如下:
用户Alice的操作执行情况如下:当操作O2到达Alice的站点时,如果该操作直接在当前副本执行,Alice的Makefile中,该片段将被修改为:foo.o hebar.o llo.oworld.o,由于Alice之前已经执行了操作O1,当Alice执行操作O2时,O2操作的上下文已经不是它产生时的上下文,因此直接在当前的上下文下执行操作O2会产生错误的结果。在这个场景中,Alice需要将O2转换成O2’,使O2’可以在当前的文档状态“foo.o hello.oworld.o”上正确执行。因为O1在O2的插入位置之前插入了一个长度为6的字符串“foo.o”,所以需要将O2的插入位置右移6个操作位置来包含O1已经执行操作O1的操作效果,得到O2’=ins(14,“bar.o”)。这时,在Alice的当前状态“foo.o hello.o world.o”上执行O2’得到:foo.o hello.o bar.o world.o。对于用户Tom来说,当收到操作O1后,O1可以直接按其原始形式即ins(0,”foo.o”)正确地执行,因为此时O1的操作位置不受操作O2的影响。在Tom当前状态“hello.o bar.o world.o”上执行操作O1后也可以得到:foo.o hello.o bar.oworld.o。这样,Alice和Tom协同编写的程序片段的一致性得到了维护。操作转换就是通过这种方式对并发的操作进行转换,使得最后文本达到一致。在操作转换算法中,操作之间有几种不同的关系:上下文等价关系,上下文串行关系,上下文可比关系和效果等价关系。操作转换算法通过判断两个操作之间的关系来进行相应的操作转换,来使得两个操作可以在相互的文档中进行操作。对于上下文等价的两个操作,操作转换算法会把其中一个操作在另一个操作的基础上进行转换,然后在作用于产生前一个操作的文档中;对于上下文串行的操作只需要把后发生的操作作用在先发生的操作之后就可以了;对于上下文可比的两个操作,需要先把两个操作转换成上下文等价的状态,然后根据上下文等价状态下的操作转换算法进行转换;对于效果等价的两个操作就不需要执行任何操作就可以了。
基于操作转换的一致性维护架构如图1所示,主要包括客户端、服务器端、客户端操作缓存、服务器接受的操作缓存、服务器要发送的操作缓存等几个部分,整体流程包括以下的a、b、c和d四个步骤:
a.客户端每个时间间隔会与服务器进行同步,在这个时间间隔内客户端产生的操作会保存在客户端的操作缓存中。
b.客户端与服务器端进行同步时,会接受服务器端要发送的操作缓存中的操作并且与本地客户端操作缓存中的操作进行相互转换,然后对文档进行服务器端发送的操作缓存中操作并且把转换后的客户端缓存操作发送给服务器端。
c.服务器每隔一定时间会处理客户端发送过来的保存在服务器端接受的操作缓存中的操作。
d.处理客户端发送过来的操作时,服务器会把服务器端接受的操作缓存和服务器端要发送的操作缓存中的操作合并并且放在服务器端要发送的操作缓存中。因此该框架能够很好的适应传统协同环境下的一致性维护问题;
步骤2、为了支持异构环境下的一致性维护,本发明在传统操作转换的基础上考虑了移动环境下的网络特点,结合适用于移动环境的操作转换算法,提出了一种可以适应异构网络环境的一致性维护算法。
由于移动环境中移动设备的电量有限,所以为了保证用户的实用性,无法保证客户端与服务器端的持续连接,所以传统的操作转换算法并不适用于这种环境下。在移动环境下,需要把用户的本地操作保存在客户端,然后在更长的一个时间间隔后与服务器端的操作进行合并转换,合并的过程并不是按照一个个操作进行合并,而是根据操作序列进行转换,每个序列也具有说明(1)中的几种关系,操作转换算法也是根据判断每个序列之间的关系进行相应的操作转换。在服务器端会维护两种环境下的操作,然后根据判断不同的客户端来进行相应的操作转换算法;
支持异构环境一致性维护的架构如图2,其中中间操作转换层负责针对不同的网络环境选择不同的操作转换算法进行一致性维护,使得异构环境下的数据保存一致。中间层判断不同客户端是通过判断http请求头中的userAgent字段来判断是来自移动客户端的请求还是来自PC客户端的请求。UserAgent记录了不同浏览器的版本信息,每个版本的浏览器UserAgent是不一样的,而移动浏览器和PC浏览器在这个字段上的值也是不一样的,所以可以根据这个字段来进行判断进而选择不同的操作转换算法;
步骤3、在上述的基础上,为了提高服务器的响应能力,本发明在客户端与服务器端加入了一层负载均衡层,以充分利用服务器资源。Node.js负载均衡架构如图3所示。在这一层中,负载均衡服务器会接受所有来自客户端的请求,然后根据集群中每个服务器的负载情况选择最优的路由路径来进行转发,并且实时更新各个服务器上的负载情况,以实现负载均衡的功能。系统采用DNS轮询的方式来进行负载均衡,DNS轮询是最简单的负载均衡方式。以域名作为访问入口,通过配置多条DNS A记录使得请求可以分配到不同的服务器。
在步骤3中,利用Node.js基于事件驱动的特点,通过事件轮询的机制带来的实时性的支持,对人力资源管理系统服务器端进行搭建和开发;所述Node.js具有高响应性,高并发性的特点,可以充分利用服务器资源提供可伸缩快速的服务。在Node.js中,所有的异步操作都不会阻塞用户的请求,这样可以使得用户的请求获得快速的响应并且不会阻塞其他用户的请求,通过非阻塞I/O模型可以使得I/O操作不再像传统I/O操作那样影响用户的响应,使得I/O操作变得更加高效和轻量。
本发明的工作原理:本发明在实现传统基于操作转换的数据一致性维护方法基础上,结合适用于移动环境下的操作转换算法,利用Node.js的特点,通过事件驱动的编程模型来构建高并发性高响应的数据一致性维护方法,同时可以适用于异构环境下的一致性维护问题。
本发明相对于现有技术具有如下的优点及效果:
1、利用传统操作转换算法实现了基本的数据一致性维护功能。
2、在传统操作转换算法的基础上加入了适用于移动网络环境下的操作转换算法,通过中间层来调度操作转换算法,使得该发明可以适用于异构网络环境下的一致性维护。
3、由于Node.js非阻塞I/O的特点和事件驱动的特点,基于Node.js的人力资源管理系统比传统的系统具有更好的高并发性和数据处理能力,通过异步I/O来使得密集的I/O操作不会影响后续请求的处理,提供多用户情况下的响应速度。利用node.js来加入负载均衡层,进而提高系统的整体响应速度和处理能力。
4、本发明实现了对共享文档协同编辑的支持,支持多人高并发的操作;基于Node.js服务器端框架,使得这个方法支持实时多人高并发操作,并且可以有效利用服务器的资源,提高资源的利用率。本发明通过结合两种操作转换算法对一致性维护方法进行改进,使得一致性维护方法可以使用于异构环境中并且有更好实时性以及高响应性。
附图说明
图1是基于操作转换的一致性维护架构图。
图2是支持异构环境一致性维护的架构图。
图3是Node.js负载均衡架构图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例
本发明包括对传统操作转换算法的实现和基于移动环境的改进的操作转换算法以及基于操作转换一致性维护方法的设计和实现。所述的基于移动环境的改进的操作转换算法,是让文档协同编辑支持移动异构网络中的一致性维护,以及增加用户在移动环境中进行文档协同编辑时的准确率。所述的基于操作转换一致性维护方法的设计和实现,即基于改进的操作转换算法的一致性维护方法的实现,设计基于B/S结构的文档编辑工具。
如图1所示,该框架可以支持异构环境下的操作转换算法。首先,客户端每个时间间隔会与服务器进行同步,在这个时间间隔内客户端产生的操作会保存在客户端的操作缓存中。然后,客户端与服务器端进行同步时,会接受服务器端要发送的操作缓存中的操作并且与本地客户端操作缓存中的操作进行相互转换,然后对文档进行服务器端发送的操作缓存中操作并且把转换后的客户端缓存操作发送给服务器端。同时,服务器每隔一定时间会处理客户端发送过来的保存在服务器端接受的操作缓存中的操作。处理客户端发送过来的操作时,服务器会把服务器端接受的操作缓存和服务器端要发送的操作缓存中的操作合并并且放在服务器端要发送的操作缓存中。因此该框架能够很好的适应传统协同环境下的一致性维护问题。
对于不同网络环境下操作转换算法的切换,本方法是通过在中间层加入一个网络检测层,根据检测的结果采用不同的操作转换算法,同时对于接受到的操作序列采用不同的处理方式,如果是移动环境下,就根据操作序列为单位进行操作转换,如果是正常网络环境下,就根据操作为单位进行操作转换。
本发明公开了文档协同编辑中一致性维护的实现方法,该方法实现了基于改进的操作转换算法的一致性维护。本发明是将两种操作转换相结合提供了异构网络环境下的一致性维护的支持,具有能从更根本的层次上广泛、快速、有效地实现文档一致性维护等优点。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (4)
1.一种文档协同编辑中的一致性维护方法,其特征在于,包括如下步骤:
步骤1、在多人协同编辑的环境下,通过操作转换算法提供对于一致性维护的支持;
步骤2、在步骤1的基础上,结合移动环境下的操作转换算法,使得一致性维护方法可以满足异构环境下的要求;
步骤3、在步骤2的基础上,利用Node.js的特点,使得一致性维护方法提供并发操作的支持;
步骤1基于操作转换的一致性维护架构,所述一致性维护架构包括客户端、服务器端、客户端操作缓存、服务器接受的操作缓存、服务器要发送的操作缓存几个部分,整体流程包括以下的a、b、c和d四个步骤:
a.客户端每个时间间隔会与服务器进行同步,在这个时间间隔内客户端产生的操作会保存在客户端的操作缓存中;
b.客户端与服务器端进行同步时,会接受服务器端要发送的操作缓存中的操作并且与客户端操作缓存中的操作进行相互转换,然后对文档进行服务器端发送的操作缓存中的操作并且把转换后的客户端缓存操作发送给服务器端;
c.服务器每隔一定时间会处理客户端发送过来的保存在服务器端接受的操作缓存中的操作;
d.处理客户端发送过来的操作时,服务器会把服务器端接受的操作缓存和服务器端要发送的操作缓存中的操作合并并且放在服务器端要发送的操作缓存中。
2.根据权利要求1所述的文档协同编辑中的一致性维护方法,其特征在于:在步骤1中,利用传统操作转换算法提供对于数据一致性维护的支持;操作转换技术以其无锁、细粒度的乐观并发控制特性,成为特别适合此类协同应用系统的一致性维护方法。
3.根据权利要求2所述的文档协同编辑中的一致性维护方法,其特征在于:通过加入移动设备的情况下的网络环境特性,结合适用于移动环境的操作转换算法使得一致性维护方法使用在移动环境中,通过整合传统操作转换算法和适用于移动环境下的操作转换算法构建一个适用于异构环境下的操作转换算法。
4.根据权利要求1所述的文档协同编辑中的一致性维护方法,其特征在于:在步骤3中,利用Node.js基于事件驱动的特点,通过事件轮询的机制带来的实时性的支持,对人力资源管理系统服务器端进行搭建和开发;所述Node.js利用服务器资源提供可伸缩快速的服务,在Node.js中,所有的异步操作都不会阻塞用户的请求,用户的请求能获得快速的响应并且不会阻塞其他用户的请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410613054.5A CN104462037B (zh) | 2014-11-04 | 2014-11-04 | 文档协同编辑中的一致性维护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410613054.5A CN104462037B (zh) | 2014-11-04 | 2014-11-04 | 文档协同编辑中的一致性维护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104462037A CN104462037A (zh) | 2015-03-25 |
CN104462037B true CN104462037B (zh) | 2017-09-26 |
Family
ID=52908109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410613054.5A Active CN104462037B (zh) | 2014-11-04 | 2014-11-04 | 文档协同编辑中的一致性维护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104462037B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10063603B2 (en) | 2014-12-11 | 2018-08-28 | Liveloop, Inc | Method and system for concurrent collaborative undo operations in computer application software |
WO2016094856A1 (en) | 2014-12-11 | 2016-06-16 | LiveLoop, Inc. | Blended operational transformation for multi-user collaborative applications |
CN105808517B (zh) * | 2016-03-08 | 2018-03-02 | 武汉大学 | 一种操作包围盒的协同编辑一致性维护方法 |
CN105955828B (zh) * | 2016-04-18 | 2019-01-29 | 武汉大学 | 一种支持字符串操作的实时协同编辑一致性维护方法 |
CN106127065B (zh) * | 2016-06-15 | 2018-11-30 | 实创时新(北京)科技有限公司 | 一种用于在线协同编辑服务的数据变换方法和系统 |
CN107943777B (zh) * | 2017-12-14 | 2021-07-06 | 北京久蓉科技有限公司 | 一种协同编辑、协同处理方法、装置、设备及存储介质 |
CN109343841B (zh) * | 2018-10-15 | 2021-08-13 | 上海理工大学 | 实时协同编程环境下的语义冲突消解方法 |
CN114970471B (zh) * | 2022-08-02 | 2022-10-21 | 上海有孚智数云创数字科技有限公司 | 检查协同编辑文档一致性的方法、系统、设备以及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425630A (zh) * | 2012-11-30 | 2013-12-04 | 上海理工大学 | 协同系统构架及其一致性维护方法 |
CN104077425A (zh) * | 2014-07-28 | 2014-10-01 | 武汉大学 | 一种基于操作转换的文本编辑实时协同方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9747582B2 (en) * | 2013-03-12 | 2017-08-29 | Dropbox, Inc. | Implementing a consistent ordering of operations in collaborative editing of shared content items |
-
2014
- 2014-11-04 CN CN201410613054.5A patent/CN104462037B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425630A (zh) * | 2012-11-30 | 2013-12-04 | 上海理工大学 | 协同系统构架及其一致性维护方法 |
CN104077425A (zh) * | 2014-07-28 | 2014-10-01 | 武汉大学 | 一种基于操作转换的文本编辑实时协同方法 |
Non-Patent Citations (3)
Title |
---|
An Admissibility-Based Operational Transformation Framework for Collaborative Editing Systems;Du Li and Rui Li;《Computer Supported Cooperative Work (2010)》;20091231;第19卷;第1-43页 * |
Concurrent Operations in a Distributed and Mobile Collaborative Environment;Maher Suleiman et al.;《Data Engineering,1988.Processings, 14th Internation Conference on》;19980223;第4.2节,第7节 * |
Node.js: Using JavaScript to Build High-Performance Network Programs;Stefan Tilkov et al.;《IEEE INTERNET COMPUTING》;20101231;第81页第1栏第11-33行,第82页第1栏第20-第3栏第29行 * |
Also Published As
Publication number | Publication date |
---|---|
CN104462037A (zh) | 2015-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104462037B (zh) | 文档协同编辑中的一致性维护方法 | |
Das et al. | Big data analytics: A framework for unstructured data analysis | |
Wang | Cloud-dew architecture | |
Xu | Cloud-sea computing systems: Towards thousand-fold improvement in performance per watt for the coming zettabyte era | |
CN104391868B (zh) | 动态页面静态化的装置和方法 | |
CN106657314A (zh) | 跨数据中心数据同步系统及方法 | |
Kovachev et al. | Building mobile multimedia services: a hybrid cloud computing approach | |
US10540386B2 (en) | Method for processing and displaying real-time social data on map | |
Wang et al. | Intelligent edge learning for personalized crowdsourced livecast: Challenges, opportunities, and solutions | |
Xia et al. | A partial replication approach for anywhere anytime mobile commenting | |
Wang et al. | Social-aware video delivery: Challenges, approaches, and directions | |
Mangler et al. | On the origin of services using riddl for description, evolution and composition of restful services | |
Vigfusson et al. | Clouds at the crossroads: research perspectives | |
Cherif et al. | Adaptable web service registry for publishing context aware service composition | |
Mohan et al. | Mobile network-aware social computing applications: a framework, architecture, and analysis | |
Baydeti et al. | Scalable Models for Redundant Data Flow Analysis in Online Social Networks | |
CN103729412A (zh) | 适用于大规模文献集群移动数字出版的系统和方法 | |
Xiao et al. | A dynamic web page adaptation for mobile device based on web2. 0 | |
Liu et al. | Development of a runtime infrastructure for large-scale distributed simulations | |
Xiao et al. | Web Page Adaptation for Small Screen Mobile Device: A New P2P Collaborative Deployment Approach | |
Hsieh et al. | Web 2.0 toolbar: Providing web 2.0 services for existence web pages | |
Aneiros et al. | Foundations of unconstrained collaborative web browsing with awareness | |
David et al. | Internet as a medium of communication in modern Society | |
CN105979389A (zh) | 一种在电视上发送微博的方法和电视机 | |
Fernández-Sorribes et al. | Grid Architecture for Distributed Rendering. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |