Lotus Domino/Notes视野下的并发访问控制 下载本文

内容发布更新时间 : 2024/11/15 3:45:13星期一 下面是文章的全部内容请认真阅读。

Lotus Domino/Notes视野下的并发访问控

摘要:在分布式系统设计开发过程中,保证信息的一致性和多用户访问的并发控制是一个重要内容。为了解决 lotus domino/notes 自身的复制和保存冲突不能完全满足实际并发访问控制的需要,在分析排它锁并发控制模型的基础上,设计了基于 lotus

domino/notes 的文档编辑并发控制模型,并描述其具体实现过程。 关键词:并发访问 访问控制 排它锁 保存冲突 1 引言

一个业务活动在工作流应用系统中由许多环节组成,每一环节都有人参与。对于基于notes的工作流应用系统来说,随流程流动的一般是文档。文档中包含各种信息,若与具体业务相关的简单信息,则可放在表单域(字段)中;而复杂、不容拆分的信息则可作为文档的附件存在。流程各环节的活动拥有者能够对文档进行编辑,同时留下审批痕迹。

只有一个活动拥有者的环节, 用户编辑并保存文档时不会发生保存冲突, 而对有多个活动拥有者的环节来说,则很可能发生文档保存冲突。

图 1 所示是一个典型的办公流程, 流程有四个环节,如果每一环节只有一个活动拥有者,那么随流程一起流动的文档在用户编辑保存时候不会出现保存冲突;然而,在审查环节有多个权力相同的

用户可以对文档进行编辑,例如用户 a 正在编辑文档的时候用户 b 也打开文档进行编辑,那么 a 和 b 各自保存文档的时候就会出现保存冲突。

2 lotus domino/notes 的并发控制与复制冲突

信息不能总集中存放在某一地点或某一台主机上。为了系统管理方便,人们通常理想化地把所有信息集中存放在一个地方,甚至一台主机上,由于系统业务量的增加,信息也以惊人的速度增加,海量的信息常常使网络或者主机系统成为信息处理的瓶颈。分布式处理系统的诞生解决了这些问题,它利用网络上各个节点来分担中央节点的负载。为保证各节点之间协同工作,最大限度地共享信息资源,因此就有了分布式系统的信息同步技术——复制 。 lotus domino/notes是典型的分布式系统,它的体系结构决定了并发控制的复杂性。lotus domino/notes复制技术可以保证分布式数据库的数据同步,支持移动办公,其特性包括双向与端对端复制、字段级、选择性的、可以在后台进行等,所有的复制操作均采用相同的复制机制。

notes采用权限控制的手段尽量避免让多个用户并发修改同一份文档。由于notes的权限控制非常精细,可以指定每份文档的作者(只有文档作者才可编辑它),这样大大减少了多个用户编辑同一份文档的机会。

然而,有些情况下,流程中的某一环节(例如图 1 中的审查环节)有多个活动拥有者,均有权对文档进行编辑。在notes中,出

现这种情况时,只要用户修改的不是该文档的同一个域,系统在同步复制时还是可以进行信息合并的,即系统会自动识别新修改的信息并把它保存下来。如果发生多用户编辑同一份文档的同一个域的情况,为了避免更新数据丢失,系统会根据数据更新的时间与次数判断选出一个更新的文档作为主文档,另一份文档将会作为“保存冲突”文档(答复文档)显示在主文档下面,用户可以决定该数据的取舍。这样就最大限度地保护了并发写操作数据的一致性与完整性,而且不会对分布式系统性能造成不良影响。 3 lotus domino/notes 的排它锁并发控制模型

notes 提供的复制技术通过创建答复文档方式可以解决多用户并发访问的问题,但在某些情况下,这种解决方式也不是所有用户都能接受的。因为从业务角度看,虽然答复文档包含了某一个环节完整的信息,但用户可能并不需要一个主文档带多个答复文档的显示风格,且当下一环节的用户(活动拥有者)编辑文档时,他并不知道应该编辑哪一个文档。在这种应用背景下,notes 的保存冲突的解决方法就不适用了。

在分布式系统中,给信息加锁可解决并发写操作过程中更新数据互相覆盖的问题。为了弥补 notes保存冲突解决方法的不足,达到关系型数据库的并发访问控制效果,本文创建了一个排它锁模型,模拟其在notes环境下的工作情况(如图 2),具体说明如下:

1)用户编辑某一份文档之前,首先向服务器发出编辑申请;