首页 / 专利库 / 软件 / 中间件 / 消息中间件 / 一种消息数据推送方法、系统及装置

一种消息数据推送方法、系统及装置

阅读:574发布:2020-05-12

专利汇可以提供一种消息数据推送方法、系统及装置专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种消息数据推送方法、系统及装置,利用Canal组件监控到采集 服务器 的 数据库 中数据信息是否发生变化,若发生变化,则获取发生变化的数据信息,并将所述发生变化的数据信息发送至消息 中间件 ,并通过所述 消息中间件 将发生变化的数据信息推送至各个用户客户端。因本发明所公开的消息数据推送方法,从采集服务器的配置入手,自动为用户客户端推送其订阅的表名称相对应的信息,从而实现数据的实时性推送,并且利用消息中间件建立用户客户端与采集服务器之间的信息通道,应用范围广,不仅仅支持web应用,还可以应用于其他消息中间件支持传输的应用场景,因此可以取得较佳的消息数据推送效果,提高了消息数据的推送效率。,下面是一种消息数据推送方法、系统及装置专利的具体信息内容。

1.一种消息数据推送方法,其特征在于,包括:
当Canal组件监控到采集服务器数据库中数据信息发生变化,则获取发生变化的数据信息,并将所述发生变化的数据信息发送至消息中间件
所述消息中间件将所述发生变化的数据信息推送至用户客户端。
2.根据权利要求1所述的消息数据推送方法,其特征在于,所述当Canal组件监控到采集服务器的数据库中数据信息发生变化,则获取发生变化的数据信息,并将所述发生变化的数据信息发送至消息中间件的步骤包括:
建立采集服务器与所述Canal组件之间的通信连接,以及所述采集服务器和所述用户客户端之间建立通信连接。
3.根据权利要求2所述的消息数据推送方法,其特征在于,所述采集服务器、所述用户客户端之间建立通信连接的步骤之后,还包括:
所述用户客户端将订阅信息以及所述消息中间件的消息队列名发送至所述采集服务器。
4.根据权利要求3所述的消息数据推送方法,其特征在于,所述当Canal组件监控到采集服务器的数据库中数据信息发生变化,则获取发生变化的数据信息,并将所述发生变化的数据信息发送至消息中间件的步骤包括:
所述采集服务器获取所述用户客户端所发送的订阅信息以及消息队列名,并将所述订阅信息和所述消息队列名保存到一连接库;
所述连接库根据所述订阅信息及消息队列名将发送变化的数据信息发送至所述消息中间件。
5.根据权利要求4所述的消息数据推送方法,其特征在于,所述连接库根据所述订阅信息及消息队列名将发送变化的数据信息发送至所述消息中间件的步骤,还包括:
根据接收到的用户订阅信息中含有的表名称,对所述数据信息进行数据整合,将数据信息中所含内容与所述订阅信息中的各个表名称相对应;
根据各个表名称所对应的消息队列名将整合后的与各个表名称对应的数据列进行分发。
6.根据权利要求1所述的消息数据推送方法,其特征在于,所述用户客户端的个数为多个,每个用户客户端对应一个消息队列,任意两个消息队列的名称不同。
7.根据权利要求5所述的消息数据推送方法,其特征在于,所述根据各个表名称所对应的消息队列名将整合后的与各个表名称对应的数据列进行分发的步骤包括:
根据订阅信息中所对应表名称,获取与所述表名称相对应的回调函数,调用所述回调函数实现各个数据列的分发。
8.根据权利要求7所述的消息数据推送方法,其特征在于,所述消息中间件将所述发生变化的数据信息推送至用户客户端的步骤之后,还包括:
各个用户客户端监听所述消息中间件推送的数据信息,并接收所述数据信息中消息队列名与其相对应的数据列。
9.一种消息数据推送系统,其特征在于,包括:采集服务器、用户客户端;
所述采集服务器中设置有:Canal组件和数据库;所述消息中间件设置在所述采集服务器或者用户客户端上,或者独立于所述采集服务器或用户客户端设置;
所述Canal组件,用于监控到采集服务器的数据库中数据信息发生变化;以及当监听到所述数据库中数据信息发生变化时,则获取发生变化的数据信息,并将所述发生变化的数据信息发送至消息中间件;
所述消息中间件,用于将所述发生变化的数据信息推送至用户客户端。
10.一种消息数据推送终端,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述方法的步骤。

说明书全文

