一种接入第三方数据的中间服务设计方案🕶️

107 阅读2分钟

前言

在我们工作中,经常会遇到这样的场景,与第三方系统对接,并同步数据。每次遇到这种系统,我的表情可不就是下图?

image.png

解决这种需求,总是免不了各种各样的接口调用,为了一劳永逸,我决定设计一个中间服务,用于同步和分发第三方数据。

架构图

image.png

数据库设计

image.png

    

同步思路

首次推送

在推动时,我们会往sync_data_post_log 推送记录表插入一条推送数据,此条数据存储本次推送的所有报文。

sync_data已同步数据表存储单条数据

sync_data_log同步数据操作记录表存储单条数据 的操作日志以及同步失败的错误信息

image.png

第二次推送

image.png

接口设计

POST /datasync/v1/sync

Body 请求参数

{
    "Parameters": [
        {
            "id": "100001",
            "name": "张三",
            "key": "20003510",
            "info": "test post message",
      
        }
    ]
}
复制代码

请求参数

名称位置类型必选说明
bodybodyjson

返回结果

成功结果

{
    "result": "S",
    "msg": "成功
}
复制代码

失败结果

{
    "result": "F",
    "msg": "同步数据失败",
    "datas": [
        {
            "id": "663567440684519424",
            "status": "0",
            "msg": "数据不存在!"
        },
        {
            "id": "数据的唯一标识_ID",
            "status": "0",
            "msg": "失败原因"
        }
    ]
}
复制代码

系统异常结果

{
    "result": "E",
    "msg": "系统错误"
}
复制代码
状态码状态码含义说明数据模型
S成功!成功json
F导入失败!导入失败,失败数据存在返回datas中json
E服务错误!服务错误!请联系管理员json

返回数据结构

名称类型必选约束说明
» resultstringtruenone标识
» msgstringtruenone消息
» datasarrayfalsenone错误数据list
»» idstringtruenone数据id
»» statusstringtruenone0:失败,1:成功
»» msgstringtruenone失败原因

未完待续..既然看到这里了,不妨来个大大的点赞吧[送心]