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

news2024/11/16 1:17:16
我们建立一个数字化系统可能会有跟别的系统进行数据对接的需要,而别人的数字化系统也有可能需要跟我们的系统进行数据对接,也可能我们开发了不同的网站,网站小应用之间需要进行数据对接。那么数据对接应该如何操作呢?怎么才能更好地做好数据的同步?跨系统数据一致性问题怎么解决?本文旨在总结沉淀工作中问题的解决经验,通过统一的轻易云数据集成平台整理解决跨系统数据不一致问题的经验方法。

一、解决跨系统间数据一致性的难题

提到数据一致性,我们很容易想到的就是数据库中的事务操作。事务的原子性和持久性可以确保在一个事务内,操作多条数据,要么都成功,要么都失败。这样在一个系统内部,我们可以很自然地使用数据库事务来保证数据一致性。但是在微服务的今天,一项操作会涉及到跨多个系统多个数据库的时候,用单一的数据库事务就没办法解决了。另外常见的一种情况就是:存在依赖情况的系统服务,例如业务端与用户端(业务端负责生产数据,用户端负责展示数据),需要数据同步来保障跨系统服务的数据一致性,很多时候采用何种数据同步方式,来保障数据应用的时效性至关重要。

做数据对接需要考虑一个是单向数据对接还是双向的数据对接,如果是单向的数据对接我们只需要考虑去获取数据,也就是从目标数字化系统或是其它数字化系统从我们数字化系统上获取数据,我们通过API进行获取或是传输数据给对方。如果是我们数字化系统上注册的会员数据需要同步给对方,对方那边注册的会员数据,修改的会员资料也需要同步过来,做到数据双方的实时更新,这个就是做数据的双向对接了。不仅我们需要传输数据过去,对方也需要传输数据给我们,不过这个不需要我们提供API接口给对方,对方也提供API接口给我们,只需要一方的API接口实现数据的获取跟传输就可以了。这种数据的双向对接会用在很多的平台上,我们在进行对接的时候也要考虑我们需要的是数据的获取就可以,还是还需要把数据传送过去。如果是需要做到双向对接,而我们只考虑单向对接的话,数据就会出现问题。比如对方那边注册的会员数据同步给我们了,但是我们这边注册的会员数据没同步过去,客户就无法在对方数字化系统上登录使用。

二、一致性的难题的分析

为了能够更好的描述与理解数据一致性问题,通过一个案例来实战阐述:

假设存在订单系统与库存系统,分别是金蝶云ERP与一款WMS系统之间需要进行数据对接,在实际业务中订单的创建会伴随着系统仓库模块的库存减少。两个系统为分别部署,其应用数据也存放在独立的数据库中,两个系统间通过网络API接口进行通信。

如何做数据对接呢,这个主要是通过API进行的,也就是提供数据方编写接口文档,告知对接方应该通过哪一些的字段什么样的形式进行数据的获取。进行数字化系统搭建数据对接时不仅仅要考虑数据的获取,也要考虑到数据的传输,具体要用什么样的形式要看双方对于数据的要求。如果是不仅需要获取也需要传输的,就要将这方面的数据对接考虑上,不然对接之后,数据会出现问题,这个是一个主要注意的点。其它的,只要是有API接口,对接就基本不会有什么问题。

2.1、数据集成平台 CAP 原则

CAP 之间本身就是处于互斥的,只能从这三者中选两个处理,对于 CA、AP、CP 都有它们自己的应用场景,要结合实际进行选择。

  • CA 因为不考虑分区容忍度,所以它的所有操作需要在同一进程内完成(也就是我们常说的单体应用);

  • AP 因为放弃数据一致性,适合数据要求不高但强调用户体验的项目,如博客、新闻资讯等;

  • CP 反之放弃了可用性,适合数据要求很高的交易系统,如银行交易、电商的订单交易等,就算是用户长时间等待,也要保障数据的完整可靠。
    CAP 原则在实际项目中的运用,对于互联网应用来说,如果为了用户体验完全放弃数据一致性这也是不可取的,毕竟数据才是应用的根本。
    数据集成平台需要如何解决CAP互斥性呢?
    保障最终一致性的措施有很多,主要包括:分布式事务和 TCC 一致性方案。MySQL 其实有一个两阶段提交的分布式事务方案(MySQL XA),但是该方案存在严重的性能问题。

比如,一个数据库的事务与多个数据库之间的 XA 事务性能可能相差 10 倍。另外,在 XA 的事务处理过程中它会长期占用锁资源,所以一开始我们并不考虑这个方案。

三、高可用的系统数据同步方案实践

问题描述:还是回到之前的数据集成案例场景,数据需要从金蝶云星空系统同步到旺店通系统。订单系统同步到库存系统中。

