基于传统群件Lotus Domlno的分布式解决方案

2016-10-13 10:42倪时龙彭巍林振天吴飞许双成
电子设计工程 2016年10期
关键词:文档分布式调度

倪时龙,彭巍,林振天,吴飞,许双成

(1.福建亿榕信息技术有限公司福建福州350003;2.国网上海市电力公司信息通信公司上海200436;3.国网福建省电力有限公司福建福州350003)

基于传统群件Lotus Domlno的分布式解决方案

倪时龙1,彭巍2,林振天1,吴飞3,许双成1

(1.福建亿榕信息技术有限公司福建福州350003;2.国网上海市电力公司信息通信公司上海200436;3.国网福建省电力有限公司福建福州350003)

Lotus Domino是优秀的办公电子协作平台,具有独特的安全特性和快速开发等特征。被广泛运用于政府和企业

的办公自动化和邮件系统。但由于使用的是文档型数据库,随着数据量增长,性能会急剧下降;且它的数据库、Web服

务器、应用服务器均耦合集成,不易扩展,在大型系统的应用上有很大的局限。随着信息化的发展,政府企业都开始

集约化方向发展,希望建立集中式的数据中心。Lotus Domino在大型应用系统上的发展遭遇瓶颈。通过运用分布式的思想对Lotus Domino进行包装改造,建设可扩展的副本和分片机制,建设统一的数据索引中心与调度中,将数据与负载动态平摊于多个Domino服务器节点间。通过国家电网协同办公一级部署系统的运行实践表明,创新的分布式架构让Domino平台充分发挥其优势情况下又规避了它在负载能力上的不足。

分布式系统;群件;协同办公;Lotus Domino

分布式软件系统(Distributed Software Systems)是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,类似一个系统[1]。系统拥有多种通用的逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换[2]。

Lotus Domino是集成Web服务器、系统设计、目录、权限管理、数据库为一体的群件平台。数据采用文档型数据库,以NSF数据库为数据存储载体,数据库本身不带有锁和事务机制,在做分布式改造上有较大的优势[3]。但数据、设计与服务耦合度太高,需要先进行适当拆解,方可实现分布式的改造[4]。分布式数据存储需要有统一的数据访问方式对集中的数据进行统一的访问[5_6]。分布式计算需要任务的合理调度分配服务,保障多个节点沟通流畅,协同工作。

1 架构概述

整体分布式架构分为:数据/计算节点群、配置中心、数据索引中心和调度转向中心,如图1所示。

数据/计算节点群是分布式存储和分布式计算的基本构成,由Domino节点改造后构成,总体采用副本+分片的结构,负责存储数据和做业务逻辑功能计算,同时承担横向的调度转向;配置中心是为实现配置的统一,将系统中的配置进行集中管理和集中访问,由Domino节点集群构成;数据索引中心是分散数据的统一访问的关键,保存了所有数据的元数据索引,基于Lucene框架开发,借助了搜索引擎的倒排索引技术,确保大数据量的快速检索,分散的数据节点中数据发生改变时实时发起同步,将元数据同步到数据索引中心;调度转向,采用反向代理技术负责对分散的节点提供系统统一的访问入口,整个分布式节点的调度由两方面构成:纵向的副本节点调度由反向代理负责j横向的分片节点调度创建过程由计算几点内的调度模块负责,其余读写调度过程由数据中心指引。

通过调度、索引中心和配置中心的分工配合,实现对数据计算节点群的统一访问和统一管理。系统的数据计算节点可根据实际需要动态扩展,系统各组成部分均进行了高可用建设,消除了系统的单点故障。系统中的数据存储和业务逻辑计算的主体仍存在于Domino节点内,可以保持原系统的数据存储结构与业务计算逻辑,所以这种分布式的方案是可延续的方案,保护了历史积累和投资。

图1 日志系统核心框架图

2 Domlno改造

传统Domino平台提供的使用方式,是高度耦合了Web服务器、业务数据、配置数据、非结构化数据和代码逻辑的服务器平台。为实现分布式的拆分,需对Domino进行梳理和拆分改造。在整个方案中,Domino承担了两种角色,一是数据计算节点(Domino应用服务器),另一是配置中心节点(Domino配置服务器)。本节具体阐述应用服务器,配置服务器在数据中心一节详细说明。

Domino应用服务器是整个系统中主要的数据存储节点和逻辑计算的节点群。负责业务数据、海量数据存放;核心业务功能的实现;数据的创建、更新和删除;与数据索引中心同步数据。Domino采用副本+分片的结构,副本与分片可以根据业务的需要动态扩展。副本间采用Domino自带的复制技术,数据分片策略可根据实际需要通过配置实现规划或者采用Hash算法进行分配,本方案采用随机数的Hash算法进行分配。在将Domino承担应用服务器前还需要对Domino进行设计分离、配置分离、自动分库和内部调度等改造。最后根据改造后的设计规划系统的构成。

