一种基于SOA的分布式图档系统转让专利

申请号 : CN201410491949.6

文献号 : CN104298718B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 于晓义詹卫许易勇强董灿吴方权陈彬胡俊杨陈晓洪徐兵元

申请人 : 中国南方电网有限责任公司云南云电同方科技有限公司

摘要 :

一种基于SOA的分布式图档系统,该系统由客户端和分布式图档服务器模块组成;其中,分布式图档服务器模块在结构层次上划分为三层,分别为:客户端访问接口层,网络通信层,数据访问层;由位于客户端访问接口层的客户端接口模块,位于网络通信层的网络通信模块以及数据访问层的数据访问模块三部分依次连接组成。本发明通过分布式技术,对字符流进行分片分布式处理,解决传统FTP等服务器处理大文件等数据时,网络长连接、带宽拥塞问题。

权利要求 :

1.一种基于面向服务的体系结构的分布式图档系统,其特征在于,该系统由客户端和分布式图档服务器模块组成;其中,分布式图档服务器模块在结构层次上划分为三层,分别为:客户端访问接口层,网络通信层,数据访问层;分布式图档服务器模块由位于客户端访问接口层的客户端接口模块,位于网络通信层的网络通信模块以及数据访问层的数据访问模块三部分依次连接组成;

客户端利用客户端接口模块通过套接字方式与分布式图档服务器模块通信;客户端接口模块的的功能为:

1)二进制文件分片组包,对任意大小的二进制文件,按照可传输数据包大小进行分割,每个包1KB,超过1KB,对其进行分割;

2)按照通信协议进行组包,以TCP协议进行套接字网络数据通信;客户端接口模块接收数据后,按通信协议进行解包,提供客户端使用;

3)客户端接口模块提供文件上传、文件下载、文件搜索功能;

网络通信模块提供网络传输,为客户端接口模块服务;

数据访问模块提供网络通讯模块所需的信息,其功能为:

1)完成数据的分布式存储,同一个文件的二进制数据分布在不同的存储位置进行存储,以文件ID和数据片ID做为索引进行数据访问;

2)完成分布式存储的数据访问,数据通讯包到达数据访问模块后,按照数据文件的ID和分片数据ID,先在主存储服务器中获取到存放数据片段的物理服务器host和存储位置,再去实际物理存放位置,实现分布式的数据片段的读/写。

2.根据权利要求所述的一种基于面向服务的体系结构的分布式图档系统,其特征在于,所述的文件二进制数据不能直接用于面向服务的体系结构的Web Service字符流调用,需要将二进制数据转化为值为0-127的ASCII字符的JavaScript标记格式,编码方式采用一种基于UNIX的压缩方式格式进行压缩,再用BASE64编码,或CRC编码;其中,对文件名称、文件创建时间、文件属性数据,需要与经过编码处理后的文件二进制数据一样用JavaScript标记格式编码。

说明书 :

一种基于SOA的分布式图档系统

技术领域

[0001] 本方明涉及采用SOA及分布式网络技术,实现图档文件共享的技术,对企业协同系统和知识管理系统的核心技术有比较现实意义。

背景技术

[0002] 企业级的协同系统,如OA、知识管理系统、文件服务器、图档服务器有大量的二进制非结构化数据的应用,传统采用FTP文件服务器技术可以实现二进制非结构化数据,如文件、图档的上传、下载、浏览和简单的权限管理。但是由于企业级应用,需要把这些非结构化数据与企业应用中的存储在RDBMS关系数据库中大量结构化数据进行关联。FTP技术很难在数据库操作的事务中进行完整集成,造成图档数据与结构化数据往往会不一致;另外,传统的FTP服务器由于,动辄几十兆的图档文件较大,在数据分享时网络带宽、存储容量往往是制约图档系统性能的关键技术。本文介绍一种通过采用SOA架构技术和分布式网络技术设计实现的一种基于SOA的分布式图档系统技术,可以为图档共享技术提供一种全新的实现思路。

发明内容