解决数据一致性常用的三类数据同步方案:实时同步、定时同步、手动同步。数据集成平台设计核心特性:

• 实时数据集成API统一管理

• 可视化的配置工具

• 实现低代码集成方案

• 非入侵式

• 松耦合集成

• 不侵入现有业务系统

• 敏捷交付开箱即用

• 丰富的场景化集成方案

采用异步协程架构模式设计的数据集成平台,通过Message Queue(MQ),消息队列中间件。MQ 通过将消息的发送和接收分离来实现应用程序的异步和解偶,同时 MQ 屏蔽底层复杂的通讯协议,定义了一套应用层的、更加简单的通讯协议。在业务系统设计中,我们常常会存在一个平台系统 金蝶,它关联同步了许许多多的系统的对接(系统 聚水潭、泛微、MES 等)。利用 MQ 可以很好的解决系统对接和数据同步问题,同时可以忽略对接系统的稳定性等诉求。

任务调度者

• 调度事件

• 生产任务

• 调度任务池-异步AsynDispatcher --source

实例化适配器执行

• 消费任务

• 实例化集成应用 DataHub InstancehandleSourceDispatch()

• 依赖注入集成方案适配器

• 调度条件检查

• 执行适配器调度方法

• 联动其它方案调度任务 SourceEvent

适配器调度周期

• 初始化变量

• 根据元数据配置生成请求参数

• 向源队列存储器 写入任务=>JobId

• 生产任务

• 方案任务队列池-异步租户进程

实例化适配器执行

• 实例化集成应用 DataHub InstancehandleSourceJob()

• 根据任务id定位找到mongodb中对应的任务详情 JobId=>findSourceJob

• 执行适配器内SDKAdapter->SDK->invoke()

触发事件加工厂

• 事件加工厂 ScriptFactory::AfterSourceInvoke

适配器处理响应-success

• 处理响应数据 handleResponse

• 判断 接口请求任务 成功/失败

• 定位 Response 数据Key

• 遍历数据对象,Mongodb 存储对象

• 标记任务状态 Finished

• 提供InvokeRequest 进行分页查询任务

适配器处理任务错误

• Throwable 异常搜集器

• 标记任务状态 Error

• 任务重试机制 ReQueue()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/184904.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据分析:SQL和Python

