Domino分布式数据库同步复制技术在广东粤华发电有限责任公司的企业信息平台上成功应用

来源:互联网 发布:阿里妈妈淘宝联盟登录 编辑:程序博客网 时间:2024/04/29 13:16

Domino分布式数据库同步复制技术

在广东粤华发电有限责任公司的企业信息平台上成功应用

 

 

、背景概述

随着政府企业上网、电子政务的不断普及和深入,IBM公司的Lotus Domino系统在国内得到广泛的应用。其中不乏大型的、跨地域的企事业单位或集团公司应用案例。这些案例一般采用分布式系统结构,即分布在全国各地的分支机构分别设有独立的数据库服务器,各地数据库服务器采用数据库同步复制的方式更新数据库复本内容。从而使得各地终端用户及时、快捷、可靠地访问到最新公告、新闻等。

本文结合广东粤华发电有限责任公司企业信息平台案例讨论基于IBM公司的Lotus Domino技术构建的分布式数据库之间的同步复制技术。


    
二、 几个概念
    IBM
公司的Lotus产品包含Lotus Domino Server Lotus NotesLotus Domino AdministratorLotus Domino DesignerLotus Domino Server为后台数据库平台,Lotus Notes为客户端,Lotus Domino Administrator为系统管理平台,Lotus Domino Designer设计开发工具。先介绍几个Domino中和同步复制有关的概念。
    1
、复制
    Notes
允许在多个服务器或工作站上保存数据库的多个拷贝,这些拷贝称作复本。它们使各个地方的不同网络上的用户共享相同的信息。复本与文件的拷贝不同之处在于在复制时源文件与其复本具有相同的复本标识符。

复制是在复本之间共享更改信息的过程。复制时,Notes通过把更改信息从一个复本拷贝到另一个复本来更新复本。最终,Notes 使所有复本保持一致。可以选择在复本拷贝之间进行复制,这时两个复本都发送并接收更新信息,或者选择仅从一个复本复制到另一个复本。

也可以定期安排复制,或者根据需要手动进行复制。复制可以在两台服务器之间或者在服务器和工作站之间进行。如果设定为定期进行完整复制,那么 Notes会根据时间使所有复本保持同步。
    2
、复本标识符

复本与源文件或数据库有相同的复本标识符。这是数据库的复本与拷贝的区别所在,因为有共同的标识符才能使复本与源数据库之间可以复制更改信息。如果数据库的两个拷贝具有不同的复本标识符,则不能在它们之间进行复制。

3、复制冲突和保存冲突

在复制之间,如果有两个或多个用户对相同文档的不同复本进行了编辑,就会导致复制冲突。而保存冲突则是在两个或多个用户同时编辑服务器上同一个数据库的同一个文档时发生。当发生复制冲突或保存冲突时,Notes 将在视图页面左边把发生冲突的文档标注出来。
    Notes
对复制冲突的处理是这样的,在两个或多个用户编辑并保存同一个文档之后,下次进行复制时,Notes 将编辑和保存最频繁的文档指定为主文档,而将其他文档显示为主文档的答复文档,并在视图页面左边用一个菱形符号标注出来。如果用户在一个复本中编辑并保存了某文档,然后另一个用户将该文档删除,则认为该文档是被删除的。然而,如果文档被编辑和保存了多次,或者在该文档被删除之后又被另一个用户编辑和保存过,则把编辑过的文档作为主文档。
    Note
对保存冲突的处理如下,当多个用户同时打开相同的文档进行编辑时,Notes指定最先保存的文档为主文档。当另一个用户试图保存同一文档时,Notes 就会提示该用户把它作为保存冲突文档来保存。如果用户这样做了,那么 Notes 将它显示为主文档的答复文档,并在视图页面左边用一个菱形符号标注出来。

