一种基于消息队列的第三方应用数据同步系统技术方案

技术编号:28474208 阅读:25 留言:0更新日期:2021-05-15 21:42
本发明专利技术提供一种基于消息队列的第三方应用数据同步系统,属于数据同步技术领域,本发明专利技术包括分为三个模块,即Web平台应用模块、消息中转服务模块、第三方应用,Web服务对第三方应用数据同步时,通过引入消息中间件,减少业务系统的复杂度,降低与业务系统的耦合度。实现功能可控,灵活操控,数据安全。数据安全。数据安全。

【技术实现步骤摘要】
一种基于消息队列的第三方应用数据同步系统


[0001]本专利技术涉及数据同步
,尤其涉及一种基于消息队列的第三方应用数据同步系统。

技术介绍

[0002]对于一个Web平台性的系统来说,往往需要对其他程序进行数据同步,即是以自己做的系统为平台,使用第三方的程序。需要和第三方的程序数据打交道,需要通过调用第三方程序接口来传递数据。这样对于Web平台来说,调用第三方程序接口有些值得注意的地方,尽可能接近实时的同步、不会因为调用的失败或异常而扰乱系统。
[0003]消息队列是在消息的传输过程中保存消息的容器。队列的主要目的是提供路由并保证消息的传递,如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。消息发送者无需知道消息接收者是谁,使得系统设计更清晰。消息队列的好处有很多,第一提高系统响应速度,使用消息队列,生产者一方,把消息往消息队列里一扔,就可以立马返回响应用户,无需等待处理结果;第二保证消息的传递,如果发送消息时接收者不可用,消息队列会保留消息,直到成功的传递它;第三解耦,只要信息格式不变,即使接收者的接口、位置、或者配置改变,也不会给发送者带来任何改变。

技术实现思路