2.1设计分离

传统Domino的协同办公系统采用设计及数据集中存放在统一的NSF数据库中。分布式需要对数据拆分,但耦合的设计和数据,导致拆分后设计也随之分散,不仅不便于管理而且容易出现不同步的情况。需要对设计和数据进行分离。Domino 的Http访问文档,由内部的转换机制完成对文档和表单到Http页面的转换,内部转换过程包装在平台内不可能改变,需要使用创新的技巧绕过传统的设计。

Domino的数据访问载体为Domino表单,但Domino表单由于平台限制只能访问本数据库的数据,Domino表单的机制是数据与设计耦合的关键。利用Domino代理的方式实现保存、提交的操作,取代Domino自带的表单保存、提交功能。Domino代理的操作需要使用指定数据路径的跨库数据访问替代本库数据访问的方式。数据库设计与数据分离的核心是解决分离后文档打开、文档保存和文档业务操作。

改造后的文档打开过程,执行主表单打开(OpenForm)替代传统的文档打开方式(OpenDocument),改造本库访问数据的方式,业务处理逻辑转为由主表单打开代理进行计算,计算过程的数据访问通过数据路径进行跨库的访问,过程如图2所示。

图2 数据打开过程

文档保存过程通过文档提交前,在提交前通过脚本修改网页表单提交的Action路径,改变指向主表单的提交请求为指向保存代理。将业务逻辑转移到主表单保存代理中进行处理,如图3所示。

2.2自动分库

Domino服务器不适应单个数据库的数据量过大,但单台服务器上的数据库数量却没有明显的限制。所以数据库增长到一定程度,应进行静态处理,新增新的数据库进行替代,防止数据不间断的增长。这个过程的自动完成,称为自动分库。Domino平台单个文档数据库数据量太大,会导致查询效率降低,协同办公业务模块物理文档可以通过系统动态分库技术实现文档数据库大小处于合理水平,从而提高系统性能。

图3 数据保存过程

图4 自动分库原理

可按文档数量或数据库大小控制Domino数据库的分库。为了控制每个数据库的大小,当数据库到达阈值时数据库中不再新增文档。会继续增加文档的数据库称为动态库,不再增加文档的数据库称为静态库。为了分散单个数据库的承载压力,可以配置多个动态库及静态库。新建文档时随机在多个动态库选择一个创建文档,如果大量并发对一个数据库进行写操作,系统性能会受单个数据库性能的瓶颈影响,且易造成数据库损坏,通过多个动态库来分摊这种压力,可有效避免类似问题。静态库不再新增文档,只用于查询历史的数据。自动分库通过数据分散存储和请求的分摊成功解决了系统性能问题。

2.3多库调度

整体分布式的机制,是希望在多台服务器间进行分布,但为了充分利用资源,在单台服务器内部也需要进行多个数据库的改造,实现在多个数据库内的合理分布和动态扩展。首先对一些概念进行定义:

活动库:会继续新增新公文的数据库称为活动库。自动分库就是创建一个新库替换旧的活动库作为活动库。

多库分摊:一个模块同时启用多个活动库,新建公文时应用从多个活动库中随机选择一个在其中创建公文。(如果大量并发的访问一个数据库,系统性能会单个数据库性能的瓶颈影响,且易造成数据库损坏。)

自动分库+多库分摊:维护一个活动库的列表,当其中某个数据库达到设定的大小(或文档数量)时,自动创建一个数据库替换该库,同时更新活动库列表。

多库负载内部调度:

1)在数据新增请求时,在维护的数据库活动库列表中随机(或者按某种策略)在其中一个数据库中新增文档。

2)在数据处理请求时,根据数据中记录的所在库和UNID定位找到相应的数据库和数据文档进行处理。

3)在数据访问请求时,通数据处理请求相似,根据数据库索引中维护的数据所在库与UNID定位到相应的数据后再进行访问。

图5 多库调度原理

2.4总体目录结构

通过改造将传统的偶尔结构转成独立结构。为分布式改造打下基础。

图6 Domino总体改造

Domino应用服务器除了外层目录(names.nsf库)外,内层共包含5个目录,服务器内部目录结构如图7所示。

总目录coa:所有系统相关数据库和目录存放在coa目录下。

设计数据库目录src:存放设计的数据库目录,不存放数据。Src目录下还存在一个core的二级目录,用于存放核心封装代码的数据库。设计仅运行,也不直接更新。设计由配置服务器统一管理,再推送过来。Domino应用服务器仅接受更新即可。

文档数据库目录doc:存放各模块文档数据,每个模块各自存放。支持按策略自动分库和多库负载。分散在多个数据库的数据集中到Orac1e统一视图中进行管理。

