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

第一种方案:socket方式

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

目前我们常用的http调用,java远程调用,webservices 都是采用的这种方式,只不过不同的就是传输协议以及报文格式。
这种方式的优点:
1 易于编程,目前java提供了多种框架,屏蔽了底层通信细节以及数据传输转换细节。
2 容易控制权限。通过传输层协议https,加密传输的数据,使得安全性提高 
3 通用性比较强,无论客户端是.net架构,java,python 都是可以的。尤其是webservice规范,
 使得服务变得通用
这种方式的缺点:
1 服务器和客户端必须同时工作,当服务器端不可用的时候,整个数据交互是不可进行。
2 当传输数据量比较大的时候,严重占用网络带宽,可能导致连接超时。使得在数据量交互的时候,服务变的很不可靠。

第二种方案:ftp/文件共享服务器方式

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

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

这种方式的优点:
1 在数据量大的情况下,可以通过文件传输,不会超时,不占用网络带宽。 
2 方案简单,避免了网络传输,网络协议相关的概念。
这种方案的缺点:
1 不太适合做实时类的业务  
2 必须有共同的文件服务器,文件服务器这里面存在风险。因为文件可能被篡改,删除,或者存在泄密等。  
3 必须约定文件数据的格式,当改变文件格式的时候,需要各个系统都同步做修改。

第三种方案:数据库共享数据方式

系统A和系统B通过连接同一个数据库服务器的同一张表进行数据交换。当系统A请求系统B
处理数据的时候,系统A Insert一条数据,系统B select 系统A插入的数据进行处理。

这种方式的优点:
1 相比文件方式传输来说,因为使用的同一个数据库,交互更加简单。  
2由于数据库提供相当做的操作,比如更新,回滚等。交互方式比较灵活, 而且通过数据库的事务机制,可以做成可靠性的数据交换。
这种方式的缺点:
1 当连接B的系统越来越多的时候,由于数据库的连接池是有限的,
导致每个系统分配到的连接不会很多,当系统越来越多的时候,可能导致无可用的数据库连接

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

第四种方案: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请求来的消息,进行展示任务结果

转自:http://blog.csdn.net/yanmh007/article/details/78590409

应用系统数据对接几种方案相关推荐

  1. 钉钉考勤接口调用与OA系统数据对接(多线程版)

    钉钉考勤接口调用与OA系统数据对接(多线程版) 公司由原来的指纹打卡更换为钉钉打卡,需要钉钉和现有的OA考勤数据对接(合并钉钉打卡数据和OA上的请假,外出,出差数据),因为人数增减单线程定时任务数据抓 ...

  2. 钉钉考勤接口调用与OA系统数据对接

    钉钉考勤接口调用与OA系统数据对接 公司由原来的指纹打卡更换为钉钉打卡,需要钉钉和现有的OA考勤数据对接(合并钉钉打卡数据和OA上的请假,外出,出差数据) 1.查看钉钉接口文档 https://din ...

  3. 如何实现高质量的系统数据对接/API接口整合集成方案?

    我们建立一个数字化系统可能会有跟别的系统进行数据对接的需要,而别人的数字化系统也有可能需要跟我们的系统进行数据对接,也可能我们开发了不同的网站,网站小应用之间需要进行数据对接.那么数据对接应该如何操作 ...

  4. 免开发跨系统数据对接方案

    需求场景 由于产品业务发展,催生出了一个需求:线上平台与线下某些软件系统要实现数据对接和数据互传,并且不能影响软件系统的正常运行.其实很多互联网产品中都这样的需求,很多平台运营商吸引线下商家.客户入驻 ...

  5. sql优化之:数据库索引创建原则,or/in/union与索引优化,聚集索引/非聚集索引/联合索引/索引覆盖,MySQL冗余数据的三种方案,MySQL双主一致性架构优化(来源:架构师之路)

    一.一些常见的SQL实践 (1)负向条件查询不能使用索引 select * from order where status!=0 and stauts!=1 not in/not exists都不是好 ...

  6. mysql数据冗余_MySQL冗余数据的三种方案

    一,为什么要冗余数据 互联网数据量很大的业务场景,往往数据库需要进行水平切分来降低单库数据量. 水平切分会有一个patition key,通过patition key的查询能够直接定位到库,但是非pa ...

  7. JAVA实现两个系统数据对接

    前言 最近做了两个系统,现在有一个需求,需要做数据对接,这个有很多方法实现,我这里用的是接口对接.由于是第一次做这种功能,也踩了不少坑,所以在这里记录一下. 提示:以下是本篇文章正文内容,下面案例仅供 ...

  8. B2B2C多用户商城系统建设的几种方案

    第一,自主研发b2b2c多用户商城系统软件. 自建研发需要专业的团队,时间和费用成本都较高,这种方案专业性要求高一些,除非有一只强大的开发团队或者有资深的互联网背景,而且对互联网能完全掌控的情况下.一 ...

  9. sparkstreaming监听hdfs目录_Spark Streaming消费Kafka数据的两种方案

    下午的时候翻微信看到大家在讨论Spark消费Kafka的方式,官网中就有答案,只不过是英文的,当然很多博客也都做了介绍,正好我的收藏夹中有一篇文章供大家参考.文章写的通俗易懂,搭配代码,供大家参考. ...

最新文章

  1. Android L 新特性
  2. PCL 点云 欧式聚类疑问
  3. manjaro使用国内软件源
  4. C#中串口通信编程 收藏
  5. Java开发环境搭建详解
  6. python读取json格式的超参数
  7. tensorflow 启动多个session_Tensorflow源码解析7 -- TensorFlow分布式运行时
  8. 原来体检报告是这么看的,赶紧收藏!
  9. php的基本语法与字符串与增删改查
  10. Mysql数据恢复有哪几种_MYSQL 数据恢复有哪些
  11. 《终极算法》阅读笔记与摘要(1)-序和第1-2章
  12. 顺丰快递:请签收MySQL灵魂十连问
  13. c语言写测试地下水流速,《C语言》课程教学大纲 总学时:总学时64;理论44;实验20 学分:3.5 .doc...
  14. 究竟云计算就业前景好不 零基础如何学云计算
  15. 计算机病毒的防治方法不包括,计算机病毒的防治方法
  16. deb 中标麒麟_麒麟动态·亿图软件登陆银河麒麟桌面三部曲之——项目管理软件 - 银河麒麟操作系统 麒麟操作系统 中标麒麟 麒麟软件官方网站...
  17. CSS flex属性深入理解
  18. Microsoft.Office.Interop.Word 分页操作(文本和表格分开)
  19. 项目启动大会的注意事项
  20. 计算机思维能力培养的核心是什么,【计算机基础论文】计算机基础教学中计算思维能力培养(共6714字)...

热门文章

  1. Android:收不到应用卸载、替换、安装等广播
  2. 谁生活在地狱,自己心里都有数 ---Leo读 不是孙振耀写的职场感言 3
  3. oracle常用函数number,Oracle 常用函数介绍
  4. MySQL建表,主键,外键
  5. 1、IOS开发--iPad之仿制QQ空间(登录界面搭建+登录逻辑实现)
  6. Unity游戏实战项目-英雄无敌
  7. 微信小程序直播间实现下拉刷新(目前全网最优最美观的方法)
  8. 前端html+CSS基础
  9. Cello-operator-dashboard的调试设置
  10. 前端企业微信开发内嵌H5记录