[0004]为了解决以上技术问题,本专利技术提供了一种基于消息队列的第三方应用数据同步系统,Web服务对第三方应用数据同步时,通过引入消息中间件,减少业务系统的复杂度,降低与业务系统的耦合度。实现功能可控,灵活操控,数据安全。
[0005]本专利技术的技术方案是:
[0006]一种基于消息队列的第三方应用数据同步系统,
[0007]分为三个模块,即Web平台应用模块、消息中转服务模块、第三方应用;
[0008]其中,
[0009]Web平台应用模块接收来自用户从不同终端发起的数据修改请求并通过消息中转服务进行数据同步,
[0010]消息中转服务模块分为消息队列和同步服务,消息队列中通过搭建RocketMQ分布式消息队列用于接收来自业务系统的数据流,管理不同应用的消息;同步服务中,搭建自有的数据同步服务来监听消息队列中的数据,作为RocketMQ的消费者根据项目业务信息自定义实现;一方面实现监听消息队列中的数据,一方面实现将监听到的数据通过HTTP协议传输到第三方应用,实现整个链路中的数据传输,而且不会影响原有业务系统中的数据流转和业务操作。
[0011]进一步的,
[0012]为保障数据同步服务与第三方应用传输过程中的安全性,数据同步服务中使用了Oauth2协议。
[0013]进一步的,
[0014]Web平台应用模块,接收来自用户从不同终端发起的数据修改请求,请求信息包括登录账号、用户编号、应用编号、时间戳等登录用户信息数据,将自身业务与需同步的数据分两步进行,在自身业务完成并成功存储后再通过消息中转服务进行数据同步,以保证同步数据的有效性。
[0015]进一步的,
[0016]在向消息队列发送消息时,一个应用使用一个Topic,消息子类型用tags来标识,tags可由应用自由设置;只有发送消息设置了tags,消费方在订阅消息时,才可以利用tags在broker做消息过滤;每个消息在业务层面的唯一标识码,要设置到keys字段,方便将来定位消息丢失问题。
[0017]进一步的,
[0018]服务器为每个消息创建索引,应用通过topic,key来查询这条消息内容,以及消息被谁消费;保证key唯一,避免潜在的哈希冲突;
[0019]消息发送成功或者失败,要打印消息日志,打印send result和key字段;
[0020]send消息方法,只要不抛异常,就代表发送成功;发送成功会有一个以上状态,在sendResult里进行定义。
[0021]进一步的,
[0022]在消息中转服务模块消息队列中,通过搭建分布式消息队列用于接收来自业务系统的数据流,消息队列采用RocketMQ;以Topic来管理不同应用的消息,原有业务系统是业务数据变动的发起者,为RocketMQ的生产者,发送消息时,根据消息类型是否一致、业务是否相关联、消息优先级是否一致、消息量级是否相当,来指定消息的topic+tag,对于消费者而言,在启动后需要订阅相应的topic+tag,然后可以消费相应的消息,进行流量削锋;其中消费者为数据同步服务。
[0023]在消息中转服务模块同步服务中,监听的消息队列为RocketMQ,使用的消息原语是At Least Once;在消费时记录日志,以便后续定位问题。
[0024]进一步的,
[0025]在认证服务中,调用密钥管理服务根据应用编号查询获取指定应用的私钥和盐值,认证服务根据同样的算法计算签名值并与身份认证模块提交的签名值比较,如果签名值一致则认证成功,为客户终端模块生成访问令牌,将验证结果和访问令牌返回给身份认证模块;如果签名值不一致则认证失败,将验证结果返回给身份认证模块。
[0026]在身份认证模块,处理认证服务模块的认证结果,如果认证成功,将相关信息异步存储至HBase、关系数据库及Redis缓存用于后续的查询调用,并将访问令牌返回给客户终端模块,拿到访问令牌后用户即可访问信息系统中受保护的资源。
[0027]本专利技术的有益效果是
[0028](1)业务系统与用户数据同步服务解耦,不影响业务系统业务处理;
[0029](2)数据同步服务灵活,可针对不同平台快速适配;
[0030](3)提高了数据传输效率,有利于项目整体进度。
[0031](4)提高了数据同步过程中的安全性,实现简洁、高效、灵活、安全的统一身份认证机制。
附图说明
[0032]图1是本专利技术系统的结构框图;
[0033]图2是RocketMQ消息订阅结构图。
具体实施方式
[0034]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例,基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0035]对于一个Web平台性的系统来说,往往需要对其他程序进行数据同步,即是以自己做的系统为平台,使用第三方的程序。需要和第三方的程序数据打交道,需要通过调用第三方程序接口来传递数据。这样对于Web平台来说,调用第三方程序接口有些值得注意的地方,尽可能接近实时的同步、不会因为调用的失败或异常而扰乱系统。数据流程主要分为三个模块,Web平台应用模块、消息中转服务模块、第三方应用。其中Web平台应用模块接收来自用户从不同终端发起的数据修改请求并通过消息中转服务进行数据同步,消息中转服务模块分为消息队列和同步服务,消息队列中通过搭建RocketMQ分布式消息队列用于接收来自业务系统的数据流,管理不同应用的消息,同步服务中,搭建自有的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于消息队列的第三方应用数据同步系统,其特征在于,分为三个模块,即Web平台应用模块、消息中转服务模块、第三方应用;其中,Web平台应用模块接收来自用户从不同终端发起的数据修改请求并通过消息中转服务进行数据同步,消息中转服务模块分为消息队列和同步服务,消息队列中通过搭建RocketMQ分布式消息队列用于接收来自业务系统的数据流,管理不同应用的消息;同步服务中,搭建自有的数据同步服务来监听消息队列中的数据,作为RocketMQ的消费者根据项目业务信息自定义实现;一方面实现监听消息队列中的数据,一方面实现将监听到的数据通过HTTP协议传输到第三方应用,实现整个链路中的数据传输,而且不会影响原有业务系统中的数据流转和业务操作。2.根据权利要求1所述的系统,其特征在于,为保障数据同步服务与第三方应用传输过程中的安全性,数据同步服务中使用了Oauth2协议。3.根据权利要求1所述的系统,其特征在于,Web平台应用模块,接收来自用户从不同终端发起的数据修改请求,请求信息包括登录用户信息数据,将自身业务与需同步的数据分两步进行,在自身业务完成并成功存储后再通过消息中转服务进行数据同步,以保证同步数据的有效性。4.根据权利要求1所述的系统,其特征在于,在向消息队列发送消息时,一个应用使用一个Topic,消息子类型用tags来标识,tags可由应用自由设置;只有发送消息设置了tags,消费方在订阅消息时,才可以利用tags在broker做消息过滤;每个消息在业务层面的唯一标识码,要设置到keys字段,方便将来定位消息丢失问题。5.根据权利要求4所述的系统,其特征在于,服务器为每个消息创建索引,应用通过topic,key来查询这条消息内容,以及消息被谁消费;保证key唯一,避免潜在的...

【专利技术属性】
技术研发人员:杜文典付君伟段其朴
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1