应用系统之间数据传输的几种方式

应用系统之间数据传输的几种方式

随着近年来SOA (面向服务技术架构)的兴起,越来越多的应用系统开始进行分布式的设计和部署。系统由原来单一的技术架构变成面向服务的多系统架构。原来在一个系统之间可以完成的业务流程,通过多系统的之间多次交互来实现。这里不打算介绍如何进行SOA 架构的设计,而是介绍一下应用系统之间如何进行数据的传输。

应用系统之间数据传输有三个要素:传输方式,传输协议,数据格式

数据传输方式一般无非是以下几种:

1、socket 方式

Socket方式是最简单的交互方式。是典型才C/S交互模式。一台客户机,一台服务器。服务器提供服务,通过IP 地址和端口进行服务访问。而客户机通过连接服务器指定的端口进行消息交互。其中传输协议可以是TCP/UDP 协议。而服务器和约定了请求报文格式和响应报文格式。如图一所示:

目前我们常用的http 调用,java 远程调用,webservices 都是采用的这种方式,只不过不同的就是传输协议以及报文格式。

这种方式的优点是:

1 易于编程,目前java 提供了多种框架,屏蔽了底层通信细节以及数据传输转换细节。 2 容易控制权限。通过传输层协议https ,加密传输的数据,使得安全性提高

3 通用性比较强,无论客户端是.net 架构,java ,python 都是可以的。尤其是webservice 规范,使得服务变得通用

而这种方式的缺点是:

1 服务器和客户端必须同时工作,当服务器端不可用的时候,整个数据交互是不可进行。 2 当传输数据量比较大的时候,严重占用网络带宽,可能导致连接超时。使得在数据量交互的时候,服务变的很不可靠。

2、ftp/文件共享服务器方式

对于大数据量的交互,采用这种文件的交互方式最适合不过了。系统A 和系统B 约定文件服务器地址,文件命名规则, 文件内容格式等内容,通过上传文件到文件服务器进行数据交互。

最典型的应用场景是批量处理数据:例如系统A 把今天12点之前把要处理的数据生成到一个文件,系统B 第二天凌晨1点进行处理,处理完成之后,把处理结果生成到一个文件,系统A 12点在进行结果处理。这种状况经常发生在A 是事物处理型系统,对响应要求比较高,不适合做数据分析型的工作,而系统B 是后台系统,对处理能力要求比较高,适合做批量任务系统。

以上只是说明通过文件方式的数据交互,实际情况B 完成任务之后,可能通过socket 的方式通知A ,不一定是通过文件方式。

这种方式的优点:

1 在数据量大的情况下,可以通过文件传输,不会超时,不占用网络带宽。

2 方案简单,避免了网络传输,网络协议相关的概念。

这种方式的缺点:

1 不太适合做实时类的业务

2 必须有共同的文件服务器,文件服务器这里面存在风险。因为文件可能被篡改,删除,或者存在泄密等。

3 必须约定文件数据的格式,当改变文件格式的时候,需要各个系统都同步做修改。

3、数据库共享数据方式

系统A 和系统B 通过连接同一个数据库服务器的同一张表进行数据交换。当系统A 请求系统

B

处理数据的时候,系统A Insert一条数据,系统B select 系统A 插入的数据进行处理。

这种方式的优点是

1 相比文件方式传输来说,因为使用的同一个数据库,交互更加简单。

2 由于数据库提供相当做的操作,比如更新,回滚等。交互方式比较灵活, 而且通过数据库的事务机制,可以做成可靠性的数据交换。

这种方式的缺点:

1 当连接B 的系统越来越多的时候,由于数据库的连接池是有限的,导致每个系统分配到的连接不会很多,当系统越来越多的时候,可能导致无可用的数据库连接

2 一般情况,来自两个不同公司的系统,不太会开放自己的数据库给对方连接,因为这样会有安全性影响

4、message 方式

Java 消息服务(Java Message Service)是message 数据传输的典型的实现方式。系统A 和系统B 通过一个消息服务器进行数据交换。系统A 发送消息到消息服务器,如果系统B 订阅系统A 发送过来的消息,消息服务器会消息推送给B 。双方约定消息格式即可。目前市场上有很多开源的jms 消息中间件,比如 ActiveMQ, OpenJMS 。

这种方式的优点

1 由于jms 定义了规范,有很多的开源的消息中间件可以选择,而且比较通用。接入起来相对也比较简单

2 通过消息方式比较灵活,可以采取同步,异步,可靠性的消息处理,消息中间件也可以独立出来部署。

这种方式的缺点

1 学习jms 相关的基础知识,消息中间件的具体配置,以及实现的细节对于开发人员来说还是有一点学习成本的

2 在大数据量的情况下,消息可能会产生积压,导致消息延迟,消息丢失,甚至消息中间件崩溃。

下面具体来分析一个场景,来看看系统之间数据传输的应用