海量数据库目录mss:存放正文附件等非结构数据的海量数据库,与文档数据库相同机制,支持自动分库。

配置数据库目录cfg:存放配置的数据库目录,配置只读不提供更新。配置的更新由统一服务器管理,再推送过来。与设计的管理模式类似。

临时数据库目录tmp:存放临时数据的数据库,数据库的历史数据直接清除,数据量稳定。

图7 总体目录结构

3 数据索引中心

分散的Domino数据计算节点,分摊了数据存储压力和业务计算压力,但同时也带来了分散数据在访问上的困难。为了解决数据的统一访问问题设计了数据索引中心。通过集中所有数据的元数据与权限数据信息,提供了数据的统一访问能力。在数据索引中心的设计上,为了保障大数据量的快速数据检索访问,引进了开源的索引管理框架Lucene,借鉴了搜索引擎的倒排索引技术。数据的同步由Domino数据节点发起,数据索引中心负责管理,并提高统一的数据访问服务。

3.1Lucene的应用

Lucene是一套索引管理和检索的开源程式库,是当前以及最近几年最受欢迎的免费Java信息检索程序库,通常用于全文检索,但在数据管理功能上适合于作为本系统的数据索引中心。Lucene为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现检索的功能,或者是以此为基础建立起完整的检索引擎。

本方案中通过设计Search服务,对Lucene进行封装,设计了系统内自定义的XML和JOSN格式。实现了数据索引管理和搜索服务功能。

3.2倒排序索引

倒排索引(inverted index),也常被称为反向索引、植入档案或反向档案,是一种索引方法,被用来存储在在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted fi1e)。

引入这种索引技术是由于,系统中数据量大且带有大量的权限信息,采用传统的关系型数据库需要进行多张大表的关联查询,性能无法保证。

图8 Lucene结构

4 调度分配

从用户角度分布式的系统是一个完整的整体。分布式的Domino数据和计算节点,需要自动的调度和分配策略,进行统一管理。数据域计算节点的数量,数据存储的具体位置和逻辑计算具体执行的节点对于用户均是透明的。为了实现统一的访问,系统引入了Nginx反向代理,反向代理同事承担了纵向的调度,故障的切换等。另一部分的调度服务分散与Domino的数据计算节点内,在调度计算完成后,根据计算结果进行节点跳转。

4.1反向代理

由于Domino本身是Web服务器,分布式的Domino服务器将Web服务器在HTTP访问级别就进行了分散,为了实现分散后的统一访问,引进了反向代理的技术。同时前置的反向代理也可以提供纵向的调度管理作用。

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

反向代理的选择上,本方案选用了开源的Nginx服务器,Nginx是一个高性能的HTTP和反向代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

通过对URL中的PATH的首段进行改造,加入数据库组标识进行对后端服务器的区分。例如使用反向代理前的URL地址为:http://HOST/PATH?Query

若不进行改造,则需要使用不同的HOST进行区分不同的服务器。改造后的URL格式为:

http://HOST/PROXYPATH/PATH?Query

通过不同的PROXYPATH标识不同的服务器,达到统一HOST域名的目的。PROXYPATH目前取值共有以下几种:Ser*:*为数字,表示节点群内第几对Domino服务器。(例如:Ser1表示第一对)

App:表示节点群内所有服务器内随机。

Ser**:第一个*为数字,第二个星为字母,表示节点群的第几台服务器。(例如:Ser1a表示第一对内的第一台)

Cfg:表示访问配置中心服务器。

4.2服务调度

由于Domino的分布式结构有副本和分片两种情况,所以在调度上也存在横向调度和纵向调度两种。纵向调度对应副本,由于数据和设计完全一致,纵向的调度只需要做随机分发即可,但需要考虑服务器的失效转移问题。但副本中有节点发生故障时,就仅将请求分发到副本集中正常的节点上,单节点故障对于用户透明。横向调度对应分片,是将请求和任务进行分布式处理的关键。为了避免横向调度的负载过高和单点故障,将横向调度逻辑放置在数据和计算节点群内,首先由反向代理随机选取一对节点进行调度计算,调度计算后转向制定的服务器。本方案的调度算法采用最简单的随机算法来进行任务分发。

5 配置中心

分布式的软件系统,分散的配置信息会导致管理困难和配置的不同步等问题。通常需要对配置进行集中,建立统一的配置中心。系统配置的新增和修改均有配置中心完成。由于Domino服务器的特殊性,跨服务器的访问存在安全隐患,所以由配置中心进行配置的推送。

5.1配置信息组织

根据配置的特征分类,总体分为:

1)适用所有的全局的配置;2)针对个人个性的个人配置;3)针对单位的,单位级配置;4)针对服务器的,需要为每个服务器分别配置的配置分类。

