1.本技术涉及数据处理技术,尤其涉及互联网技术领域,具体涉及一种数据处理方法、装置及服务器。
背景技术:
2.在移动互联网中,推送服务作为应用在移动互联网中的一个服务,其占据着至关重要的作用,各种应用服务可以主动地对用户群体进行消息推送。
3.目前,随着终端的高速发展,其数量和形态均呈现快速增长和变化的趋势,推送服务需要同亿级甚至十亿级别的终端侧维护长连接,以实现消息推送,这对于推送服务是一个巨大的挑战。
技术实现要素:
4.本公开提供了一种数据处理方法、装置及服务器。
5.根据本公开的第一方面,提供了一种数据处理方法,所述方法应用于第一服务器,包括:
6.获取第一消息;
7.对所述第一消息进行解析,获得所述第一消息的消息类型;
8.在所述消息类型为推送类型的情况下,根据所述第一消息中携带的第一标识将所述第一消息发送给第二标识对应的第二服务器,以使所述第二服务器将所述第一消息发送给所述第一标识对应的终端,所述第二标识与所述第一标识对应;或者,在所述消息类型为上传类型的情况下,向第三服务器发送所述第一消息。
9.根据本公开的第二方面,提供了一种数据处理方法,所述方法应用于第四服务器,包括:
10.接收第一服务器发送的第一消息;其中,所述第一消息为所述第一服务器在解析到获取的第一消息的消息类型为上传类型的情况下发送的消息,所述第一消息中携带有目标主题;
11.根据所述目标主题将所述第一消息发送给所述目标主题对应业务的第三服务器。
12.根据本公开的第三方面,提供了一种数据处理装置,所述装置应用于第一服务器,包括:
13.获取模块,用于获取第一消息;
14.解析模块,用于对所述第一消息进行解析,获得所述第一消息的消息类型;
15.推送模块,用于在所述消息类型为推送类型的情况下,根据所述第一消息中携带的第一标识将所述第一消息发送给第二标识对应的第二服务器,以使所述第二服务器将所述第一消息发送给所述第一标识对应的终端,所述第二标识与所述第一标识对应;
16.第一上传模块,用于在所述消息类型为上传类型的情况下,向第三服务器发送所述第一消息。
17.根据本公开的第四方面,提供了一种数据处理装置,所述装置应用于第四服务器,包括:
18.接收模块,用于接收第一服务器发送的第一消息;其中,所述第一消息为所述第一服务器在解析到获取的第一消息的消息类型为上传类型的情况下发送的消息,所述第一消息中携带有目标主题;
19.第二上传模块,用于根据所述目标主题将所述第一消息发送给所述目标主题对应业务的第三服务器。
20.根据本公开的第五方面,提供了一种服务器,包括:
21.至少一个处理器;以及
22.与至少一个处理器通信连接的存储器;其中,
23.存储器存储有可被至少一个处理器执行的指令,该指令被至少一个处理器执行,以使至少一个处理器能够执行第一方面中的任一项方法,或者执行第二方面中的任一项方法。
24.根据本公开的第六方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行第一方面中的任一项方法,或者执行第二方面中的任一项方法。
25.根据本技术的技术解决了现有技术中无法保证高并发场景下的推送服务性能、且推送服务中对长连接资源利用不足的问题,提高了高并发场景下的推送服务性能,且提高了推送服务的长连接资源的利用率。
26.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
27.附图用于更好地理解本方案,不构成对本技术的限定。其中:
28.图1是根据本技术第一实施例的数据处理方法的流程示意图;
29.图2是用来实现本技术实施例的推送服务的推送服务架构示意图;
30.图3是根据本技术第二实施例的数据处理方法的流程示意图;
31.图4是根据本技术第三实施例的数据处理装置的结构示意图;
32.图5是根据本技术第四实施例的数据处理装置的结构示意图;
33.图6是用来实现本技术实施例的数据处理方法的服务器的框图。
具体实施方式
34.以下结合附图对本技术的示范性实施例做出说明,其中包括本技术实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本技术的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
35.第一实施例
36.如图1所示,本技术提供一种数据处理方法,所述方法应用于第一服务器,包括如下步骤:
37.步骤s101:获取第一消息。
38.本实施例中,数据处理方法涉及数据处理技术,具体涉及互联网技术、物联网技术领域,其可以应用于第一服务器,该第一服务器可以为云服务器。
39.所述第一服务器可以为推送服务架构中一种类型的服务器,其中,所述推送服务架构可以包括多种类型的服务器,所述第一服务器即为其中一种。每种类型的服务器可以作为推送服务的数据处理环节,以实现消息推送。
40.具体的,参见图2,图2是用来实现本技术实施例的推送服务的推送服务架构示意图,如图2所示,所述推送服务架构从数据处理环节划分,可以划分为四层结构,按照消息推送路径从下至上分别可以称之为终端接入层、逻辑解析转发层、消息缓存层和业务应用层。
41.所述终端接入层作为与终端紧密联系的层,用于将接收的推送消息精准推送给终端,所述业务应用层作为推送消息的最上层,用于发送推送消息,经推送服务架构的中间层发送给终端。
42.所述逻辑解析转发层和消息缓存层作为推送服务架构的中间层,所述逻辑解析转发层负责解析接收的消息,以进行相应的消息处理,并在解析到接收的消息为推送类型的消息的情况下,将其按照消息推送路径进行推送。
43.所述消息缓存层作为业务应用层和逻辑解析转发层之间的中间层,其可以作为路径桥梁进行消息推送,以实现高性能的消息推送。以下分别对这四层结构进行详细说明。
44.在具体实现过程中,每层均对应一种类型的服务器,且对应一个或多个服务器,其对应关系可以为:第二服务器可以为终端接入层中的服务器,第一服务器可以为逻辑解析转发层中的服务器,第四服务器可以为消息缓存层中的服务器,第三服务器可以为业务应用层中的服务器。
45.在推送服务架构中,层级之间,两种类型的服务器之间均采用长连接方式进行通信,也就是说,第二服务器可以采用长连接与第一服务器进行通信,第一服务器可以采用长连接方式与第四服务器进行通信,第四服务器可以采用长连接方式与第三服务器进行通信。并且,终端接入层中的第二服务器也采用长连接方式与终端进行通信。
46.在现有技术中,推送服务是服务端主动发送消息到客户端的一种行为,但是从实现角度上说,由于现有的推送服务通常是基于传输控制协议(transmission control protocol,tcp)的长连接方式实现的,而基于tcp协议的长连接通常都是支持双向数据传输的,因此,单单实现推送功能浪费了推送服务的长连接资源。
47.而如图2所示的推送服务架构即可利用逻辑解析转发层中的第一服务器进行数据处理,以采用该推送服务架构即能实现消息推送,又能实现数据上传,以提高推送服务的长连接资源的利用率。
48.在通过推送服务的长连接资源进行数据上传时,其消息上传路径刚好与消息推送路径相反,如图2所示,推送服务架构既能实现消息推送,如将互联网数据中心nj的第三服务器的消息经第四服务器、第一服务器和第二服务器,最终推送给终端,该第三服务器为应用标识为2的业务服务器。又能实现消息上传,如将终端的消息经第二服务器、第一服务器和第四服务器,最终上传给互联网数据中心bj的第三服务器,该第三服务器为应用标识为1的业务服务器。
49.由于推送服务既能实现消息推送,又能实现消息上传,因此,在推送服务架构的中
间层,需要对消息进行识别,以确定消息的消息类型,并进行消息类型进行相应的逻辑处理。这个数据处理过程即由逻辑解析转发层负责。
50.具体的,逻辑解析转发层中的第一服务器获取第一消息,所述第一消息的消息类型有多种,其消息类型可以为推送类型,也可以为上传类型,还可以为注册类型,或者还可以为心跳类型。
51.其中,推送类型的消息指的是需要推送给终端的消息,上传类型的消息指的是需要上传给业务服务器的消息,注册类型的消息指的是绑定第二服务器与终端的消息,其目的是能够使第一服务器将消息精准推送至相应终端,心跳类型的消息指的是确定终端与第二服务器的连接状态,以保证各个终端的在线判断,实现有效推送。
52.根据所述第一消息的来源不同所述第一消息的获取方式有多种。比如,所述第一消息为推送类型的消息时,所述第一消息可以为第三服务器即业务服务器经所述第一服务器推送给终端的消息,也就是说,所述第一服务器获取的是业务服务器经第四服务器发送的消息,即所述第一服务器直接获取的是第四服务器发送的消息。
53.又比如,所述第一消息为上传类型的消息时,所述第一消息为终端基于与所述第二服务器的长连接上传给所述第一服务器的消息,也就是说,所述第一服务器获取的是终端经第二服务器发送的消息,即所述第一服务器直接获取的是终端接入层的第二服务器发送的消息。
54.还比如,所述第一消息为所述第一服务器经目标推送接口接收的第二消息所确定的消息,该第一消息也为推送类型的消息。也就是说,所述第一服务器通过目标推送接口获取的是其他服务器发送的消息,其他服务器可以指的是推送服务之外的其他服务的服务器,其他服务的服务器可以通过该推送服务推送消息给终端。
55.另外,所述第一消息可以为超文本传输协议(hypertext transfer protocol,http)2.0或全双工通信协议websocket等既定协议封装的消息,也可以为用户自定义的预设协议封装的消息,这里不做具体限定。
56.步骤s102:对所述第一消息进行解析,获得所述第一消息的消息类型。
57.该步骤中,可以采用特定协议对所述第一消息进行解析,获得所述第一消息的消息类型,在所述第一消息采用的是http 2.0或websocket等既定协议封装时,其可以采用http 2.0或websocket等既定协议进行解析,在所述第一消息采用的是用户自定义的协议封装时,其可以采用用户自定义的协议进行解析。
58.其中,采用自定义协议进行封装,可以避免http 2.0或websocket等既定协议对终端存在的限制,从而可以扩大推送服务对终端类型的支持,以下以采用用户自定义协议进行解析为例进行详细说明。
59.具体的,推送服务架构的四层结构中每层结构作为推送服务的数据处理环节,其分工明确,其中的粘合剂就是自定义协议,层级之间,两种类型的服务器之间均采用自定义协议进行通信,使用自定义协议的优势在于可以针对推送服务架构本身定制简洁有效的方式完成数据处理,而无需考虑到终端是否存在通信协议限制。
60.采用自定义协议解析得到的消息类型如下:
61.注册类型,通过该消息类型的消息,可以绑定终端与终端接入层的第二服务器,以便于第一服务器在进行消息推送时查看绑定关系,基于第二服务器将消息进行精准推送。
62.心跳类型,通过该消息类型的消息,可以判断终端是否在线,同时也可以清除因信号弱,或者无线保真信号切换等一系列网络问题导致的无法正常握手结束的tcp连接的死连接。
63.推送类型,通过该消息类型的消息,可以确定发送到终端接入层实例的哪个连接来实现推送功能,即确定发送给终端接入层的哪个第二服务器。
64.上传类型,通过该消息类型的消息,决定该消息被发送到哪个具体的业务,即发送到哪个业务服务器。
65.通过上述消息类型,即可保证推送服务架构的四层结构的协同工作和整个系统的正常运转。
66.在具体实现过程中,可以通过一个字段来表征所述第一消息的消息类型,采用自定义协议解析之后可以得到该字段内容,从而确定该第一消息的消息类型。
67.解析到第一消息的消息类型之后,针对第一消息的消息类型进行相应的逻辑处理。
68.步骤s103:在所述消息类型为推送类型的情况下,根据所述第一消息中携带的第一标识将所述第一消息发送给第二标识对应的第二服务器,以使所述第二服务器将所述第一消息发送给所述第一标识对应的终端,所述第二标识与所述第一标识对应;或者,在所述消息类型为上传类型的情况下,向第三服务器发送所述第一消息。
69.该步骤中,在所述消息类型为推送类型的情况下,所述第一服务器需要将第一消息推送给相应终端,所述第一服务器对第一消息进行解析之后,还可以得到消息推送终端的第一标识。
70.所述第一服务器可以基于预先存储的绑定关系库中查询所述第一标识对应终端的推送路径,以确定需要将该第一消息发送给终端接入层的哪个实例即哪个第二服务器,从而可以基于第二服务器将第一消息精准推送给所述第一标识对应的终端。
71.其中,所述绑定关系库可以包括基于注册类型的历史消息所确定的终端与第二服务器的绑定对应关系,当然,也可以包括预先定义且存储在内的终端与第二服务器的绑定对应关系,这里不做具体限定。
72.另外,所述绑定关系库中绑定对应关系可以以标识对应关系的形式来表征,也就是说,当第一标识对应第二标识时,即可以说明第一标识对应的终端与第二标识对应的第二服务器存在绑定对应关系。
73.在所述消息类型为上传类型的情况下,所述第一服务器需要将第一消息上传给相应业务服务器,所述第一服务器对第一消息进行解析之后,还可以得到消息的目标主题,按照目标主题将所述第一消息上传至相应业务服务器,以下可以对此进行详细说明。
74.本实施例中,第一服务器通过对第一消息进行解析,得到第一消息的消息类型,并按照第一消息的消息类型对第一消息进行推送或上传的逻辑处理,如此,可以充分利用推送服务的长连接资源,不仅支持向下推送,还支持向上的数据传输,提高了推送服务的长连接利用率。
75.并且,通过第一服务器对第一消息进行解析,在第一消息为推送类型的消息的情况下,根据第一消息中携带的第一标识将第一消息推送给相应终端,可以实现精准推送。且通过第二服务器直接将第一消息透传和转发给终端,可以减轻终端接入层的第二服务器的
压力,使之可以尽可能地接入更多的终端。而且,可以通过扩充逻辑解析转发层的第一服务器的数量,实现系统资源的扩容,并通过负载均衡协调这些第一服务器的工作,从而可以实现终端的海量接入,提高高并发场景下推送服务的性能。
76.可选的,所述第一消息包括以下任一项:
77.所述第一服务器经目标推送接口接收的第二消息所确定的消息;
78.所述第三服务器经所述第一服务器推送给终端的消息;
79.终端基于与所述第二服务器的长连接上传给所述第一服务器的消息。
80.本实施方式中,所述第一消息有以上三种来源,在这三种来源中,可以有两种方式实现消息推送,第一种消息推送路径是:第三服务器-》第四服务器-》第一服务器-》第二服务器-》终端,第二种消息推送路径是:第一服务器的目标推送接口-》第二服务器-》终端。
81.这两种消息推送路径各有优点,针对第一种消息推送路径,其应用场景通常是推送消息依赖于其他消息,推送逻辑比较复杂,推送逻辑与业务耦合性较高,不方便解耦,使得推送频率较高。比如,在物联网技术领域,通过该推送服务来实现智能电灯的控制,在进行消息推送时,由于智能电灯的开启依赖于家里是否有电,依赖于智能排插,所以在进行消息推送时,推送的控制信息依赖于其他信息,因此,可以采用该消息推送路径,以根据推送需求进行消息推送。
82.针对第二种消息推送路径,在第一服务器采用统一的目标推送接口进行消息推送,目标推送接口的功能是针对终端的第一标识,推送固定的消息。逻辑解析转发层直接连接终端接入层服务,逻辑解析转发层负责解析并定位终端接入的终端接入层服务,终端接入层服务负责精准推送消息到固定终端。可知,逻辑解析转发层是实现推送功能的最短路径,因此采用该条消息推送路径推送效率比较高。并且,可以通过该条消息推送路径的返回信息对推送过程中的异常情况进行判断。
83.所述目标推送接口可以为软件开发工具包(software development kit,sdk)接口,其可以通过远程过程调用(romote procedure call,rpc)服务来实现。通过rpc服务统一外部调用接口,可以方便需要接入推送功能的服务进行调用。
84.所述第一消息也可以为终端基于与所述第二服务器的长连接上传给所述第一服务器的消息,即所述第一消息为上传类型的消息,终端可以通过消息上传路径将消息上传至相应业务服务器,该消息上传路径可以为终端-》第二服务器-》第一服务器-》第四服务器-》第三服务器。
85.针对该条消息上传路径,其应用场景可以为业务服务器同终端的信息交互比较频繁,此时可以利用该消息上传路径进行数据上传,提高了数据上传的效率。
86.该业务服务器可以通过消息缓存层的第四服务器接收消息,也可以通过消息缓存层的第四服务器实现消息推送。一个典型的应用就是通过该推送服务架构实现一个即时通信服务,终端可以将信息流或者语音流通过长连接上传到业务应用层的对应业务服务器中,同时还可以将业务服务器的数据流推送到对应终端中。
87.本实施方式中,所述第一服务器可以通过统一的目标推送接口接收外部服务的推送消息,从而可以实现最短路径的消息推送,且还可以实现各个应用领域的推送方案,使推送服务具备通用性。并且,通过第三服务器-》第四服务器-》第一服务器-》第二服务器-》终端的消息推送路径,可以针对推送逻辑比较复杂,推送逻辑与业务耦合性较高不方便解耦
的应用场景进行消息推送,且根据推送需求定制推送方案,提高了推送服务的灵活性。
88.而且,所述第一服务器还可以利用推送服务的长连接实现数据上传,不仅提高了推送服务的长连接资源的利用率,而且提高了数据上传的效率。
89.可选的,所述第一消息为所述第一服务器经目标推送接口接收的第二消息所确定的消息,所述步骤s101具体包括:
90.接收所述第二消息;
91.对所述第二消息进行解析,得到推送参数;
92.基于预设协议对所述推送参数进行封装,获得所述第一消息。
93.本实施方式中,所述第二消息为外部服务调用第一服务器的目标推送接口发送的推送消息,该推送消息通常为http 2.0或websocket等既定协议的消息,在推送时对终端存在一定的限定。比如,对于终端类型不是智能设备,但其有类似安卓或ios等操作系统的终端,又比如,对于嵌入式系统支持的终端,或者没有操作系统支持的终端,或者不支持既定协议的操作系统的终端,这些终端可能均无法接入该推送服务中。
94.本实施方式中,通过对第二消息进行解析,得到推送参数,并通过用户自定义的预设协议对所述推送参数进行封装,获得所述第一消息。如此,使用自定义协议可以忽略终端对其他复杂协议的支持性,从而该推送服务支持各种类型的终端接入,其只要实现tcp协议即可。另外,终端上还可以通过sdk接口,定制多种服务,对推送功能进行统一管理。
95.可选的,所述在所述消息类型为上传类型的情况下,向第三服务器发送所述第一消息包括:
96.在所述消息类型为上传类型的情况下,将所述第一消息通过第四服务器发送给所述第三服务器。
97.本实施方式中,在所述第一消息为上传类型的消息的情况下,所述第一服务器可以将所述第一消息发送个消息缓存层的第四服务器,所述第四服务器可以通过分布式消息队列如kafka消息队列将所述第一消息发送到固定的业务服务器中,实现消息的精准上传。
98.所述消息缓存层,具体可以通过kafka消息队列负责对高并发场景下消息的缓存处理,保证消息不丢失。并且通过kafka的消息主题与业务服务器的绑定,实现与业务服务器的信息交互。
99.本实施方式中,在所述消息类型为上传类型的情况下,将所述第一消息通过第四服务器发送给所述第三服务器,从而可以实现消息的精准上传。
100.可选的,对步骤s102之后,还包括:
101.在所述消息类型为注册类型的情况下,从所述第一消息中获取终端的第一标识和第二服务器的第二标识,将所述第一标识和第二标识进行关联存储;或者,
102.在所述消息类型为心跳类型的情况下,确定目标终端与第二服务器处于连接状态,所述目标终端为所述第一消息中携带的第一标识对应的终端。
103.本实施方式中,在所述第一消息为注册类型的消息的情况下,可以从第一消息中获取终端的第一标识和第二服务器的第二标识,将所述第一标识和第二标识进行关联存储至绑定关系库中。后续可以根据查询该绑定关系库实现消息的精准推送。
104.在所述第一消息为心跳类型的情况下,可以确定目标终端与第二服务器处于连接状态,如此,可以保证各个终端的在线判断。
105.本实施方式中,所述第一服务器基于第一消息的消息类型进行相应的逻辑处理,可以方便消息的精准推送,且还能保证各个终端的在线判断,从而实现消息的有效推送。
106.可选的,所述方法还包括:
107.在预设时间段内未监控到所述目标终端发送的心跳类型的消息的情况下,发送第三消息给所述第二服务器,所述第三消息用于通知所述第二服务器清理与所述目标终端的长连接。
108.本实施方式中,通过监控终端发送的心跳类型的消息,并在预设时间段内未监控到终端发送的心跳类型的消息的情况下,可以确定该终端与第二服务器的连接为死连接,此时,可以将第三消息发送给该死连接对应的第二服务器,以通过该第二服务器清理该终端的长连接,从而可以释放被占用的无用资源,提高资源占用率,并且还能够实现消息的有效推送。
109.第二实施例
110.如图3所示,本技术提供一种数据处理方法,包括如下步骤:
111.步骤s301:接收第一服务器发送的第一消息;其中,所述第一消息为所述第一服务器在解析到获取的第一消息的消息类型为上传类型的情况下发送的消息,所述第一消息中携带有目标主题;
112.步骤s302:根据所述目标主题将所述第一消息发送给所述目标主题对应业务的第三服务器。
113.本实施例具体描述了第四服务器对消息进行精准上传的实现过程,所述第四服务器可以为消息缓存层中的服务器,其作为逻辑解析转发层和业务应用层之间的中间层,是消息推送路径和消息上传路径的桥梁,其数据处理的目的是实现消息的精准推送和上传。
114.具体的,接收所述第一服务器发送的第一消息,所述第一消息为所述第一服务器在解析到获取的第一消息的消息类型为上传类型的情况下发送的消息,且所述第一消息具有目标主题,在进行消息推送或上传时,是按照定制的目标主题进行消息推送或上传的。
115.所述第四服务器可以根据所述目标主题将所述第一消息发送给所述目标主题对应业务的第三服务器。在实现过程中,其实现方式可以有多种,比如,所述第四服务器可以在预设数据库中预先存储有预设的主题与业务服务器的标识的对应关系,所述第四服务器可以通过在该预设数据库中查询目标主题对应的业务服务器的标识,将第一消息发送给固定的第三服务器。
116.又比如,所述第四服务器可以通过分布式消息队列如kafka消息队列将所述第一消息按照目标主题发送至所述目标主题绑定的第三服务器中。
117.另外,所述第四服务器还可以通过kafka消息队列实现消息缓存,以在高并发场景下保证消息不会丢失。
118.本实施例中,第四服务器通过接收第一服务器发送的第一消息,根据所述第一消息中携带的目标主题将第一消息发送给固定的第三服务器,这样,可以充分利用推送服务的长连接资源,提高推送服务的长连接资源的利用率。同时,根据目标主题,将第一消息上传至固定的业务服务器,从而可以实现消息的精准上传。
119.可选的,所述步骤s302具体包括:
120.按照所述目标主题将所述第一消息缓存至分布式消息队列中;
121.基于所述分布式消息队列中所述目标主题绑定的目标业务,将所述第一消息发送给所述目标业务对应的第三服务器。
122.本实施方式中,所述分布式消息队列可以为kafka消息队列,可以利用kafka消息队列的主题topic,按照目标主题将所述第一消息缓存至kafka消息队列中。并通过kafka消息队列的目标主题绑定的目标业务,将所述第一消息发送给所述目标业务对应的第三服务器,从而实现消息的精准上传。
123.如图2所示,上传消息的目标主题对应业务标识为1的业务,此时,第四服务器(可以称之为kafka消息代理服务器)按照消息主题将消息上传给业务标识为1的业务服务器。另外,业务服务器也可以按照消息主题进行消息推送,第四服务器按照消息主题将推送消息进行缓存,并按照消息主题将推送消息发送给固定终端。
124.另外,所述第四服务器可以通过kafka消息队列进行消息缓存,可以保证消息不会丢失,从而可以实现高并发场景下的消息推送和上传。
125.可选的,所述步骤s302之前,还包括:
126.在所述分布式消息队列中所述目标主题未绑定所述目标业务的情况下,通过所述分布式消息队列将所述目标主题与所述目标业务绑定。
127.本实施方式中,在所述分布式消息队列中所述目标主题未绑定所述目标业务的情况下,通过所述分布式消息队列将所述目标主题与所述目标业务绑定,这样,第四服务器即可以通过预设协议建立与相应业务服务器的自定义协议通道,从而可以通过该自定义协议通道将第一消息发送给所述目标业务对应的业务服务器中,如此,可以实现业务的扩展。
128.另外,针对如图2所示的推送服务架构,可以针对每层制定相应的高可用方案,层级之间可以互不影响,使之即使每层中有服务器出现故障,也不会影响该推送服务的性能,保证推送服务的可靠性。
129.比如,针对终端接入层,可以部署多个第二服务器,其高可用方案可以通过终端来判断当前连接的第二服务器是否可用,在不可用的情况下,通过重连到终端接入层的其他第二服务器来实现高可用。
130.又比如,针对逻辑解析转发层,由于逻辑解析转发层的负担比较大,因此可以部署比较多的实例即部署数量比较多的第一服务器,并采用负载均衡来协调这些第一服务器的工作。逻辑解析转发层需要同终端接入层的每个实例建立长连接,以保证每一个逻辑解析转发层的逻辑一致性,为高可用方案提供了可行性。此时,可以利用分布式应用程序协调服务zookeeper来动态监控逻辑解析转发层的状态,如发生单点故障或者但机房故障,其他的逻辑解析转发层实例即可以无差别的保证系统正常运行。
131.还比如,针对消息缓存层,逻辑解析转发层与消息缓存层对接的高可用方案通过kafka消息队列本身的特性解决。在消息缓存层出现故障的情况下,通过kafka消息队列的备份可以实现高可用。
132.而对于业务应用层来说,针对不同的业务服务可制定不同高可用方案。
133.第三实施例
134.如图4所示,本技术提供一种数据处理装置400,所述装置应用于第一服务器,包括:
135.获取模块401,用于获取第一消息;
136.解析模块402,用于对所述第一消息进行解析,获得所述第一消息的消息类型;
137.推送模块403,用于在所述消息类型为推送类型的情况下,根据所述第一消息中携带的第一标识将所述第一消息发送给第二标识对应的第二服务器,以使所述第二服务器将所述第一消息发送给所述第一标识对应的终端,所述第二标识与所述第一标识对应;
138.第一上传模块404,用于在所述消息类型为上传类型的情况下,向第三服务器发送所述第一消息。
139.可选的,其中,所述第一消息包括以下任一项:
140.所述第一服务器经目标推送接口接收的第二消息所确定的消息;
141.所述第三服务器经所述第一服务器推送给终端的消息;
142.终端基于与所述第二服务器的长连接上传给所述第一服务器的消息。
143.可选的,其中,所述第一消息为所述第一服务器经目标推送接口接收的第二消息所确定的消息,所述获取模块401,具体用于接收所述第二消息;对所述第二消息进行解析,得到推送参数;基于预设协议对所述推送参数进行封装,获得所述第一消息。
144.可选的,其中,所述第一上传模块404,具体用于在所述消息类型为上传类型的情况下,将所述第一消息通过第四服务器发送给所述第三服务器。
145.可选的,还包括:
146.关联存储模块,用于在所述消息类型为注册类型的情况下,从所述第一消息中获取终端的第一标识和第二服务器的第二标识,将所述第一标识和第二标识进行关联存储;
147.确定模块,用于在所述消息类型为心跳类型的情况下,确定目标终端与第二服务器处于连接状态,所述目标终端为所述第一消息中携带的第一标识对应的终端。
148.可选的,还包括:
149.通知模块,用于在预设时间段内未监控到所述目标终端发送的心跳类型的消息的情况下,发送第三消息给所述第二服务器,所述第三消息用于通知所述第二服务器清理与所述目标终端的长连接。
150.本技术提供的数据处理装置400能够实现上述第一实施例的数据处理方法实施例实现的各个过程,且能够达到相同的有益效果,为避免重复,这里不再赘述。
151.第四实施例
152.如图5所示,本技术提供一种数据处理装置500,所述装置应用于第四服务器,包括:
153.接收模块501,用于接收第一服务器发送的第一消息;其中,所述第一消息为所述第一服务器在解析到获取的第一消息的消息类型为上传类型的情况下发送的消息,所述第一消息中携带有目标主题;
154.第二上传模块502,用于根据所述目标主题将所述第一消息发送给所述目标主题对应业务的第三服务器。
155.可选的,其中,所述第二上传模块502,具体用于按照所述目标主题将所述第一消息缓存至分布式消息队列中;基于所述分布式消息队列中所述目标主题绑定的目标业务,将所述第一消息发送给所述目标业务对应的第三服务器。
156.可选的,还包括:
157.绑定模块,用于在所述分布式消息队列中所述目标主题未绑定所述目标业务的情
况下,通过所述分布式消息队列将所述目标主题与所述目标业务绑定。
158.本技术提供的数据处理装置500能够实现上述第二实施例的数据处理方法实施例实现的各个过程,且能够达到相同的有益效果,为避免重复,这里不再赘述。
159.根据本技术的实施例,本技术还提供了一种服务器和一种可读存储介质。
160.如图6所示,是根据本技术实施例的数据处理方法的服务器的框图。服务器旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本技术的实现。
161.如图6所示,该服务器包括:一个或多个处理器601、存储器602,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在服务器内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图6中以一个处理器601为例。
162.存储器602即为本技术所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本技术所提供的数据处理方法。本技术的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本技术所提供的数据处理方法。
163.存储器602作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本技术实施例中的数据处理方法对应的程序指令/模块(例如,附图4所示的获取模块401、解析模块402、推送模块403和第一上传模块404,附图5所示的接收模块501和第二上传模块502)。处理器601通过运行存储在存储器602中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的数据处理方法。
164.存储器602可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据本技术实施例的数据处理方法的服务器的使用所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器602可选包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至数据处理方法的服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
165.本技术实施例的数据处理方法的服务器还可以包括:输入装置603和输出装置604。处理器601、存储器602、输入装置603和输出装置604可以通过总线或者其他方式连接,图6中以通过总线连接为例。
166.输入装置603可接收输入的数字或字符信息,以及产生与本技术实施例的数据处理方法的服务器的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、
轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置604可以包括显示设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
167.此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用asic(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
168.这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
169.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
170.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
171.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务("virtual private server",或简称"vps")中,存在的管理难度大,业务扩展性弱的缺陷。
172.本实施例中,通过第一服务器对第一消息进行解析,在第一消息为推送类型的消息的情况下,根据第一消息中携带的第一标识将第一消息推送给相应终端,可以实现精准推送。且通过第二服务器直接将第一消息透传和转发给终端,可以减轻终端接入层的第二
服务器的压力,使之可以尽可能地接入更多的终端。而且,可以通过扩充逻辑解析转发层的第一服务器的数量,实现系统资源的扩容,并通过负载均衡协调这些第一服务器的工作,从而可以实现终端的海量接入,提高高并发场景下推送服务的性能。因此,根据本技术实施例的技术方案,很好地解决了现有技术中无法保证高并发场景下的推送服务性能、且推送服务中对长连接资源利用不足的问题。
173.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本技术公开的技术方案所期望的结果,本文在此不进行限制。
174.上述具体实施方式,并不构成对本技术保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本技术的精神和原则之内所作的修改、等同替换和改进等,均应包含在本技术保护范围之内。
技术特征:
1.一种数据处理方法,所述方法应用于第一服务器,包括:获取第一消息;对所述第一消息进行解析,获得所述第一消息的消息类型;在所述消息类型为推送类型的情况下,根据所述第一消息中携带的第一标识将所述第一消息发送给第二标识对应的第二服务器,以使所述第二服务器将所述第一消息发送给所述第一标识对应的终端,所述第二标识与所述第一标识对应;或者,在所述消息类型为上传类型的情况下,向第三服务器发送所述第一消息。2.根据权利要求1所述的方法,其中,所述第一消息包括以下任一项:所述第一服务器经目标推送接口接收的第二消息所确定的消息;所述第三服务器经所述第一服务器推送给终端的消息;终端基于与所述第二服务器的长连接上传给所述第一服务器的消息。3.根据权利要求2所述的方法,其中,所述第一消息为所述第一服务器经目标推送接口接收的第二消息所确定的消息,所述获取第一消息包括:接收所述第二消息;对所述第二消息进行解析,得到推送参数;基于预设协议对所述推送参数进行封装,获得所述第一消息。4.根据权利要求1所述的方法,其中,所述在所述消息类型为上传类型的情况下,向第三服务器发送所述第一消息包括:在所述消息类型为上传类型的情况下,将所述第一消息通过第四服务器发送给所述第三服务器。5.根据权利要求1所述的方法,所述对所述第一消息进行解析,获得所述第一消息的消息类型之后,还包括:在所述消息类型为注册类型的情况下,从所述第一消息中获取终端的第一标识和第二服务器的第二标识,将所述第一标识和第二标识进行关联存储;或者,在所述消息类型为心跳类型的情况下,确定目标终端与第二服务器处于连接状态,所述目标终端为所述第一消息中携带的第一标识对应的终端。6.根据权利要求5所述的方法,还包括:在预设时间段内未监控到所述目标终端发送的心跳类型的消息的情况下,发送第三消息给所述第二服务器,所述第三消息用于通知所述第二服务器清理与所述目标终端的长连接。7.一种数据处理方法,所述方法应用于第四服务器,包括:接收第一服务器发送的第一消息;其中,所述第一消息为所述第一服务器在解析到获取的第一消息的消息类型为上传类型的情况下发送的消息,所述第一消息中携带有目标主题;根据所述目标主题将所述第一消息发送给所述目标主题对应业务的第三服务器。8.根据权利要求7所述的方法,其中,所述根据所述目标主题将所述第一消息发送给所述目标主题对应业务的第三服务器包括:按照所述目标主题将所述第一消息缓存至分布式消息队列中;基于所述分布式消息队列中所述目标主题绑定的目标业务,将所述第一消息发送给所
述目标业务对应的第三服务器。9.根据权利要求8所述的方法,所述基于所述分布式消息队列中所述目标主题绑定的目标业务,将所述第一消息发送给所述目标业务对应的第三服务器之前,还包括:在所述分布式消息队列中所述目标主题未绑定所述目标业务的情况下,通过所述分布式消息队列将所述目标主题与所述目标业务绑定。10.一种数据处理装置,所述装置应用于第一服务器,包括:获取模块,用于获取第一消息;解析模块,用于对所述第一消息进行解析,获得所述第一消息的消息类型;推送模块,用于在所述消息类型为推送类型的情况下,根据所述第一消息中携带的第一标识将所述第一消息发送给第二标识对应的第二服务器,以使所述第二服务器将所述第一消息发送给所述第一标识对应的终端,所述第二标识与所述第一标识对应;第一上传模块,用于在所述消息类型为上传类型的情况下,向第三服务器发送所述第一消息。11.根据权利要求10所述的装置,其中,所述第一消息包括以下任一项:所述第一服务器经目标推送接口接收的第二消息所确定的消息;所述第三服务器经所述第一服务器推送给终端的消息;终端基于与所述第二服务器的长连接上传给所述第一服务器的消息。12.根据权利要求11所述的装置,其中,所述第一消息为所述第一服务器经目标推送接口接收的第二消息所确定的消息,所述获取模块,具体用于接收所述第二消息;对所述第二消息进行解析,得到推送参数;基于预设协议对所述推送参数进行封装,获得所述第一消息。13.根据权利要求10所述的装置,其中,所述第一上传模块,具体用于在所述消息类型为上传类型的情况下,将所述第一消息通过第四服务器发送给所述第三服务器。14.根据权利要求10所述的装置,还包括:关联存储模块,用于在所述消息类型为注册类型的情况下,从所述第一消息中获取终端的第一标识和第二服务器的第二标识,将所述第一标识和第二标识进行关联存储;确定模块,用于在所述消息类型为心跳类型的情况下,确定目标终端与第二服务器处于连接状态,所述目标终端为所述第一消息中携带的第一标识对应的终端。15.根据权利要求14所述的装置,还包括:通知模块,用于在预设时间段内未监控到所述目标终端发送的心跳类型的消息的情况下,发送第三消息给所述第二服务器,所述第三消息用于通知所述第二服务器清理与所述目标终端的长连接。16.一种数据处理装置,所述装置应用于第四服务器,包括:接收模块,用于接收第一服务器发送的第一消息;其中,所述第一消息为所述第一服务器在解析到获取的第一消息的消息类型为上传类型的情况下发送的消息,所述第一消息中携带有目标主题;第二上传模块,用于根据所述目标主题将所述第一消息发送给所述目标主题对应业务的第三服务器。17.根据权利要求16所述的装置,其中,所述第二上传模块,具体用于按照所述目标主
题将所述第一消息缓存至分布式消息队列中;基于所述分布式消息队列中所述目标主题绑定的目标业务,将所述第一消息发送给所述目标业务对应的第三服务器。18.根据权利要求17所述的装置,还包括:绑定模块,用于在所述分布式消息队列中所述目标主题未绑定所述目标业务的情况下,通过所述分布式消息队列将所述目标主题与所述目标业务绑定。19.一种服务器,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的方法,或者执行权利要求7-9中任一项所述的方法。20.一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行权利要求1-6中任一项所述的方法,或者执行权利要求7-9中任一项所述的方法。
技术总结
本申请公开了数据处理方法、装置及服务器,涉及数据处理技术,具体涉及为互联网技术领域。具体实现方案为:获取第一消息;对第一消息进行解析,获得第一消息的消息类型;在消息类型为推送类型的情况下,根据第一消息中携带的第一标识将第一消息发送给第二标识对应的第二服务器,以使第二服务器将第一消息发送给第一标识对应的终端,第二标识与第一标识对应;或者,在消息类型为上传类型的情况下,向第三服务器发送第一消息。根据本申请的技术,解决了现有技术中无法保证高并发场景下的推送服务性能、且推送服务中对长连接资源利用不足的问题,提高了高并发场景下的推送服务性能,且提高了推送服务的长连接资源的利用率。且提高了推送服务的长连接资源的利用率。且提高了推送服务的长连接资源的利用率。
技术研发人员:张建军
受保护的技术使用者:阿波罗智联(北京)科技有限公司
技术研发日:2020.11.09
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-23052.html