场景 目前业务人员需要导入一个大文件到系统A ,系统A 保存文件信息,而文件里面的明细信息需要导入到系统B 进行分析,当系统B 分析完成之后,需要把分析结果通知系统A 。

A 系统A 先保存文件到文件服务器。

B 系统A 通过webservice 调用系统B 提供的服务器,把需要处理的文件名发送到系统B 。由于文件很大,需要处理很长时间,所以B 不及时处理文件,而是保存需要处理的文件名到数据库,通过后台定时调度机制去处理。所以B 接收请求成功,立刻返回系统A 成功。

C 系统B 定时查询数据库记录,通过记录查找文件路径,找到文件进行处理。这个过程很长。

D 系统B 处理完成之后发送消息给系统A ,告知系统A 文件处理完成。

E 系统A 接收到系统B 请求来的消息,进行展示任务结果

应用系统之间数据传输的几种方式

随着近年来SOA (面向服务技术架构)的兴起,越来越多的应用系统开始进行分布式的设计和部署。系统由原来单一的技术架构变成面向服务的多系统架构。原来在一个系统之间可以完成的业务流程,通过多系统的之间多次交互来实现。这里不打算介绍如何进行SOA 架构的设计,而是介绍一下应用系统之间如何进行数据的传输。

应用系统之间数据传输有三个要素:传输方式,传输协议,数据格式

数据传输方式一般无非是以下几种:

1、socket 方式

Socket方式是最简单的交互方式。是典型才C/S交互模式。一台客户机,一台服务器。服务器提供服务,通过IP 地址和端口进行服务访问。而客户机通过连接服务器指定的端口进行消息交互。其中传输协议可以是TCP/UDP 协议。而服务器和约定了请求报文格式和响应报文格式。如图一所示:

目前我们常用的http 调用,java 远程调用,webservices 都是采用的这种方式,只不过不同的就是传输协议以及报文格式。

这种方式的优点是:

1 易于编程,目前java 提供了多种框架,屏蔽了底层通信细节以及数据传输转换细节。 2 容易控制权限。通过传输层协议https ,加密传输的数据,使得安全性提高

3 通用性比较强,无论客户端是.net 架构,java ,python 都是可以的。尤其是webservice 规范,使得服务变得通用

而这种方式的缺点是:

1 服务器和客户端必须同时工作,当服务器端不可用的时候,整个数据交互是不可进行。 2 当传输数据量比较大的时候,严重占用网络带宽,可能导致连接超时。使得在数据量交互的时候,服务变的很不可靠。

2、ftp/文件共享服务器方式

对于大数据量的交互,采用这种文件的交互方式最适合不过了。系统A 和系统B 约定文件服务器地址,文件命名规则, 文件内容格式等内容,通过上传文件到文件服务器进行数据交互。

最典型的应用场景是批量处理数据:例如系统A 把今天12点之前把要处理的数据生成到一个文件,系统B 第二天凌晨1点进行处理,处理完成之后,把处理结果生成到一个文件,系统A 12点在进行结果处理。这种状况经常发生在A 是事物处理型系统,对响应要求比较高,不适合做数据分析型的工作,而系统B 是后台系统,对处理能力要求比较高,适合做批量任务系统。

以上只是说明通过文件方式的数据交互,实际情况B 完成任务之后,可能通过socket 的方式通知A ,不一定是通过文件方式。

这种方式的优点:

1 在数据量大的情况下,可以通过文件传输,不会超时,不占用网络带宽。

2 方案简单,避免了网络传输,网络协议相关的概念。

这种方式的缺点:

1 不太适合做实时类的业务

2 必须有共同的文件服务器,文件服务器这里面存在风险。因为文件可能被篡改,删除,或者存在泄密等。

3 必须约定文件数据的格式,当改变文件格式的时候,需要各个系统都同步做修改。

3、数据库共享数据方式

系统A 和系统B 通过连接同一个数据库服务器的同一张表进行数据交换。当系统A 请求系统

B

处理数据的时候,系统A Insert一条数据,系统B select 系统A 插入的数据进行处理。

这种方式的优点是

1 相比文件方式传输来说,因为使用的同一个数据库,交互更加简单。

2 由于数据库提供相当做的操作,比如更新,回滚等。交互方式比较灵活, 而且通过数据库的事务机制,可以做成可靠性的数据交换。

这种方式的缺点:

1 当连接B 的系统越来越多的时候,由于数据库的连接池是有限的,导致每个系统分配到的连接不会很多,当系统越来越多的时候,可能导致无可用的数据库连接

2 一般情况,来自两个不同公司的系统,不太会开放自己的数据库给对方连接,因为这样会有安全性影响

4、message 方式

Java 消息服务(Java Message Service)是message 数据传输的典型的实现方式。系统A 和系统B 通过一个消息服务器进行数据交换。系统A 发送消息到消息服务器,如果系统B 订阅系统A 发送过来的消息,消息服务器会消息推送给B 。双方约定消息格式即可。目前市场上有很多开源的jms 消息中间件,比如 ActiveMQ, OpenJMS 。