根据笔者的经验,在实际开发过程中,我们应该通过设计控制保存冲突,避免文档产生保存冲突的答复文档。对于复制冲突可以设置数据库合并复制冲突,这样如果产生增量改动,服务器在复制过程中会自动合并冲突。需要说明的是,Notes在进行复制时,并不是传统意义上的完全拷贝,而是一系列的规则进行增量的合并。

4、复制类型

Domino中支持四种不同的复制方式

拉入推出:是一个双向过程。此过程进行时,呼叫服务器从响应服务器拉入更新,然后向响应服务器推出自己的更新。使用拉入推出时,呼叫服务器上的 Replicator 任务执行所有的工作。拉入推出是系统缺省的复制方式。

分别拉入:是两个服务器交换更新的双向过程。使用分别拉入时,两个复制器(一个在呼叫服务器上,另一个在响应服务器上)共同进行复制工作。

只推出:是呼叫服务器向响应服务器推出更新的单向过程。单向复制总是比双向复制耗时少。

只拉入:是呼叫服务器从响应服务器拉入更新的单向过程。单向复制总是比双向复制耗时少。

 

 

三、 案例解说

广东粤华发电有限责任公司在此之前已经上了粤电集团统一的OA系统,共享一个人员信息库,且是CS的构架。根据企业的规划,需要在企业信息平台根据提取展现CS版本中的公告信息和各自的邮件内容;其中企业信息平台中的人员信息和CSOA人员是一个包含关系,即人员信息不同步;而企业信息平台是一个BS的架构,同时开发的平台是MS.NET,即架构不一致;现要求在登录企业信息平台后,要求现企业信息平台中的人员和CSOA人员的交集中邮件信息应同步,即要求交集中的信息同步;而不在此交集中的人员则要有各自独立的邮箱,且这些人员不能在现有的CSOA中进行增加,即满足人员相对的独立性。

为了满足这一独特的需求,解决方案中用另外搭架一个用Domino再搭建一个BS版的架构的人员来和企业信息平台的人员进行同步,其中其他很多解决的技术点这里不用阐述,现在就这分布式两台Domino如何进行信息(公告信息和交集的邮件信息)同步进行较详细的说明。

详细步骤如下。

1、系统架构拓补图

其简单拓扑结构如下:



原理解说:图中在Hppp01MAD服务器的人员和WebOasever服务器中的人员是一个属于关系。所以,在hppp01mad服务器的人员的邮件在WebOasever分别对应做了一个邮件复本,进行邮件同步复制,在交集之外的人员单独注册增加,保证WebOasever和企业信息平台的人员的同步。另外在Hppp01MAD服务器的公告信息库同时也在WebOasever服务器上做了一个副本。同时在邮件模板和公告信息库中对设计进行更改来满足和适应CSBS上的兼容性。另外在时间的同步设定上,经过对文件流量的研究暂定为半小时同步复制一次。

2 建立服务器之间的连接

对于两个服务器之间进行的复制,应创建一个连接文档来指定进行信息交换的方式和时间。连接文档存储在“Domino 目录中。一次仅使用一个连接文档来处理每对服务器之间的所有复制。创建不必要的连接文档会增加网络传输量和阻塞。
   
缺省情况下,邮件路由和复制都已被启用,但是可以更改此设置并使用单独的连接文档来安排每项任务。这样,就可以分别控制复制和邮件路由的特定时间、时间范围或重复间隔,并根据需要增加或减小这些设置。

怎么保证服务器之间的连接能顺利的连通?实际上对于物理连接形式Domino并不关心,也就是说物理上无论通过什么连接方式,专线、光纤、X.25、电话拨号等,只要TCP/IP通,简单说只要能Ping通,就能够保证服务器之间顺利连接。

下面给出了建立服务器之间连接的操作步骤和主要参数的设置说明:
A
)在 Domino Administrator 中单击配置附签。
B
)在使用目录域中选择连接服务器的“Domino 目录
C
)单击服务器,然后单击连接
D
)单击添加连接
F
)关键域配置描述:域 输入