[0003] 传统的文档处理采用FTP服务,不利于集成在Web应用中。要集成在Web应用,必须从两个方面入手解决:一方面必须数据传问题,需要将文件二进制流在SOA架构WebService中通过Base64、CRC编码转换问字符流传输;另一方面在大文件等数据处理中要通过分布式技术,对字符流进行分片分布式处理,解决传统FTP等服务器处理文件时,网络长连接、带宽拥塞等问题。本发明提出了一种利用SOA架构,采取分布式网络、存储技术解决海量图档共享的技术,系统架构如图-1所示。
[0004] 一种基于SOA的分布式图档系统,本发明特征在于,该系统由客户端和分布式图档服务器模块组成;其中,分布式图档服务器模块在结构层次上划分为三层,分别为:客户端访问接口层,网络通信层,数据访问层;由位于客户端访问接口层的客户端接口模块,位于网络通信层的网络通信模块以及数据访问层的数据访问模块三部分依次连接组成;
[0005] 客户端利用客户端接口模块通过SOCKET方式与分布式图档服务器模块通信;客户端接口模块的的功能为:
[0006] 1)二进制文件分片组包,对任意大小的二进制文件,按照可传输数据包大小进行分割,每个包1KB,超过1KB,对其进行分割;
[0007] 2)按照通信协议进行组包,以TCP协议进行socket网络数据通信;客户端接口模块接收数据后,按通信协议进行解包,提供客户端使用;
[0008] 3)客户端接口模块提供文件上传、文件下载、文件搜索功能;
[0009] 网络通信模块提供网络传输,为客户端接口模块服务;
[0010] 数据访问模块提供网络通讯模块所需的信息,其功能为:
[0011] 1)完成数据的分布式存储,同一个文件的二进制数据分布在不同的存储位置进行存储,以文件ID和数据片ID做为索引进行数据访问;
[0012] 2)完成分布式存储的数据访问,数据通讯包到达数据访问模块后,按照数据文件的ID和分片数据ID,先在主存储服务器中获取到存放数据片段的物理服务器host和存储位置,再去实际物理存放位置,实现分布式的数据片段的读/写。
[0013] 本发明所述的文件二进制数据不能直接用于SOA的Web Service字符流调用,需要将二进制数据转化为值为0-127的ASCII字符JSON格式,编码方式采用GZIP-2压缩,再用BASE64编码,或CRC编码;其中,对文件名称、文件创建时间、文件属性数据,需要与经过编码处理后的文件二进制数据一样用JSON格式编码。
[0014] 本发明所述的分布式数据存储,指数据的分割存储,即同一个文件的二进制数据可以分布在不同的存储位置进行存储。
[0015] 具体关键技术要点和内容如下:
[0016] 二进制文件转为JSON字符流的处理技术说明:
[0017] 文件二进制数据不能直接用于SOA的Web Service字符流调用,必须采用一定的编码方式,将二机制数据转化为值为0-127的ASCII字符JSON格式,才能通过HTTP协议进行Web Service传输数据。数据编码采用GZIP-2压缩,再用BASE64编码,CRC编码。
[0018] 对文件名称、文件创建时间、文件属性等数据,需要与经过编码处理后的文件二进制数据用JSON格式编码。
[0019] 图档二进制文件分布式存储:
[0020] 随着IT存储成本的不断下降,图档服务器最重要的指标就是存储容量和检索速度。传统依靠单机的存储和检索在面对高并发流量、大容量内容时会遇到性能瓶颈。因此,针对图档文档的二进制文件存储,需要采用以下手段,从而实现了图档二进制文件的海量存储(兆T级)和高并发的检索能力:
[0021] 分布式数据通信:将二进制文件通过分割算法,分割成有利于socket通信的数据包,通过分层设计方式进行网络分布式数据通信。分布式数据通信模块还要处理集群服务器的数据统一、数据传输的状态反馈问题。
[0022] 分布式数据存储:分布式数据存储主要指两个层面,一个是指数据的分割存储,即同一个文件的二进制数据可以分布在不同的存储位置进行存储。
[0023] 1.分布式图档服务器模块划分
[0024] 1.1.服务器结构层次
[0025] 分布式图档服务器在结构层次上划分为三层,分别为:客户端访问接口,网络通信层,数据访问层,其结构如图1所示。各层之间的接口调用示意如图2所示。
[0026] 下边分别为各个模块的详细介绍。
[0027] 1.2.客户端接口
[0028] 客户端接口主要功能:
[0029] 二进制文件分片组包,对任意大小的二进制文件,按照配置的可传输数据包大小进行分割,组包成一定长度的数据包(长度可配置);
[0030] 按照通信协议组包,以TCP协议进行socket网络数据通信;接收数据后,按通信协议解包,提供客户端应用程序使用。
[0031] 从分布式的后台文件存储对提供客户端应用文件上传、文件下载、文件搜索等功能。
[0032] 1.2.1文件上传
[0033]
[0034]
[0035] 文件上传的逻辑时序图如图3所示。
[0036] 文件上传的流程图如图4所示。
[0037] 具体的文件上传流程会进行一些校验,其校验流程流程如图5所示。
[0038] 1.2.2文件下载
[0039]
[0040]
[0041] 文件下载时序图如图6所示。
[0042] 文件下载流程图如图7所示。
[0043] 具体的下载过程中,会涉及到的校验流程如图8所示。
[0044] 1.2.3文件搜索
[0045]
[0046] 文件搜索部分时序图如图9所示。
[0047] 搜索功能的流程图如图10所示。
[0048] 1.2.4文件管理
[0049]
[0050]
[0051] 1.3.网络通信层
[0052] 上传服务:fs_upload_file
[0053] 入口参数:fs_auth[1]+fs_file[1]
[0054] 下载服务:s_download_file
[0055] 入口参数:fs_auth[1]+fs_file[1]
[0056] 搜索服务:s_search_file
[0057] 入口参数:fs_auth[1]+fs_filter[1]+fs_attribute[0..n]
[0058] 文件管理:s_maintain_file
[0059] 入口参数:fs_auth[1]+fs_operation[1]+fs_attribute[0..n]
[0060] 文中仅列出各层需要暴露出来的接口,事实上各层还需要各自实现更多的支持函数,比如网络层需要负责对传递过来的数据结构进行解析,回填信息打包等,数据访问层需要对系统用户,存储库等的操作等,这里由于与系统边界的界定和接口的定义无关,就没有出现在文档中。
[0061] 所有返回int的函数反馈0为成功否则失败,
[0062] react,rsize参见前面的说明。
[0063] 如果rsize==0或react==NULL则系统仅反馈包头,当然设置了成功与否的flag。
[0064] 1.4.数据访问层
[0065] 数据访问层要解决分布式存储的数据访问,数据通讯包到达数据访问层后,按照数据文件的UID和分片数据ID,先在主存储服务器中获取到存放数据片段的物理服务器host和存储位置,再去实际物理存放位置,实现分布式的数据片段的读/写。分布式存储的逻辑示意图如图11所示。
[0066] 其中主数据访问节点、多个分布式数据访问节点可部署在一台或多台的物理服务器上,形成分布式数据的存储集群。在集群中的每个数据访问节点上,可以存储多个数据片,以文件ID和数据片ID做为索引进行数据访问。
[0067] 本发明通过分布式技术,对字符流进行分片分布式处理,解决传统FTP等服务器处理大文件等数据时,网络长连接、带宽拥塞等问题。