一种消息数据推送方法、系统及装置

技术领域

[0001] 本发明涉及信息推送技术领域,尤其涉及的是一种消息数据推送方法、系统及装置。

背景技术

[0002] 采集服务器是专用以采集和接收终端上报信息的一个服务器并将采集到的数据存储进服务器,例如:GPS定位信息,或者空调参数信息或者表信息等,目前我们的服务器在需要获取指定数据信息时都得连接上采集服务器,通过采集服务器进行指定数据信息的推送,这样会造成采集服务器的压提高,从而使得数据推送效率低,且由于查询需要一定的时间,无法实现数据的实时获取。为了解决数据推送效率低问题,常见的解决方案有用其他服务器每次去查询采集服务器的数据库,但是这种方式仅仅缓解了数据推送的压力,其同样存在需要一定的查询时间,无法实现数据的实时性获取的问题,无法满足用户需要同步获取到消息数据的要求。
[0003] 因此,现有技术有待于进一步的改进。

发明内容

[0004] 鉴于上述现有技术中的不足之处,本发明提供了一种消息数据推送方法、系统及装置,克服多个用户客户端同时连接采集服务器,查询指定信息时查询服务器的数据处理任务压力过大,导致数据查询失败,数据查询效率低,以及查询到的数据实时性低的缺陷
[0005] 本发明的实施例公开了一种消息数据推送方法,其中,包括:
[0006] 当Canal组件监控到采集服务器的数据库中数据信息发生变化,则获取发生变化的数据信息,并将所述发生变化的数据信息发送至消息中间件
[0007] 所述消息中间件将所述发生变化的数据信息推送至用户客户端。
[0008] 可选的,所述当Canal组件监控到采集服务器的数据库中数据信息发生变化,则获取发生变化的数据信息,并将所述发生变化的数据信息发送至消息中间件的步骤包括:
[0009] 建立采集服务器与所述Canal组件之间的通信连接,以及所述采集服务器、所述用户客户端与所述消息中间件三者之间均建立通信连接。
[0010] 可选的,所述采集服务器、所述用户客户端与所述消息中间件三者之间均建立通信连接的步骤之后,还包括:
[0011] 所述用户客户端将订阅信息以及所述消息中间件的消息队列名发送至所述采集服务器。
[0012] 可选的,所述当Canal组件监控到采集服务器的数据库中数据信息发生变化,则获取发生变化的数据信息,并将所述发生变化的数据信息发送至消息中间件的步骤包括:
[0013] 所述采集服务器获取所述用户客户端所发送的订阅信息以及消息队列名,并将所述订阅信息和所述消息队列名保存到一连接库;
[0014] 所述连接库根据所述订阅信息及消息队列名将发送变化的数据信息发送至所述消息中间件。
[0015] 可选的,所述连接库根据所述订阅信息及消息队列名将发送变化的数据信息发送至所述消息中间件的步骤,还包括:
[0016] 根据接收到的用户订阅信息中含有的表名称,对所述数据信息进行数据整合,将数据信息中所含内容与所述订阅信息中的各个表名称相对应;
[0017] 根据各个表名称所对应的消息队列名将整合后的与各个表名称对应的数据列进行分发。
[0018] 可选的,所述用户客户端的个数为多个,每个用户客户端对应一个消息队列,任意两个消息队列的名称不同。
[0019] 可选的,所述根据各个表名称所对应的消息队列名将整合后的与各个表名称对应的数据列进行分发的步骤包括:
[0020] 根据订阅信息中所对应表名称,获取与所述表名称相对应的回调函数,调用所述回调函数实现各个数据列的分发。
[0021] 可选的,所述消息中间件将所述发生变化的数据信息推送至用户客户端的步骤之后,还包括:
[0022] 各个用户客户端监听所述消息中间件推送的数据信息,并接收所述数据信息中消息队列名与其相对应的数据列。
[0023] 本实施例还公开了一种消息数据推送系统,其中,包括:采集服务器、用户客户端以及与所述采集服务器和用户客户端均通信连接的消息中间件;
[0024] Canal组件和数据库;所述消息中间件设置在所述采集服务器或者用户客户端上,或者独立于所述采集服务器或用户客户端设置;
[0025] 所述Canal组件,用于监控到采集服务器的数据库中数据信息发生变化;以及当监听到所述数据库中数据信息发生变化时,则获取发生变化的数据信息,并将所述发生变化的数据信息发送至消息中间件;
[0026] 所述消息中间件,用于将所述发生变化的数据信息推送至用户客户端。
[0027] 本实施例还公开了一种消息数据推送终端,包括存储器和处理器,所述存储器存储有计算机程序,其中,所述处理器执行所述计算机程序时实现所述方法的步骤。
[0028] 本发明所公开的一种消息数据推送方法、系统及装置,利用Canal组件监控到采集服务器的数据库中数据信息是否发生变化,若发生变化,则获取发生变化的数据信息,并将所述发生变化的数据信息发送至消息中间件,并通过所述消息中间件将发生变化的数据信息推送至各个用户客户端。因本发明所公开的消息数据推送方法,从采集服务器的配置入手,自动为用户客户端推送其订阅的表名称相对应的信息,从而实现数据的实时性推送,并且利用消息中间件建立用户客户端与采集服务器之间的信息通道,应用范围广,不仅仅支持web应用,还可以应用于其他消息中间件支持传输的应用场景,因此可以取得较佳的消息数据推送效果,提高了消息数据的推送效率。附图说明
[0029] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0030] 图1是本发明实施例中一个示例性出应用场景的框架示意图;
[0031] 图2是本发明实施例中一种消息数据推送方法的步骤流程图
[0032] 图3是本发明所述方法具体实施例中初始化过程的步骤流程图;
[0033] 图4是本发明实施例所述方法具体实施例中消息数据推送的步骤流程图;
[0034] 图5是本发明实施例中所述系统的原理结构框图

