从2007年3月年三月份开,我就到了北大软件工程发展有限公司,就与区域集成服务器打了一年多的交道,对其相当熟悉。有关区域集成服务器的商业价值,应用前景,应用实例等与技术无关的事,不在我叙述范围内,就技术层面,对它进行分析。
什么是区域集成服务器(Zone Integration Server,ZIS):
分布式应用集成框架(DAIF)提供了多层面的集成机制,包括数据集成、功能集成、过程集成和表示集成,为这些“遗产系统”的整合提供了一个完整解决方案。其中在数据集成方面采用区域集成服务器(Zone Integration Server, ZIS)和应用适配器(Adapter),通过数据对象封装要交换的数据、并使用消息机制支持数据的发布/订阅(Publish/Subscribe)与请求/应答(Request/ Response)两种通信模式,实现各应用系统间的数据交互与集成。
为方便描述,区域集成服务器简称ZIS,适配器简历Adapter
区域集成服务器是怎么进行工作的:
区域集成服务器的或以形象地比作“邮电局”,而配合其进行数据流转的适配器就像是送信“邮递员”,让我们一起来看看区域集成服务器的分布图
现在我们要把数据库A中的数据发送到数据库B为例,来对区域集成服务器进行分析。
1. 数据库A中需要进行发送的数据通过约定,进行打包(后详解)
2. 通过过AdapterA,把打包好的数据,转换成ZIS可以识别的格式,并对数据进行发送。(后详解)
3. ZIS接收Adapter A关送的数据,并对其进行转存与备份,然后提醒Adatper B查收(后详解)
4. Adapter B扫描ZIS服务器,当得知有数据需要自己接收,就接收数据,并进行存贮。
5.对Adapter B接收到的数据进行解包处理,关进行到数据库B中。
细说务个运行步骤:
1.打包过程分为以下几个步骤来完成:
- 1)抽取数据:对于约定好的数据,进行抽取,可以一次抽多个表、单个表、一条记录,甚至一条记录的某几个或一个字段,具体抽取什么数据,就需要跟业务相关,在此不在细说。
- 2)转换:把抽取的数据转换成可传输的形式,最当用的就是文件或字符串,在这里我是使用SOAP,将数据对象转换成XML格式,具体使用SOAP序列化对象,有利有弊,可以参照我的另一篇博客序列化对象,使用的三种方式:Xml,Binary,Soap,我就不在这里啰嗦了。
- 3)加密:数据要在网络上传输,安全性的考虑要多一点,但处于综合考虑,在数据加密时,使用对称加密算法DES或Rijndeal加密。
- 2.通过对数据的打包,数据已经被安全地进行包装,接下来就是Adapter A需要做的工作了:
- 1)拆分过大数据包:对于打包的数据,可能它的体积非常大,在网络上传输就是个让人头痛的问题,如HTTP默认只能传输10M的数据。所以我们把每个数据库拆分成N个体积不超过1M的数据包,并对数据包进行编号与校验。
- 2)给拆分后的数据包“贴标签”:数据包要发送到什么地方?那就写好数据包要去的地址。
- 3)对数据包进行适配:找好的包,按ZIS要求的格式进行改造,没有规矩,不成方圆嘛,咱们的ZIS也不可能是万能的。
4)发送数据。调用ZIS的API进行数据发送,并发送数据包的校验码。这时Adapter A的工作就完成了。 - 3.ZIS的数据任务非常繁重,要处理各个Adpater发送过来的数据。
- 1)接收数据:对Adapter发送过来的数据进行存贮,做到Adpater有求必应。
- 2)识别格式:对于Adapter发送过一的数据进行识别,如果格式不正确,则对数据进行丢弃,并做好备份。
- 3)校验数据:对于Adapter发送过来的数据,与校验码,对其进行校验。格式不正确,则通知Adapter A。让其重新发送。
- 4)对数据进行分发:就类似邮局里分发信件一样,根据地址,把邮件转移到对应的邮件框里。
4.Adapter B做的工作与Adapter A做的工作正好相反,有接收数据、校验数据、合并数据。
5.解包与打包也是逆过程,这里也就不再多说了。
使用ZIS的优势
ZIS可以实现高安全级别的数据传输安全。让我们来看一下系统布署示意图:
在布署时,防火墙只打开HTTP的80端口,内网还是经过了VPN进行地址映射,所以数据库隐藏较深,安全性相对来说比较高。这是使用其它分布式系统难以实现的。
ZIS的缺点:
不难看出,性能问题一直是ZIS的软肋,对于程序员来说,性能是一重很重要的考虑因素,但在很多时候,我们不能一味地追求性能,而忽略了成本、安全等因素。所以对于ZIS的这个缺点,是在性能允许范围内。但ZIS也就注定不能使用在非常繁重的数据流转上。
ZIS内部架构
ZIS包括三部分构成结构图发下:
其中,WinForm应用程序的结构如下:
这两个示意图放在这里,就不需要再用语言描述了。
结束
整个ZIS就描述到这里吧。今天为了写这篇博客,花了我一下午的时间,既画图,双打字,手都写酸了。如果有什么意见,欢迎指教!