附图说明

[0068] 图1是本发明分布式图档服务器的结构层次示意图;
[0069] 图2是本发明分布式图档服务器的结构层各层之间的接口调用示意图;
[0070] 图3是本发明的文件上传的逻辑时序图;
[0071] 图4是本发明文件上传的流程图;
[0072] 图5是本发明文件上传流程中的校验流程图;
[0073] 图6是本发明的文件下载时序图;
[0074] 图7是本发明的文件下载流程图;
[0075] 图8是本发明的文件下载流程中的校验流程图;
[0076] 图9是本发明文件搜索部分时序图;
[0077] 图10是本发明文件搜索流程图;
[0078] 图11是本发明分布式存储的逻辑示意图。

具体实施方式

[0079] 一种基于SOA的分布式图档系统,本发明特征在于,该系统由客户端和分布式图档服务器模块组成;其中,分布式图档服务器模块在结构层次上划分为三层,分别为:客户端访问接口层,网络通信层,数据访问层;由位于客户端访问接口层的客户端接口模块,位于网络通信层的网络通信模块以及数据访问层的数据访问模块三部分依次连接组成;
[0080] 客户端利用客户端接口模块通过SOCKET方式与分布式图档服务器模块通信;客户端接口模块的的功能为:
[0081] 1)二进制文件分片组包,对任意大小的二进制文件,按照可传输数据包大小进行分割,每个包1KB,超过1KB,对其进行分割;
[0082] 2)按照通信协议进行组包,以TCP协议进行socket网络数据通信;客户端接口模块接收数据后,按通信协议进行解包,提供客户端使用;
[0083] 3)客户端接口模块提供文件上传、文件下载、文件搜索功能;
[0084] 网络通信模块提供网络传输,为客户端接口模块服务;
[0085] 数据访问模块提供网络通讯模块所需的信息,其功能为:
[0086] 1)完成数据的分布式存储,同一个文件的二进制数据分布在不同的存储位置进行存储,以文件ID和数据片ID做为索引进行数据访问;
[0087] 2)完成分布式存储的数据访问,数据通讯包到达数据访问模块后,按照数据文件的ID和分片数据ID,先在主存储服务器中获取到存放数据片段的物理服务器host和存储位置,再去实际物理存放位置,实现分布式的数据片段的读/写。
[0088] 本发明所述的文件二进制数据不能直接用于SOA的Web Service字符流调用,需要将二机制数据转化为值为0-127的ASCII字符JSON格式,编码方式采用GZIP-2压缩,再用BASE64编码,或CRC编码;其中,对文件名称、文件创建时间、文件属性数据,需要与经过编码处理后的文件二进制数据一样用JSON格式编码。