SQL 统计数据概况:计算样本总数、商家总数、用户总数、消费总数、领券总数等 selectcount(User_id) as 样本总数,count(distinct Merchant_id) as 商家总数,count(distinct User_id) as 用户总数,count(Date) as 消费总数,count(Date_received) as 领券总数,(sele…

高级Spring之Aware 接口

Aware 接口功能阐述: Aware 接口提供了一种【内置】 的注入手段,例如 a.BeanNameAware 注入 bean 的名字b.BeanFactoryAware 注入 BeanFactory 容器 c.ApplicationContextAware 注入 ApplicationContext 容器 d.EmbeddedValueResolverAware 注入 ${} 解…

力扣并查集

目录 1,路径压缩查找 323. 无向图中连通分量的数目 990. 等式方程的可满足性 200. 岛屿数量 419. 甲板上的战舰 695. 岛屿的最大面积 733. 图像渲染 1992. 找到所有的农场组 947. 移除最多的同行或同列石头 1020. 飞地的数量 547. 省份数量 827. 最大人…

浅谈对 Binder 的理解

文章目录Binder 是干嘛的?Binder 的意义binder 的通信架构如何启动 binder 机制binder 通信binder 驱动的分层架构图需要了解的知识 binder 是干嘛的binder 的存在意义是怎样的Android 为什么选择 binder 作为主要的 ipc 通信机制?binder 的架构 Binde…

Vue 3 介绍

Vue 3 介绍Vue3 动机 和 新特性Vite 的使用为什么选 Vite为什么要学习 vue 3Vue是国内最火的前端框架Vue 3 于 2022 年 2 月 7 日星期一成为新的默认版本!Vue3性能更高,体积更小Vue3.0在经过一年的迭代后,越来越好用 目前已支持 vue3 的UI组…

Python简介安装与PyCharm安装使用

一、Python简介 Python官方文档:https://docs.python.org/zh-cn/3/ Python 3.x 已经将 UTF-8 作为默认的源文件编码格式。 1、Python简介 Python 是一门开源免费、通用型的脚本编程语言,它上手简单,功能强大,坚持「极简主义」&am…

Visual Studio Code (VS Code) - 列块编辑与查找

Visual Studio Code (VS Code) - 列块编辑与查找1. 列块选择 Shift Alt 鼠标左键,进行列编辑,批量增删改。 在选定位置按下滚轮键 (鼠标中键) 不放,移动鼠标完成多列选择。 2. 页面双列布局 查看 -> 编辑器布局 -> 双列 3. 查…

linux使用ZLMediaKit搭建rtsp服务器

入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 致敬rtsp 服务器搭建_音视频开发老马的博客-CSDN博客_rtsp服务器 这里是参考上面链接的介绍再进行一些自己遇到的问题的补充。 一…

一种化学荧光探针945928-17-6,TAMRA alkyne,5-isomer,四甲基罗丹明-炔基

【中文名称】5-四甲基罗丹明-炔基【英文名称】 TAMRA alkyne,5-isomer【CAS】945928-17-6【分子式】C28H25N3O4【分子量】467.53【纯度标准】95%【包装规格】5mg,10mg,25mg【是否接受定制】可进行定制,定制时间周期上面可以和我们进行沟通【外…

redis常用数据类型和应用场景

我们都知道 Redis 提供了丰富的数据类型,常见的有五种:String(字符串),Hash(哈希),List(列表),Set(集合)、Zset&#xff0…

稀疏表(ST表,Sparse Table)

ST表用来解决区间最值问题(也可以解决区间gcd) 利用倍增的思想,O(nlog⁡2n)O\left(n\log_2 n\right)O(nlog2​n)预处理,O(1)O\left(1\right)O(1)区间查询 令f(i,j)f\left(i,j\right)f(i,j)表示区间[i,i2j−1]\left[i,i2^j-1\right…

TypeScript 学习笔记总结(二)

TypeScript 笔记记录,侧重于接口,对象等内容。 文章目录一、 TS 面向对象二、TS 类三、TS 继承四、TS super关键字五、TS 抽象类六、TS 接口七、TS 属性封装八、TS 泛型一、 TS 面向对象 js也是面向对象的,并不是面向过程的。 下面&#xf…

虹科案例 | AR数字化解决方案在石油与天然气领域“大放异彩”

石油和天然气在当今人类社会中扮演着重要角色,但是石油和天然气的开采,却是耗费成本巨大的工程,石油和天然气公司也在不断寻找着能帮助他们降低运营成本并提高效率的好方法。 事实上,AR技术解决方案能帮助这些公司实现他们的目标…

Linux[安装gitlab笔记]

参考文章:https://www.jianshu.com/p/2cb10c11813d CentOS7下安装gitlab中文版 前提: 下载文件:gitlab-ce-12.9.2-ce.0.el7.x86_64.rpm 地址1:https://packages.gitlab.com/gitlab/gitlab-ce 地址2:https://mirrors.…

JVM——类加载与字节码技术(3)

目录四、类加载阶段4.1 加载4.2 链接4.3 初始化五、类加载——练习练习1练习2四、类加载阶段 4.1 加载 ① 将类的字节码载入方法区(1.8后为元空间,在本地内存中)中,内部采用 C 的 instanceKlass ● _java_mirror 即 java 的类镜…

大数据技术架构(组件)10——Hive:集合函数类型转化函数

1.4.3、集合函数1.4.3.1、size select map(a,1,b,2),size(map(a,1,b,2)),array(1,2,3,4),size(array(1,2,3,4));1.4.3.2、map_keysselect map(a,1,b,2), map_keys(map(a,1,b,2));1.4.3.3、map_valuesselect map(a,1,b,2), map_values(map(a,1,b,2));1.4.3.4、array_containssel…

中国国际电子商务中心与易观分析联合发布:2022年3季度全国网络零售发展指数同比增长1.5%

近日,中国国际电子商务中心与易观分析联合发布2022年3季度“全国网络零售发展指数”及其分指数。2022年3季度全国网络零售发展指数同比增长1.5%,环比下降2.9%。随着稳经济一揽子政策和接续措施全面落地显效,生产加快回暖,经济平稳…

vmstat、free、df、iostat、sar

1. vmstat看CPU vmstat -n 2 3 一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数单位是秒,第二个参数是采样的次数 -procs r:运行和等待CPU时间片的进程数,原则上1核的CPU的运行队列不要超过2,整个…

Softing为Endress+Hauser提供过程自动化连接解决方案

一 背景 恩德斯豪斯(EndressHauser)是一家总部位于瑞士的过程工业自动化解决方案的全球领军企业,致力于为过程工业及实验室自动化领域提供测量仪器、服务和解决方案。其产品被广泛应用于石油、化工、制药、食品饮料以及废水处理等过程自动化…

银河麒麟V10操控系统Qt安装

下载安装镜像申请试用https://www.kylinos.cn/support/trial.html,根据CPU架构选择要下载的安装包。AMD、Intel的CPU下载银河麒麟桌面操作系统V10 AMD64版本,我下载的Kylin-Desktop-V10-SP1-HWE-Release-2203-X86_64.iso制作系统安装启动U盘下载制作启动…