本发明涉及主数据管理系统领域,尤其涉及一种基于订阅发布的分布式数据同步系统。
背景技术:
1、对于一个大型的公司或企业,公司内部一定会有主数据管理系统,主数据包括公司、部门、岗位、人员、角色等等。这些主数据是所有业务系统共用的数据,当一个新系统创建时,如果需要用到主数据相关信息,就需要接入主数据管理系统,获取统一的数据,业务系统可以在主数据基础上做扩展以满足系统的业务需求。这样基于相同主数据的不同业务系统就可以进行数据交换和同步而不必担心数据会出现不一致的情况。
2、常见的主数据管理系统与业务系统的数据同步方案为以下两种:
3、1.主数据管理系统主动下发数据到各业务系统。
4、当主数据发生变更时(新增、修改、删除)等,主数据主动将变更的数据实时通过接口调用的方式下发到各业务系统,该方案通常为增量的数据同步。
5、2.由业务系统定时从主数据管理系统拉取数据。
6、主数据系统数据发生变更时不通知业务系统,由业务系统定时轮询调用主数据系统接口获取全量数据,再与本地数据做比较后更新到业务系统数据库中。
7、1.主数据管理系统主动下发数据到各业务系统。
8、该方案适用于数据变更较少、下游业务系统数量可控且各下游业务系统获取的主数据一致的情况。如果主数据变更频繁,当遇到网络问题时会出现下发失败以及接口幂等性等问题。下游业务系统的数量又直接影响了下发的速度,且下发速度会随着下游业务系统的增多变得越来越慢。下游业务系统可能只需要部门数据或者人员数据或者某个部门下的人员数据,这样需要主数据系统针对不同的业务管理系统做功能开发或者主数据管理系统不管业务系统是否需要这些数据都同步给下游系统,这样又会造成下游业务系统数据冗余。
9、2.由业务系统定时从主数据管理系统拉取数据。
10、该方案最大的问题是数据的实时性没法保证,不能第一时间获取到最新的数据,数据的延迟取决于定时任务的执行频率,执行频率的设置又需要考虑多方面的因素,比如数据量的大小、网络带宽的影响、主数据系统服务器响应的及时性等等。
技术实现思路
1、鉴于上述问题,提出了本发明以便提供克服上述问题或者至少部分地解决上述问题的一种基于订阅发布的分布式数据同步系统。
2、根据本发明的一个方面,提供了一种基于订阅发布的分布式数据同步系统,所述同步系统包括:订阅发布、客户端、服务端、服务端watch的触发过程、客户端回调方法的执行过程。
3、可选的,所述订阅发布整体是基于zookeeper框架开发。
4、可选的,所述客户端用于注册一个带有watch监控事件的请求到服务端,并将watch事件持久化到客户端的监控管理器。
5、可选的,所述服务端用于处理接收客户端请求,如果请求带有watch事件,说明所述请求是一个订阅发布事件,并将watch事件持久化到服务端的监控管理器。
6、可选的,所述服务端watch的触发过程具体包括:用户在完成对节点数据的变更后,会调用监控管理器的triggerwatch()方法触发数据变更事件,最后通过调用process()方法向客户端发送通知。
7、可选的,所述客户端回调方法的执行过程具体包括:客户端通过readresponse()回调方法来统一处理服务端的响应。
8、可选的,所述处理服务端的响应具体包括:
9、根据回调的事件类型,在客户端的监控管理器中查询注册过watch事件;
10、将查询到的watcher事件存储到waitingevents队列中;
11、调用run()方法时会循环取出在waitingevents队列中等待的watcher事件进行处理。
12、可选的,所述系统的工程架构是基于spring cloudalibaba微服务框架搭建。
13、本发明提供的一种基于订阅发布的分布式数据同步系统,所述同步系统包括:订阅发布、客户端、服务端、服务端watch的触发过程、客户端回调方法的执行过程。当业务系统收到通知后自行调用主数据提供的接口获取数据,规避了重复无用的轮询,节省服务器资源的同时降低了数据出错的风险。
14、上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
1.一种基于订阅发布的分布式数据同步系统,其特征在于,所述同步系统包括:订阅发布、客户端、服务端、服务端watch的触发过程、客户端回调方法的执行过程。
2.根据权利要求1所述的一种基于订阅发布的分布式数据同步系统,其特征在于,所述订阅发布整体是基于zookeeper框架开发。
3.根据权利要求1所述的一种基于订阅发布的分布式数据同步系统,其特征在于,所述客户端用于注册一个带有watch监控事件的请求到服务端,并将watch事件持久化到客户端的监控管理器。
4.根据权利要求1所述的一种基于订阅发布的分布式数据同步系统,其特征在于,所述服务端用于处理接收客户端请求,如果请求带有watch事件,说明所述请求是一个订阅发布事件,并将watch事件持久化到服务端的监控管理器。
5.根据权利要求1所述的一种基于订阅发布的分布式数据同步系统,其特征在于,所述服务端watch的触发过程具体包括:用户在完成对节点数据的变更后,会调用监控管理器的triggerwatch()方法触发数据变更事件,最后通过调用process()方法向客户端发送通知。
6.根据权利要求1所述的一种基于订阅发布的分布式数据同步系统,其特征在于,所述客户端回调方法的执行过程具体包括:客户端通过readresponse()回调方法来统一处理服务端的响应。
7.根据权利要求6所述的一种基于订阅发布的分布式数据同步系统,其特征在于,所述处理服务端的响应具体包括:
8.根据权利要求1所述的一种基于订阅发布的分布式数据同步系统,其特征在于,所述系统的工程架构是基于spring cloud alibaba微服务框架搭建。