架构分析与设计到实现的过程展示

本文详述了一种云数据中心数据同步子系统的架构设计过程,涉及需求分析、流程设计、功能划分、架构设计、接口定义及任务执行接口实现。系统采用定时任务方式,针对源端数据同步的约束,设计了初始化、数据同步任务和数据保存流程,并通过MQ解耦,实现了数据的高效迁移。关键技术包括XXL-JOB任务调度、JAVA开发和RabbitMQ消息中间件。
摘要由CSDN通过智能技术生成

一、需求

2017年底开始,有一个项目计划,建设云数据中心,然后基于数据开拓增值服务。

背景:略。

要建议云数据中心,第一个就是要先把源端的数据同步回来。源端就是第三方,向我们开放数据服务,我们可以根据我们的用户,把我们用户相关的信息从源端同步到云端。这种场景就好像是:开办信用卡的代理只能通过它的客户(信用卡申请人)授权,才能查看客户的信贷信息。

源端的主要约束,除了上述的外,还有:

1)  只能在每个月的16号到月底可以同步。

2)  每次只能同步一种数据(据源端方面的人所说,一种数据其实就是对应他们的一张表)。数据有700多种,也就是有700多个数据接口,分三类,A类有20多种数据,B类有10多种数据,C类有700多种数据。

3)  只接受我们的10个并发请求。

4)  都是日志类的数据,数据接口的每次调用必须设置时间标识。时间的跨度越大,返回的数据量就越大。

我们的主要约束(要求):

1)  数据保存在公有云,数据库是MySQL。

2)  由于某种原因,我们必须采用定时任务方式同步数据。定时方式,我们又称为任务策略。

3)  不提供操作界面。

下面,就数据同步子系统的建设进行分析与设计。

二、分析与设计

1、  流程分析与设计:

1)初步分析与结果:

因为我们必须根据我们手上的用户信息,才能把源端的数据同步回来,因此,我们必须有个初始化步骤,把我们用户关键信息还有源端的数据种类导入来。接着,就是启动任务将数据同步回来,再将同步回来的数据根据数据种类不同而分开保存(也就是说,每个源端的数据种类,在云端都有一个对应的数据表)。流程是这样的:


每次不能同步太多的数据回来,因此,我们决定按数据类型、数据种类、时间标识分批将数据同步回来,另外,将原来一个流程拆分为初始化与数据同步(任务)两个流程。

初始化流程:


数据同步(任务)流程:



于是,得出粗略的第一个业务建模版本:

“签约用户”、“待同步数据种类列表”与“源数据获取”有关联,为了解耦,设计了一个新的业务对象“签约用户待同步数据”,也就是说,“签约用户待同步数据”是由“签约用户”和“待同步数据种类列表”组成。

“同步任务”是由“源数据获取”、“同步日志”、“任务策略”组成。

第一版业务建模:


设计第一版本的接口与交互:

数据初始化流程,在系统初始化时发生,也就是签约用户数据与源数据种类的数据导入,计划手工完成,因此不设计接口;并且,即使不是手工导入,也不考虑接口设计,只关注关键的部分,也就是通过数据同步任务将数据取回来,于是设计了数据同步任务相关接口与交互,如下图:


2)迭代一

根据上述的接口设计,再优化业务模型:

增加了“调用上下文”业务对象,使任务与数据保存解耦。如下图所示:


因为已经打算将“数据保存”从“任务”同解耦出来,不过,在流程设计中还没有体现出来,当然接口设计中也没有体现出来,于是,重新设计数据保存(任务)的流程与接口。

任务流程:


数据保存流程:


任务与数据保存接口设计与交互:

可以看到&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值