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

需求场景

由于产品业务发展,催生出了一个需求:
  线上平台与线下某些软件系统要实现数据对接和数据互传,并且不能影响软件系统的正常运行。

  其实很多互联网产品中都这样的需求,很多平台运营商吸引线下商家、客户入驻线上某些平台、
Sass服务等产品,帮助商家或客户拓展线上业务。在这个前提下,商家或客户实际以在线下开展业务多年,
有一套完整、成熟、稳健的线下业务流程、线下软件系统(ERP、CRM等)。可以说站在客户的业务角度出
发,现在业务发展已经演变为线下、线上双箭齐发的场景。由此衍生出数据对接、互通数据的需求。

1.线上平台需要线下基础资料:
    在入驻线上系统初期,很多基础资料来自线下软件系统,例如:线下业务中的客户数据、
    商品数据、库存数据、价格数据等。

2.线下软件需要线上订单数据:
    在完成线下基础资料的数据上传线上平台后,线上平台已经可以正常开展业务,由此产生的线上数据
    例如订单数据需要及时准确的下发传输给线下软件系统。

免开发跨系统数据对接方案_第1张图片

技术分析

开放API 方式:

通常线上平台都会伴随系统开发一个开放平台,提供一些基础的数据传输API、业务对接API等。
这是最常见的也是最容易实施和落地的。这些开放的API接口往往基于Http协议、WebService等,
常见的大厂向,微信、阿里、饿了么、美团 等等
这样的方案同时也存在几个致命的缺点:
    1.必须要求客户对接
        谁对接意味着谁来开发对接程序,很多客、商家是不具备开发能力的。
    2.数据下发被动、实时性低
        对线上数据的获取由线下对接程序根据需要调取线上API接口获取。数据的产生
        与数据的下发不同步现象明显,对实时性要求比较高的业务场景如订单,这种方案是不可取的。

免开发方式

客户是上帝,现在客户说了:什么平台,让我来开发对接。有没有搞错,我是用户,我要是能开发软件,
还用花钱买你们的软件服务吗!

负责的平台都不应该把本来属于应该自己来解决的问题,推给客户。再者说,如果平台不能提供解决方案,
来解决这个普遍性的问题,还要什么发展,还能发展吗。

言归正传,免开发对接方案严格意义上,也不是一点开发都不做。它的好处在于不用修改、二开线下软件,
而是通过部署一个运行在线下的对接程序来完成数据中继。自然,这个对接程序有平台运营商开发并
提供对接服务。

我们分析一下,线上、线下各运行者一套软件系统,实现两个不想关的系统间数据对接,首先要思考
两个系统间的数据对接标准是什么,规范是什么。而数据对接的标准和规范应当从业务开展角度出发,
从实际需求出发。很多线上平台都有成熟的标准,而这些标准都是从一线业务场景中沉淀、总结出来的。
简单说,平台负责定义数据对接标准,具体说,平台提供商品表、订单表、客户表等数据结构定义、字段
类型定义、字段长度定义等。
除此之外,按照数据对接标准开发数据对接客户端程序,来完成线上、线下不同系统间的数据传输工作。

客户端技术特点:

免开发跨系统数据对接方案_第2张图片
客户端部署在线下,要求能够访问数据对接中间数据库。客户端中运行者若干定时任务,用来按固定频率
向线上传输数据。同时客户端也监听者线上平台的MQ异步消息,完成线上数据到线下中间库的数据下发。
这里提到来一个概念:“中间库”。
所谓中间库,就是部署在线下的数据对接用的数据库,客户端整个运行都围绕着中间数据库开展业务。
上传数据:
1.在中间库中根据业务编写不同的存储过程,来访问线下软件的业务库数据
2.数据对接中间程序运行着定时任务,负责调取存储过程中的线下数据,通过MQ、API等方式
抽送到线上平台
下发数据:
1.线上平台产生业务数据,将数据存放到MQ服务中的指定消息队列
2.数据对接客户端监听数据下发消息队列,获取消息中的数据后,写入到中间库、或者调用存储过程完成
数据写入到线下业务数据库中

 由此,可得出结论。数据对接客户端,对接数据依赖数据库编程(存储过程),消息服务MQ以及接口API。
 整个流程并不需要对客户的线下软件系统进行改造和二开。

免开发实时性方案思考

    综合开放API方案、数据对接客户端方案不难发现,都无法完美的实现数据对接绝对实时。
    于是笔者认为,要解决线下数据上传过程的数据监听问题,可能有些读者已经考虑到数据的触发器了。
    对于数据库的数据变动触发器能够及时的捕捉到,并且提供了数据编程的可能。那么剩下来的问题
    就是如何实现将触发器捕获的数据变动通知给数据对接客户端。如果能够实现此一步,那么对于线下
    软件产生的业务数据就能够在第一时间上传给线上平台了。
    通过与负责实施的同时沟通了解到,可以在触发器中向数据对接客户端发起Http 调用,将数据传送给
    数据对接客户端。目前向Oracle、SQLServer、Mysql 都可以做到。
    到此可以得出结论,只要业务需要,无论是对数据的上传还是下发,线上、线下两个系统间都可以通过
    技术手段实现数据实时传递。
    遗憾的是我们业务上允许上行数据的小幅度延迟,没有得到实际的将想法思路通过实际进行检验。
    我想理论方案可行,将我的想法思路分享给各位奋斗在一线开发的小伙伴们!

免开发跨系统数据对接方案_第3张图片

程序监听数据库变化

关于程序中如何监听数据库变化,我的另一篇博客
https://blog.csdn.net/yanghui555/article/details/115356763程序监听数据库变化的方法和实践,Oracle、Sqlserver、Mysql

你可能感兴趣的:(技术方案,云数据存储,网络互联,架构,业务规则设计)