我们建立一个数字化系统可能会有跟别的系统进行数据对接的需要,而别人的数字化系统也有可能需要跟我们的系统进行数据对接,也可能我们开发了不同的网站,网站小应用之间需要进行数据对接。那么数据对接应该如何操作呢?怎么才能更好地做好数据的同步?跨系统数据一致性问题怎么解决?本文旨在总结沉淀工作中问题的解决经验,通过统一的轻易云数据集成平台整理解决跨系统数据不一致问题的经验方法。
提到数据一致性,我们很容易想到的就是数据库中的事务操作。事务的原子性和持久性可以确保在一个事务内,操作多条数据,要么都成功,要么都失败。这样在一个系统内部,我们可以很自然地使用数据库事务来保证数据一致性。但是在微服务的今天,一项操作会涉及到跨多个系统多个数据库的时候,用单一的数据库事务就没办法解决了。另外常见的一种情况就是:存在依赖情况的系统服务,例如业务端与用户端(业务端负责生产数据,用户端负责展示数据),需要数据同步来保障跨系统服务的数据一致性,很多时候采用何种数据同步方式,来保障数据应用的时效性至关重要。
做数据对接需要考虑一个是单向数据对接还是双向的数据对接,如果是单向的数据对接我们只需要考虑去获取数据,也就是从目标数字化系统或是其它数字化系统从我们数字化系统上获取数据,我们通过API进行获取或是传输数据给对方。如果是我们数字化系统上注册的会员数据需要同步给对方,对方那边注册的会员数据,修改的会员资料也需要同步过来,做到数据双方的实时更新,这个就是做数据的双向对接了。不仅我们需要传输数据过去,对方也需要传输数据给我们,不过这个不需要我们提供API接口给对方,对方也提供API接口给我们,只需要一方的API接口实现数据的获取跟传输就可以了。这种数据的双向对接会用在很多的平台上,我们在进行对接的时候也要考虑我们需要的是数据的获取就可以,还是还需要把数据传送过去。如果是需要做到双向对接,而我们只考虑单向对接的话,数据就会出现问题。比如对方那边注册的会员数据同步给我们了,但是我们这边注册的会员数据没同步过去,客户就无法在对方数字化系统上登录使用。
为了能够更好的描述与理解数据一致性问题,通过一个案例来实战阐述:
假设存在订单系统与库存系统,分别是金蝶云ERP与一款WMS系统之间需要进行数据对接,在实际业务中订单的创建会伴随着系统仓库模块的库存减少。两个系统为分别部署,其应用数据也存放在独立的数据库中,两个系统间通过网络API接口进行通信。
如何做数据对接呢,这个主要是通过API进行的,也就是提供数据方编写接口文档,告知对接方应该通过哪一些的字段什么样的形式进行数据的获取。进行数字化系统搭建数据对接时不仅仅要考虑数据的获取,也要考虑到数据的传输,具体要用什么样的形式要看双方对于数据的要求。如果是不仅需要获取也需要传输的,就要将这方面的数据对接考虑上,不然对接之后,数据会出现问题,这个是一个主要注意的点。其它的,只要是有API接口,对接就基本不会有什么问题。
CAP 之间本身就是处于互斥的,只能从这三者中选两个处理,对于 CA、AP、CP 都有它们自己的应用场景,要结合实际进行选择。
比如,一个数据库的事务与多个数据库之间的 XA 事务性能可能相差 10 倍。另外,在 XA 的事务处理过程中它会长期占用锁资源,所以一开始我们并不考虑这个方案。
问题描述:还是回到之前的数据集成案例场景,数据需要从金蝶云星空系统同步到旺店通系统。订单系统同步到库存系统中。
解决数据一致性常用的三类数据同步方案:实时同步、定时同步、手动同步。数据集成平台设计核心特性:
• 实时数据集成API统一管理
• 可视化的配置工具
• 实现低代码集成方案
• 非入侵式
• 松耦合集成
• 不侵入现有业务系统
• 敏捷交付开箱即用
• 丰富的场景化集成方案
采用异步协程架构模式设计的数据集成平台,通过Message Queue(MQ),消息队列中间件。MQ 通过将消息的发送和接收分离来实现应用程序的异步和解偶,同时 MQ 屏蔽底层复杂的通讯协议,定义了一套应用层的、更加简单的通讯协议。在业务系统设计中,我们常常会存在一个平台系统 金蝶,它关联同步了许许多多的系统的对接(系统 聚水潭、泛微、MES 等)。利用 MQ 可以很好的解决系统对接和数据同步问题,同时可以忽略对接系统的稳定性等诉求。
• 调度事件
• 生产任务
• 调度任务池-异步
AsynDispatcher --source
• 消费任务
• 实例化集成应用 DataHub Instance
handleSourceDispatch()
• 依赖注入集成方案适配器
• 调度条件检查
• 执行适配器调度方法
• 联动其它方案调度任务 SourceEvent
• 初始化变量
• 根据元数据配置生成请求参数
• 向源队列存储器 写入任务=>JobId
• 生产任务
• 方案任务队列池-异步
租户进程
• 实例化集成应用 DataHub Instance
handleSourceJob()
• 根据任务id定位找到mongodb中对应的任务详情 JobId=>findSourceJob
• 执行适配器内SDK
Adapter->SDK->invoke()
• 事件加工厂 ScriptFactory::AfterSourceInvoke
• 处理响应数据
handleResponse
• 判断 接口请求任务 成功/失败
• 定位 Response 数据Key
• 遍历数据对象,Mongodb 存储对象
• 标记任务状态 Finished
• 提供InvokeRequest 进行分页查询任务
• Throwable 异常搜集器
• 标记任务状态 Error
• 任务重试机制 ReQueue()
2022-12-21 12:32:23 | |
2023-04-02 20:54:15 | |
2023-07-20 08:08:56 | |
2021-08-10 03:08:07 | |
2023-06-30 18:47:18 | |
2023-11-26 18:50:04 | |
2024-01-23 04:53:50 | |
2021-02-15 18:30:27 | |
2024-02-13 17:08:00 | |
2022-09-15 11:38:43 | |
2024-05-28 06:28:34 | |
2023-09-21 06:28:39 | |
2022-12-22 15:27:17 | |
2024-11-04 22:36:36 | |
2024-10-29 01:50:30 | |
2024-12-26 01:27:19 | |
2024-10-31 19:46:37 | |
2024-12-11 10:46:48 | |
2024-11-24 14:21:25 | |
2024-11-05 11:27:57 | |
2023-04-05 03:18:23 | |
2023-04-05 03:03:22 | |
2023-04-05 02:14:02 | |
2023-04-04 06:08:44 | |
2023-04-03 09:31:16 |
胡秀丛 15813570600
数据集成顾问 项目总监 她以卓越的数据集成专长,精通ERP、MES系统,以及数据中台的构建与优化。通过创新的一站式解决方案,她助力企业实现数据的无缝对接,提升业务流程效率,确保信息流通无障碍,为企业的数字化转型提供强有力的支持。
何海波 18175716035
数据集成顾问 轻易云的技术专家,拥有丰富的数据集成规划经验。他能够为客户提供专业、全面的数据集成规划方案,熟练掌握多种集成技术和工具,帮助企业在数据集成领域得到长远发展。
卢剑航 13760755942
数据集成专家 拥有十多年丰富的经验,擅长ERP、MES、数据中台、营销云中台等集成。他能够根据客户需求,为其提供一站式集成解决方案,帮助企业快速实现各类系统数据集成服务。
黄宏棵 13286997615
数据集成顾问 资深系统集成顾问,专长于ERP、电商OMS、钉钉及CRM系统。他能提供高效的集成方案,优化企业运营流程,提升业务效率和决策智能化。