具体实施方式

[0035] 为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
[0036] 发明人经过研究发现,对于现有的采集服务器,由于各个用户客户端需要从采集服务器中获取数据信息,因此当多个用户客户端同步对采集服务器发出查询请求时,会导致采集服务器的数据推送产生较大的压力,并且查询数据信息和推送查询到的数据信息需要一定的信息处理时间,采集服务器的数据处理时间越久则数据查询的实时性越低,比如:当用户客户端进行GPS定位信息查询时,若查询时间较长,则可能会导致显示的GPS定位信息不准确,查询到的GPS定位信息存在滞后的现象。
[0037] 为了解决上述问题,本发明实施例中,当利用与采集服务器和用户客户端均建立连接的消息中间件,实现消息数据的从采集服务器到各个用户客户端之间的推送。所述采集服务器中设置有用于对数据库中存储的消息数据是否发生变化进行监控的Canal组件,当所述Canal组件监控到数据库中存储的消息数据发生变化,采集服务器会根据发生变化的消息数据中是否含有与各个用户客户端所订阅的表名称相对应的数据信息,若有,则根据用户客户端所订阅的表名称通过消息中间件,将数据信息发送至用户客户端。
[0038] 举例说明,本发明实施例可以应用到如图1所示的场景,在该场景中,用户客户端101和采集服务器102之间建立通信连接,所述采集服务器上设置有Canal组件和数据库;所述消息中间件设置在所述采集服务器或者用户客户端上,或者独立于所述采集服务器或用户客户端设置;用于客户端侧连接所述采集服务器,以及连接上一个消息中间件,当用户客户端连接到采集服务器后,将其所连接的消息中间件的消息队列名称,以及其想要订阅的表名称发送到采集服务器。所述采集服务器上的消息数据信息存储的数据库与Canal组件相连接,并且所述Canal组件对数据库中所存储的数据信息是否发生变化进行监控,当监控到存储的数据信息发生变化,则根据用户客户端提供的订阅的表名称,推送数据到与用户客户端相连接的消息中间件,所述消息中间件将接收到的数据信息传输至用户客户端。其中推送的数据信息可以是采集服务器采集到的GPS定位数据,也可以是水表上的流水量,采集到的温度值或者其他采集数据。
[0039] 需要注意的是,上述应用场景仅是为了便于理解本发明而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
[0040] 下面结合附图,详细说明本发明的各种非限制性实施方式。
[0041] 示例性方法
[0042] 参考图2,本发明的实施例公开了一种消息数据推送方法,在本实施例中,所述方法例如可以包括以下步骤:
[0043] 步骤S1、当Canal组件监控到采集服务器的数据库中数据信息发生变化,则获取发生变化的数据信息,并将所述发生变化的数据信息发送至消息中间件。
[0044] 所述Canal组件基于数据库增量日志解析,提供增量数据订阅与消费,具体的,其通过模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议mysql master收到dump请求,开始推送binary log给slave(也就是canal),canal解析binary log对象(原始为byte流),从而得到数据库增量的数据信息。本步骤中利用Canal组件对采集服务器中的数据库中发生的增量数据信息进行监控,并获取所述数据信息,以及将所述数据信息发送至消息中间件。
[0045] 所述消息中间件为一种非底层操作系统软件,非业务应用软件,其用于数据的发送与接收,可在两个应用程序之间或分布式系统中发送消息,进行异步通信,因此其可以安装在用户客户端上,或者安装在采集服务器上,也可以安装在除用户客户端和采集服务器之外的第三个终端设备上,只要保持消息中间件可以接收采集服务器中Canal组件推送的数据信息,并将所述数据信息发送至所述用户客户端即可。
[0046] 具体的,所述当Canal组件监控到采集服务器的数据库中数据信息发生变化,则获取发生变化的数据信息,并将所述发生变化的数据信息发送至消息中间件的步骤包括:
[0047] 建立采集服务器与所述Canal组件之间的通信连接,以及所述采集服务器、所述用户客户端之间建立通信连接。
[0048] 步骤S2、所述消息中间件将所述发生变化的数据信息推送至用户客户端。
[0049] 所述消息中间件为队列模式,其可以接收上述步骤S1中Canal组件推送的数据信息,并将数据信息发送至用户客户端。
[0050] 在一种实施方式中,所述用户客户端可以为若干个,将用户客户端连接上所述消息中间件后,将其订阅的表名称发送至该消息中间件,以及会监听一个消息队列,获取该监听消息队列的名称。
[0051] 具体的,所述采集服务器和所述用户客户端之间建立通信连接的步骤之后,还包括:
[0052] 所述用户客户端将订阅信息以及所述消息中间件的消息队列名发送至所述采集服务器。
[0053] 当用户客户端与采集服务器建立通信连接后,用户客户端通过Restful接口发送给采集服务器订阅的表名称和其所监听的消息中间件的消息队列名称,则当Canal组件监听到采集服务器中数据库里面的数据发生变化后,根据其用户客户端发送的订阅的表名称和其监听的消息队列名称,将发生变化的数据信息发送至用户客户端。
[0054] 具体的,所述当Canal组件监控到采集服务器的数据库中数据信息发生变化,则获取发生变化的数据信息,并将所述发生变化的数据信息发送至消息中间件的步骤包括:
[0055] 所述采集服务器获取所述用户客户端所发送的订阅信息以及消息队列名,并将所述订阅信息和所述消息队列名保存到一连接库;
[0056] 所述连接库根据所述订阅信息及消息队列名将发送变化的数据信息发送至所述消息中间件。
[0057] 上述步骤中,使用一连接库保存用户发送到采集服务器中的订阅信息和消息队列名称,当采集服务器接收到所述订阅信息和消息队列名称后,上述信息进行保存。
[0058] 具体的,所述用户客户端的个数为多个,每个用户客户端对应一个消息队列,任意两个消息队列的名称不同。所述连接库根据所述订阅信息及消息队列名将发送变化的数据信息发送至所述消息中间件的步骤,还包括:
[0059] 根据接收到的用户订阅信息中含有的表名称,对所述数据信息进行数据整合,将数据信息中所含内容与所述订阅信息中的各个表名称相对应;
[0060] 根据各个表名称所对应的消息队列名将整合后的与各个表名称对应的数据列进行分发。
[0061] 每个用户客户端与其订阅的表名称,以及所连接的消息中间件中消息队列名称所一一对应,则当Canal组件将所述发生变化的数据信息推送到消息中间件时,则先根据用户客户端所订阅的表名称,以及对应的消息队列名称对所述发生变化的数据信息进行整合,根据各个用户客户端订阅的表名称调用相对应的回调函数,以及根据对应的消息队列名称进行相应的数据信息推送,从而实现数据的分发。
[0062] 在具体实施时,所述根据各个表名称所对应的消息队列名将整合后的与各个表名称对应的数据列进行分发的步骤包括:
[0063] 根据订阅信息中所对应表名称,获取与所述表名称相对应的回调函数,调用所述回调函数实现各个数据列的分发。
[0064] 由于Canal组件一次推送整合了N行数据到消息中间件,因此为了便于实现各个行数据的分发,我们把这N行数据的数据库表名称以及数据写进字典,数据库表名称是Key,Value是数据,然后遍历这个字典,如果表名称有用户订阅的,多线程方式调用用户提供的回调函数,参数就是Canal传输过来的数据。
[0065] 具体的,所述消息中间件将所述发生变化的数据信息推送至用户客户端的步骤之后,还包括:
[0066] 各个用户客户端监听所述消息中间件推送的数据信息,并接收所述数据信息中消息队列名与其相对应的数据列。
[0067] 结合图3和图4所示,对本发明所述方法的具体实施例做进一步的更为详细的说明。
[0068] 步骤H1、在开始时,由于Canal组件通过模拟mysql slave的交互协议实现对数据库中数据变化的监听,因此首先需要配置mysql,通过开启binglog实现Canal组件的启动。
[0069] 步骤H2、将采集服务器中的数据库与所述Canal组件建立连接,并判断是否连接成,若不成功,则无法实现利用Canal组件对数据库的数据信息进行监听,因此若连接成功,则可以进行下一步,否则需要重新连接Canal组件,直至连接成功。
[0070] 步骤H3、采集服务器接收各个用户客户端发送的订阅的表名称以及记录与各个订阅的表名称相对应的回调函数。
[0071] 上述步骤完成后,采集服务器的初始化过程结束。
[0072] 如图4所示,当上述初始化过程完成后,则执行以下步骤的消息数据推送步骤,具体如下:
[0073] G1、采集服务器将接收到的消息数据插入到数据库中,通过数据库进行消息数据的保存。
[0074] G2、Canal组件通过监听数据库的日志文件,监听到所述数据库中有消息数据发生变化。
[0075] G3、与所述Canal组件相连接的连接库接收到所述数据库中有消息数据发生变化。
[0076] G4、判断Canal组件推送的整合数据的条数是否为0,若是,执行步骤G5,否则执行步骤G6。
[0077] G5、判断是否有与用户客户端订阅的表名称的长度是否为0,若是则判所述表名称的长度是否与数据类型以及数据是否均为0,若是,则结束,否则,执行步骤G8。
[0078] G6、取出表名称。此处的表名称可以为预设的多个表名称,其包含用户客户端可能订阅的表名称。
[0079] G7、根据表名称将消息数据添加到字典中。
[0080] G8、遍历字典,根据表名称从字典中提取出相对应的数据。
[0081] G9、判断提取出的数据中所含有的表名称是否有用户客户端订阅的表名称,若有,则根据用户客户端订阅的表名称调用回调函数推送数据到客户端。
[0082] 上述步骤G7至G9过程中,还包括多次提取或者多次调用回调函数的过程,以使得Cananl组件推送的消息数据中所含有与表名称对应的数据全部写入字典,以及根据用户客户端发送的表名称,遍历全部的字典,查找出全部与用户客户端订阅的表名称相对应的数据,使得与用户客户端所订阅的表名称所对应的消息数据全部推送成功。
[0083] 示例性设备
[0084] 本实施例还公开了一种消息数据推送系统,如图5所示,包括:采集服务器10、用户客户端20以及与所述采集服务器和用户客户端均通信连接的消息中间件30;
[0085] 所述采集服务器10中设置有:Canal组件101和数据库102;
[0086] 所述Canal组101件,用于监控到采集服务器10的数据库102中数据信息发生变化;以及当监听到所述数据库102中数据信息发生变化时,则获取发生变化的数据信息,并将所述发生变化的数据信息发送至消息中间件30;
[0087] 所述消息中间件30,用于将所述发生变化的数据信息推送至用户客户端。
[0088] 本实施例还公开了一种消息数据推送终端,包括存储器和处理器,所述存储器存储有计算机程序,其中,所述处理器执行所述计算机程序时实现所述方法的步骤。
[0089] 本发明所公开的消息数据推送方法、系统及装置,利用Canal组件监控到采集服务器的数据库中数据信息是否发生变化,若发生变化,则获取发生变化的数据信息,并将所述发生变化的数据信息发送至消息中间件,并通过所述消息中间件将发生变化的数据信息推送至各个用户客户端。因本发明所公开的消息数据推送方法,从采集服务器的配置入手,自动为用户客户端推送其订阅的表名称相对应的信息,从而实现数据的实时性推送,并且利用消息中间件建立用户客户端与采集服务器之间的信息通道,应用范围广,不仅仅支持web应用,还可以应用于其他消息中间件支持传输的应用场景,因此可以取得较佳的消息数据推送效果,提高了消息数据的推送效率。
[0090] 应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制[0091] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