源服务器 连接服务器的名称

使用以下端口 连接服务器或源服务器使用的网络端口(或协议)名称

使用优先级 选择一个:“一般”(缺省)“低”

目标服务器 响应服务器的名称

可选网络地址 与所选协议相适应的目标服务器的地址。对于 TCP/IP,应使用完全有效的网络域名称(首选)或 IP 地址。

TCP/IP 或其他需要特定网络地址的协议,建议填写此域。

复制类型 缺省情况下,Domino 的复制方向为“拉入推出”。但根据实际情况,为了平衡服务器之间的负载,充分发挥每个服务器的性能,我们可以设定双方互推或者互拉,本例中我们采用服务器双方互推的方式,即每个服务器上的连接复制类型都是由源服务器向目标服务器推出。

复制文件/目录 如果为空,则服务器将DATA目录下的所有存在复本的数据库全部进行复制,否则填写哪个库系统就复制哪个库。

安排 在安排中可以设置连接时间、重复间隔、每周复制日期等参数。可根据实际情况设定,连接期间每一小时进行同步复制或服务器依据增量自动复制,非连接时间服务器处理其他性能调优动作,如更新数据库索引等。
    H
)保存文档。
    3
、建立数据库复本

连接建立成功以后,保证服务器之间可以进行通讯了,下一步就是对要进行同步的数据库建立复本,当建立了复本以后,通过连接设定就能保证异地各个复本之间的数据完全一致。

这里需要说明的是,我们在第一台服务器上建立了一套数据库系统,对于需要同步复制的所有数据库,在其他服务器上只需要产生他们的复本,而不能再在每台服务器上分别创建相同的数据库。我们这里主要是对交集人员的邮件和公告信息库进行做副本的设置。
    4
复制测试
   
完成以上三步,配置就全部完成,接下来就要测试一下配置是否完全成功以及配置是否生效。我们测试主要包括两个内容:一是测试连接是否成功,能否进行复制动作。二是测试设置的复制安排是否按照预定生效。
    A
)进行第一项测试的办法是在Domino的控制台上,使用Domino的系统命令,进行数据库的推、拉测试,检查复制是否能成功进行,命令格式如下:
   
拉入复制
   
语法:Pull servername [databasename]
   
描述:强制从指定服务器到本地服务器进行单向复制。通过在命令行中包括单个数据库名称,将其从特定服务器单向复制到本地服务器。发起复制的服务器从指定的服务器接受数据,但不能申请将自己的数据复制到其他服务器上。该命令重设在“Domino 目录中预定的任何复制,而强制一台服务器与发起复制的服务器立即进行复制。如果可能,请输入服务器完整的层次结构名称。

   
推出复制
   
语法:Push servername [databasename]
   
描述:强制进行从本地服务器到指定服务器的单向复制。也可以通过在命令行中包括要复制的单个数据库名称,来将其从本地服务器单向复制到特定服务器。发起复制的服务器将数据发送到指定的服务器,但不申请获得数据。该命令可以重设在“Domino 目录中预定的任何复制,而强制一台服务器立即与发起复制的服务器进行复制。如果可能的话,请指定服务器完整的层次结构名称。

    B
)第二项测试通过将连接文档的安排时间设置为两分钟进行一次,同时观察Domino的系统控制台,查看服务器的动作,以确保安排设定生效。正确的结果是从控制台上能看到系统报告复制过程。
   
   
四、 结束语
    
我们同样可以在客户端利用复制技术,例如在本地客户端建立邮件文件数据库的复本,以便与我们在外出或者脱机状态下还可以访问邮件文件。本地复本要求没有在服务器之间进行复制的要求那么高,本地复本的作用体现在通过本地复本,可以在没有通过网络连接服务器时对数据库进行操作。当设置 Notes 为远程工作站时,就可以通过调制解调器呼叫服务器并在本地复本和服务器数据库之间交换更新信息。