这种方式的优点

1 由于jms 定义了规范,有很多的开源的消息中间件可以选择,而且比较通用。接入起来相对也比较简单

2 通过消息方式比较灵活,可以采取同步,异步,可靠性的消息处理,消息中间件也可以独立出来部署。

这种方式的缺点

1 学习jms 相关的基础知识,消息中间件的具体配置,以及实现的细节对于开发人员来说还是有一点学习成本的

2 在大数据量的情况下,消息可能会产生积压,导致消息延迟,消息丢失,甚至消息中间件崩溃。

下面具体来分析一个场景,来看看系统之间数据传输的应用

场景 目前业务人员需要导入一个大文件到系统A ,系统A 保存文件信息,而文件里面的明细信息需要导入到系统B 进行分析,当系统B 分析完成之后,需要把分析结果通知系统A 。

A 系统A 先保存文件到文件服务器。

B 系统A 通过webservice 调用系统B 提供的服务器,把需要处理的文件名发送到系统B 。由于文件很大,需要处理很长时间,所以B 不及时处理文件,而是保存需要处理的文件名到数据库,通过后台定时调度机制去处理。所以B 接收请求成功,立刻返回系统A 成功。

C 系统B 定时查询数据库记录,通过记录查找文件路径,找到文件进行处理。这个过程很长。

D 系统B 处理完成之后发送消息给系统A ,告知系统A 文件处理完成。

E 系统A 接收到系统B 请求来的消息,进行展示任务结果


相关文章

  • 中心数据交换平台建设方案
  • XX 省电子政务系统 数据交换平台 国际商业机器中国有限公司 2005.5 目 录: 1 概述 数据交换共享平台是协作式电子政务应用平台(包括政府职能部门之间的电子协作.政府与公众/企事业单位的服务管理等)的核心基础服务模块,负责实现跨系统 ...查看


  • 计算机网络课后答案完整
  • 第一章 1. 计算机网络的发展可以划分为几个阶段?每个阶段都有什么特点? 答:计算机网络发展可以划分为4个阶段.这4个阶段分别是: (1)技术准备阶段 完成数据通信技术与计算机通信网络方面的研究,为计算机网络的产生做好技术准备 与理论基础. ...查看


  • 一级建造师--通信网
  • 1L411000 通信与广电工程专业技术 1L411010 通信网 1L411011掌握通信网的构成 考点(掌握): •通信网及其构成要素 •通信网的类型及拓扑结构 •通信网的基本结构 一.通信网及其构成要素 (一)通信网的作用 1)用户使 ...查看


  • 新老系统迁移及整合方案
  • 1新老系统迁移及整合方案 本次总局综合业务系统是在原有系统的基础上开发完成,因此,新旧系统间 就存在着切换的问题.另外,新开发的系统还存在与其他一些应用系统,例如,企业信用联网应用系统.企业登记子网站.外资登记子网站等系统进行整合使之成为一 ...查看


  • 无线电台通信方案介绍
  • 无线电台通信方案介绍 一.前言 用无线电台方式实现远程数据采集.监视与控制,相对于架设专用电缆(或光缆).租用电信专线等,具有造价低廉.施工快捷.运行可靠.维护简单等优点. 二.无线电台与有线连接的通信方式示意比较 1.硬件连接 如果用TX ...查看


  • 多媒体的基本概念
  • 第1章 概 述 1.1 多媒体的基本概念 随着计算机技术.通信技术的发展,人类获得信息的途径越来越多,获得信息的形式越来越丰富,信息的获得也越来越方便.快捷.人们对多媒体这个名词越来越熟悉.在日常生活中,人们认为媒体主要有两个涵义:一个是信 ...查看


  • 昆明理工大学 计算机网络基础 期末考点
  • 计算机网络基础 期末复习(修订) 考试时间:2014-06-17(17周 星期二)09:20-11:20 考试地点:中心101 座位号:13 考试题型 1.选择题 60分 共30题 2.简答题 30分 共6题 3.综合题 10分 共1题 ( ...查看


  • 管理信息系统名词解释
  • 名词解释 1. 信息:是客观世界中各种事物的运动状态和变化的反映,是客观事物之间相互联系和相 互作用的表征,表现的是客观事物运动状态和变化的实质内容. 2. 信息的价值:指凝结在信息产品中的人类劳动.这是信息商品的社会属性,体现出信息 生产 ...查看


  • 业务网.支撑网功能及特点
  • 掌握业务网.支撑网功能及特点 在第三大考点中需掌握: 掌握: 业务网的相关内容 支撑网相关内容 一.业务网的相关内容 (一)电话网 1.固定电话网 固定电话网是目前覆盖范围最广,业务量最大的网络,分为本地电话网和长途电话网.本地电话网是在同 ...查看


热门内容