一种消息推送方法、装置及系统
技术领域
本发明属于通信领域,尤其涉及一种消息推送方法、装置及系统。
背景技术
随着因特网Internet技术的广泛应用和计算机技术的飞速发展,人们可以把大量由中央处理器(Central Processing Unit,CPU)组成的计算机系统通过高速网络连接在一起组成分布式系统。
由于分布式系统中各个节点(计算机、服务器)在逻辑上和物理位置上都是相互独立,为了满足大数据时代对数据传输的需求(高可靠性、低延时等),因此,在分布式系统各节点之间引入消息中间件。
目前的消息中间件产品大体上分为两类,一类是总线型消息中间件,在分布式系统节点之间设置独立的消息队列(Message queue,MQ)服务器,消息的发送方将消息先发给该服务器,服务器程序对消息进行存储/路由,然后再转发给消息接收方,代表产品有Rabbit MQ服务器等;另一类是直联型消息中间件,由于消息中间件封装了操作系统的通讯层,各消息中间件可以在分布式系统的节点之间实现直接连接,代表产品有Zero MQ等。
然而,由总线型消息中间件组成的分布式系统,虽然利于系统扩展,但是,由于各节点的消息均需要经由MQ服务器进行中转,各节点之间数据传输延时较大。由直联型消息中间件组成的分布式系统中,由于采用点对点的组网模式,系统扩展较困难,并且,当分布式系统中有多个直联型消息中间件时,其中任意消息中间件出现故障将会导致分布式系统中各节点之间无法传送数据,无法保证消息可靠性。
发明内容
本发明提供一种消息推送方法、装置及系统,能够快捷的对分布式网络进行扩展,能够提高推送数据的吞吐量,有效降低推送数据的传输延迟。
为解决上述问题,本发明第一方面提供一种消息推送方法,所述方法包括:
消息队列服务器接收通过代理服务器发送的订阅请求;其中,所述订阅请求包括所述代理服务器的标识以及需要订阅的目标数据信息;
所述消息队列服务器将所述订阅请求发送至任一推送服务器;
接收到所述订阅请求的所述推送服务器根据所述订阅请求获取与所述订阅请求匹配的目标数据;
所述推送服务器根据所述订阅请求将所述目标数据推送至发送所述订阅请求的所述代理服务器。
为解决上述问题,本发明第二方面提供一种消息推送方法,所述方法包括:
推送服务器接收消息队列服务器发送的订阅请求;其中,所述订阅请求由代理服务器向所述消息队列服务器发送,所述订阅请求包括所述代理服务器的标识以及需要订阅的目标数据信息;
所述推送服务器根据所述订阅请求获取与所述订阅请求匹配的目标数据;
所述推送服务器根据所述订阅请求将所述目标数据推送至发送所述订阅请求的所述代理服务器。
为解决上述问题,本发明提供第三方面提供一种消息推送装置,所述装置包括:
接收模块,用于接收消息队列服务器发送的订阅请求;其中,所述订阅请求由代理服务器向所述消息队列服务器发送,所述订阅请求包括所述代理服务器的标识以及需要订阅的目标数据信息;
获取模块,用于根据所述订阅请求获取与所述订阅请求匹配的目标数据;
推送模块,用于根据所述订阅请求将所述目标数据推送至发送所述订阅请求的所述代理服务器。
为解决上述问题,本发明提供第四方面提供一种消息推送系统,所述系统包括:至少一个用户终端、至少一个代理服务器、消息队列服务器以及至少一个推送服务器;其中,所述推送服务器为上述所述的消息推送装置。
上述方案,消息推送系统在总线型网络拓扑架构下传输订阅请求,在直线型网络拓扑架构下传输待推送的目标数据,以将订阅请求与待推送的目标数据采用不同网络进行传输。在总线型网络拓扑架构下,不论代理服务器和推送服务器节点如何扩展,如增加新的节点,只要新节点连接到消息队列服务器上,订阅指令都能准确送达,能够保证数据传输可靠性。推送服务器将获取到的目标数据直接推送至代理服务器,能够提高待推送的目标数据的吞吐量,以及降低其传输延时。
由于订阅请求还包括代理服务器的标识,推送服务器能够根据代理服务器的标识与代理服务器进行即时组网,能够快速传输待推送的目标数据,进一步减小其传输延迟。
附图说明
图1是本发明消息推送系统一实施例的示意图;
图2是本发明消息推送方法一实施例的流程图;
图3是本发明消息推送方法另一实施例的流程图;
图4是本发明消息推送装置一实施例的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1,图1是本发明消息推送系统一实施例的示意图。如图1所示,本实例中的消息推送系统包括至少一个用户终端110、至少一个代理服务器120、消息队列服务器130以及至少一个推送服务器140。
其中,代理服务器120为服务器系统的门户,汇聚和管理用户终端连接。在用户终端和服务器系统之间转发指令和数据。
推送服务器140为实现订阅发布模式而设置的服务器,负责将订阅数据持续推送到客户端。
用户终端110与代理服务器120通信,消息队列服务器130分别与代理服务器120、推送服务器140进行通信,推送服务器140还与代理服务器120通信。其中,用户终端110与代理服务器120建立通信连接,一个代理服务器120可以对应一个用户终端110,也可以对应多个用户终端110;一个推送服务器140可以与多个代理服务器建立通信连接。
消息队列服务器130、用户终端110、至少一个代理服务器120以及至少一个推送服务器140组成订阅网络。消息队列服务器130与至少一个代理服务器120以及至少一个推送服务器140为总线型网络拓扑结构,便于扩展分布式系统中的代理服务器、推送服务器。
推送服务器140、至少一个代理服务器120以及用户终端110组成推送网络。推送服务器140与代理服务器120以及用户终端110组成网状网络拓扑结构。推送服务器140与代理服务器120通过直联型消息中间件进行通信。
用户终端110用于向代理服务器120发送订阅请求,其中,该订阅请求包括用户终端110的标识以及需要订阅的目标数据信息。
代理服务器120用于接收用户终端110发送的订阅请求,并在接收到的订阅请求中封装代理服务器的标识,将封装后的订阅请求发送至消息队列服务器130。
消息队列服务器130用于接收代理服务器120发送的订阅请求,并将订阅请求发送至任意推送服务器140。
推送服务器140用于接收消息队列服务器130发送的订阅请求,并根据订阅请求获取与订阅请求匹配的目标数据,并根据订阅请求将获取到的目标数据直接推送至代理服务器120,以使代理服务器120将接收到的目标数据发送至请求获取该目标数据的用户终端110。
由于订阅请求所占的比特数远小于待推送的目标数据的比特数,且订阅请求对传输延迟的时效性要求不高,因此消息队列服务器采用总线型的消息中间件进行数据转发。待推送的目标数据所占的比特数较大对传输延迟的时效性要求高,推送服务器与代理服务器之间采用直联型消息中间件进行数据转发。
具体地,本实施例的消息推送系统中所包括的至少一个用户终端110、至少一个代理服务器120、消息队列服务器130以及至少一个推送服务器140用于执行图2对应的实施例中的各步骤,具体请参阅图2对应的实施例中的相关描述。
请参阅图2,图2是本发明消息推送方法一实施例的流程图。本实施例中的消息推送方法包括以下步骤:
S101:消息队列服务器接收通过代理服务器发送的订阅请求;其中,所述订阅请求包括所述代理服务器的标识以及需要订阅的目标数据信息。
进一步地,步骤S101可以包括:用户终端通过所述代理服务器向所述消息队列服务器发送请阅请求;所述消息队列服务器接收所述订阅请求;其中,所述订阅请求还包括所述用户终端的标识;所述消息队列服务器接收所述订阅请求。
当用户需要订阅目标数据时,用户通过用户终端向代理服务器发送订阅请求。其中,该订阅请求包括用户终端的标识以及需要订阅的目标数据的信息。用户终端的标识可以为用户终端的MAC地址,但并不限于此。目标数据的信息包括目标数据的名称,但并不限于此,还可以包括其他信息,例如,推送时间等,此处不做限制。
代理服务器在接收到用户终端发送的订阅请求时,将代理服务器的信息封装至接收到的订阅请求中,并将封装后的订阅请求发送至消息队列服务器。
消息队列服务器接收代理服务器发送的订阅请求。其中,该订阅请求包括发送订阅请求的用户终端的标识、发送订阅请求的代理服务器的标识、需要订阅的目标数据信息。
用户终端的标识用于识别用户终端;代理服务器的标识用于识别代理服务器,便于推送服务器与代理服务器建立通信连接。
进一步地,代理服务器的标识可以包括代理服务器对应的互联网协议地址(Internet Protocol Address,IP地址)、端口号。IP地址以及端口号便于推送服务器与代理服务器建立通信连接。
S102:所述消息队列服务器将所述订阅请求发送至任一推送服务器。
消息队列服务器在接收到代理服务器发送的订阅请求后,将接收到的订阅请求发送至任一推送服务器。其中,消息队列服务器可以根据各推送服务器的负载信息确定发送订阅请求的推送服务器。
S103:接收到所述订阅请求的所述推送服务器根据所述订阅请求获取与所述订阅请求匹配的目标数据。
接收到消息队列服务器发送的订阅请求的推送服务器,根据订阅请求包含的需要订阅的目标数据信息获取与订阅请求匹配的目标数据。
目标数据可以存储于网络数据库,也可以存储于源数据服务器,此处不做限制。
S104:所述推送服务器根据所述订阅请求将所述目标数据推送至发送所述订阅请求的所述代理服务器。
推送服务器在获取到与订阅请求匹配的目标数据后,根据订阅请求包含的代理服务器的标识将目标数据推送至发送订阅请求的代理服务器。
进一步地,当代理服务器的标识包括所述代理服务器对应的互联网协议地址、端口号时,步骤S104还可以包括:所述推送服务器从所述订阅请求中获取所述代理服务器对应的互联网协议地址、端口号;根据所述互联网协议地址以及所述端口号与发送所述订阅请求的所述代理服务器建立通信连接;将所述目标数据推送至所述代理服务器。
例如,推送服务器在获取到与订阅请求匹配的目标数据后,从订阅请求中获取发送订阅请求的代理服务器对应的互联网协议地址、端口号;根据获取到的互联网协议地址、端口号与发送该订阅请求的代理服务器建立通信连接。
推送服务器在能够与代理服务器进行通信时,将目标数据推送至发送订阅请求的代理服务器。
推送服务器能够根据代理服务器的标识进行即时组网。
可以理解的是,推送服务器可以实时向该代理服务器推送目标数据,也可以每隔预设时间向该代理服务器推送目标数据,此处不做限制。
预设时间可以为12小时,但并不限于此,也可根据实际情况进行设置,此处不做限制。
进一步地,在步骤S104之后,还可以包括:所述代理服务器获取所述目标数据,并根据所述订阅请求包含的所述用户终端的标识将所述目标数据推送至所述用户终端。
发送订阅请求的代理服务器在接收到与订阅请求匹配的目标数据之后,根据订阅请求包含的用户终端的标识将目标数据推送至用户终端。
例如,代理服务器根据用户终端的MAC地址将接收到的目标数据推送至用户终端。
由于订阅请求所占的比特数远小于待推送的目标数据的比特数,且订阅请求对传输延迟的时效性要求不高,因此消息队列服务器采用总线型的消息中间件进行数据转发。待推送的目标数据所占的比特数较大,对传输延迟的时效性要求高,推送服务器与代理服务器之间采用直联型消息中间件进行数据转发。
其中,以代理服务器连接200个用户终端,每个用户终端订阅沪深300的股票行情数据为例,其推送数据延迟时间的统计值如下所示:
上述方案,消息推送系统在总线型网络拓扑架构下传输订阅请求,在直线型网络拓扑架构下传输待推送的目标数据,以将订阅请求与待推送的目标数据采用不同网络进行传输。在总线型网络拓扑架构下,不论代理服务器和推送服务器节点如何扩展,如增加新的节点,只要新节点连接到消息队列服务器上,订阅指令都能准确送达,保证数据传输可靠性。推送服务器将获取到的目标数据直接推送至代理服务器,能够提高待推送的目标数据的吞吐量,以及降低其传输延时。
由于订阅请求还包括代理服务器的标识,推送服务器能够根据代理服务器的标识与代理服务器进行即时组网,能够快速传输待推送的目标数据,进一步减小其传输延迟。
请参阅图3,图3是本发明消息推送方法另一实施例的流程图。本发明中消息推送方法的执行主体为推送服务器。本实施例中的消息推送方法包括以下步骤:
S201:推送服务器接收消息队列服务器发送的订阅请求;其中,所述订阅请求由代理服务器向所述消息队列服务器发送,所述订阅请求包括所述代理服务器的标识以及需要订阅的目标数据信息。
消息队列服务器在接收到用户通过用户终端、代理服务器发送的订阅请求后,将订阅请求转发给任一推送服务器。其中,订阅请求包括用户终端的标识、代理服务器的标识以及需要订阅的目标数据信息。
推送服务器接收消息队列服务器发送的订阅请求。
S202:所述推送服务器根据所述订阅请求获取与所述订阅请求匹配的目标数据。
推送服务器根据订阅请求包含的需要订阅的目标数据信息获取与订阅请求匹配的目标数据。
目标数据可以存储于网络数据库,也可以存储于源数据服务器,此处不做限制。
S203:所述推送服务器根据所述订阅请求将所述目标数据推送至发送所述订阅请求的所述代理服务器。
推送服务器在获取到与订阅请求匹配的目标数据后,根据订阅请求包含的代理服务器的标识将目标数据推送至发送订阅请求的代理服务器。
进一步地,当代理服务器的标识包括所述代理服务器对应的互联网协议地址、端口号时,步骤S203可以包括:所述推送服务器从所述订阅请求中获取所述代理服务器对应的互联网协议地址、端口号;根据所述互联网协议地址以及所述端口号与发送所述订阅请求的所述代理服务器建立通信连接;将所述目标数据推送至所述代理服务器。
例如,推送服务器在获取到与订阅请求匹配的目标数据后,从订阅请求中获取发送订阅请求的代理服务器对应的互联网协议地址、端口号;根据获取到的互联网协议地址、端口号与发送该订阅请求的代理服务器建立通信连接。
推送服务器在能够与代理服务器进行通信时,将目标数据推送至发送订阅请求的代理服务器。
推送服务器能够根据代理服务器的标识进行即时组网。
可以理解的是,推送服务器可以实时向该代理服务器推送目标数据,也可以每隔预设时间向该代理服务器推送目标数据,此处不做限制。
预设时间可以为12小时,但并不限于此,也可根据实际情况进行设置,此处不做限制。
上述方案,推送服务器接收消息队列服务器发送的订阅请求;根据订阅请求获取与订阅请求匹配的目标数据;根据订阅请求将目标数据推送至订阅请求的代理服务器。由于推送服务器将获取到的目标数据直接推送至代理服务器,能够提高待推送的目标数据的吞吐量,以及降低其传输延时。
由于订阅请求还包括代理服务器的标识,推送服务器能够根据代理服务器的标识与代理服务器进行即时组网,能够快速传输待推送的目标数据,进一步减小其传输延迟。
请参阅图4,图4是本发明消息推送装置一实施例的结构示意图。其中,本实施例中消息推送装置为推送服务器。消息推送装置所包括的各模块用于执行图3对应的实施例中的各步骤,具体请参阅图3以及图3对应的实施例中的相关描述,此处不赘述。本实施例消息推送装置包括接收模块410、获取模块420以及推送模块430。
接收模块410用于接收消息队列服务器发送的订阅请求;其中,订阅请求由代理服务器向消息队列服务器发送,订阅请求包括代理服务器的标识以及需要订阅的目标数据信息。
比如,接收模块410接收消息队列服务器发送的订阅请求;其中,订阅请求由代理服务器向消息队列服务器发送,订阅请求包括代理服务器的标识以及需要订阅的目标数据信息。
进一步地,代理服务器的标识包括所述代理服务器对应的互联网协议地址、端口号。
接收模块410将订阅请求向获取模块420发送。
获取模块420用于接收接收模块410发送的订阅请求,根据订阅请求获取与订阅请求匹配的目标数据。
比如,获取模块420接收接收模块410发送的订阅请求,根据订阅请求获取与订阅请求匹配的目标数据。
获取模块420将订阅请求、目标数据向推送模块430发送。
推送模块430用于接收获取模块420发送的订阅请求、目标数据,根据订阅请求将目标数据推送至发送订阅请求的所述代理服务器。
比如,推送模块430接收获取模块420发送的订阅请求、目标数据,根据订阅请求将目标数据推送至发送订阅请求的所述代理服务器。
进一步地,推送模块430用于从订阅请求中获取代理服务器对应的互联网协议地址、端口号;根据互联网协议地址以及端口号与发送订阅请求的代理服务器建立通信连接;将目标数据推送至代理服务器。
比如,推送模块430从订阅请求中获取代理服务器对应的互联网协议地址、端口号;根据互联网协议地址以及端口号与发送订阅请求的代理服务器建立通信连接;将目标数据推送至代理服务器。
上述方案,推送服务器接收消息队列服务器发送的订阅请求;根据订阅请求获取与订阅请求匹配的目标数据;根据订阅请求将目标数据推送至订阅请求的代理服务器。由于推送服务器将获取到的目标数据直接推送至代理服务器,能够提高待推送的目标数据的吞吐量,以及降低其传输延时。
由于订阅请求还包括代理服务器的标识,推送服务器能够根据代理服务器的标识与代理服务器进行即时组网,能够快速传输待推送的目标数据,减小其传输延迟。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。