开发过程梳理逐步梳理所有的配置,将配置填充到上图的配置树中的相应位置。上图的配置树中存在四项总配置,可以在确定需求后提取低级别的总配置到高级别的总体配置中。

5.2推送机制

统一配置服务器包括所有单位各个数据库的配置信息。例如:业务配置库,传统Domino应用方式每个单位都有各自的配置库,分布式改造后,所有业务的配置信息集中在一个配置库中,通过单位代码和模块ID进行区分。系统管理库改造后拆分成业务配置库、用户定制库、组织配置库和流程配置库等。各个Domino应用服务器的names库、配置数据通过Domino服务器自带的复制机制实现与统一配置库的单向同步。

图9 Domino服务器

6 应用实践

国家电网协同办公一级部署系统,将原先全国二十几个省和三十几个直属单位共2412家单位分散的协同办公系统进行集中的建设,用户量达五十几万,最高在线用户在十五万以上。系统的负载和并发增长了数十倍。由于历史的技术积累和投资保护的原因,不应抛弃Domino平台的使用,故对Domino采用了分布式的改造和包装。目前已投入生产使用,分布式节点已超过700(采用虚拟机),系统运行稳定,性能优异。

7 结束语

本文针对技术积累和历史使用悠久的传统Lotus Domino平台在高并发高负载和大数据量下出现的瓶颈,进行系统特征的分析。通过集成基于倒排序索引的Lucene和反向代理Nginx实现了创新的分布式改造和包装。设计了具有群件特殊的分布式协同办公系统。并在国家电网协同办公一级部署系统的实践中得到良好的应用,证明了方案的可行性和优越性。

[1]刘立骐,田华,许维胜,等.CSCW研究理论及应用[J].信息与控制,1998,27(3):190_196.

[2]倪悦,范玉顺.基于Web的知识管理系统应用研究[C]//2005亚洲国际过程自动化技术与装备展览会论文集,2005.

[3]周晓庆.知识管理系统和CIMS系统的构建与设计[J].计算机应用,2005,25(9):2054_2056.

[4]刘益剑.基于Web的办公自动化系统软件开发[J].南京师范大学学报:工程技术版,2005(2):11.

[5]范玉顺,吴澄.基于工作流的CIMS应用集成支持系统研究[J].计算机工程与应用,2000,36(2):6_11.

[6]黄兰,余阳,李长森,等.XForm在工作流管理系统中的应用研究[J].计算机工程与应用,2007,43(6):81_84.

To solVe the tradltlonal dlstrlbuted grouPWare Lotus scheme based on Domlno

NI Shi_1ong1,PENG Wei2,LIN Zhen_tian1,WU Fei3,XU Shuang_cheng1
(1.Fujian Yirong Information Technology Co.Ltd.,Fuzhou 350003,China;2.Shanghai Power Company Information Communications Company,Shanghai 200436,China;3.State Grid Fujian Electric Power Company,Fuzhou 350003,China)

Domino Lotus is a good office e1ectronic co11aboration p1atform,with unique security features and rapid deve1opment and other characteristics.Wide1y used in government and enterprise office automation and mai1 system.But due to the use of document database,with the increase of the amount of data performance wi11 be a sharp dec1inej and its database,web server,app1ication server are coup1ed integration,not easy to expand,in the app1ication of 1arge system have great 1imitations.With the deve1opment of information techno1ogy,government enterprises are beginning to deve1op intensive,hoping to estab1ish centra1-ized data center..The deve1opment of Domino Lotus in the 1arge sca1e app1ication system has encountered the bott1eneck.By using the idea of distributed packaging transformation of Lotus Domino,the construction of sca1ab1e copy and distribution mechanism,construction of a unified data index center and schedu1ing,data and dynamic 1oad equa11y in mu1tip1e Domino server nodes.Through the nationa1 grid co11aborative office 1eve1 dep1oyment system operation practice shows that,innovative distributed architecture for domino p1atform give fu11 p1ay to its advantages and avoid the it in the 1oad capacity prob1ems.

distributed systemj groupwarej co11aborative officej Lotus Domino

TN319

A

1674_6236(2016)10_0100_05

2015_06_02稿件编号:201506026

倪时龙(1977—),男,福建平潭人,硕士研究生。研究方向:信息管理与信息系统。

猜你喜欢
文档分布式调度
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
《调度集中系统(CTC)/列车调度指挥系统(TDCS)维护手册》正式出版
基于强化学习的时间触发通信调度方法
一种基于负载均衡的Kubernetes调度改进算法
虚拟机实时迁移调度算法
分布式光伏热钱汹涌
分布式光伏:爆发还是徘徊
基于RI码计算的Word复制文档鉴别
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat