CN107395767B - 基于长连接的消息推送***及方法 - Google Patents

基于长连接的消息推送***及方法 Download PDF

Info

Publication number
CN107395767B
CN107395767B CN201710774218.6A CN201710774218A CN107395767B CN 107395767 B CN107395767 B CN 107395767B CN 201710774218 A CN201710774218 A CN 201710774218A CN 107395767 B CN107395767 B CN 107395767B
Authority
CN
China
Prior art keywords
push
server
message
pushing
identification list
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710774218.6A
Other languages
English (en)
Other versions
CN107395767A (zh
Inventor
魏自立
王志超
李威
王肖磊
赵晶晶
张波
姜艺学
李辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING QIYUAN TECHNOLOGY Co.,Ltd.
Original Assignee
Beijing Qiyuan Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qiyuan Technology Co ltd filed Critical Beijing Qiyuan Technology Co ltd
Priority to CN201710774218.6A priority Critical patent/CN107395767B/zh
Publication of CN107395767A publication Critical patent/CN107395767A/zh
Application granted granted Critical
Publication of CN107395767B publication Critical patent/CN107395767B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0478Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload applying multiple layers of encryption, e.g. nested tunnels or encrypting the content with a first key and then with at least a second key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities

Abstract

本发明公开了一种基于长连接的消息推送***及方法。其中***包括:网关服务器、至少一个推送服务器、消息中心服务器以及配置服务器;网关服务器和至少一个推送服务器预先在配置服务器中完成注册;基于长连接的消息推送服务,能够保证消息实时地推送给客户端,还有利于实现消息的精准推送,克服了现有技术中基于短连接的消息推送服务,需要客户端主动发起,频率过高则对服务器造成较大负担,频率较低则不能保证消息的实时性,而导致消息的实时性难以保证的缺陷,另外,对于一些重要的安全类信息,短连接推送的时延也是致命的。

Description

基于长连接的消息推送***及方法
技术领域
本发明涉及计算机技术领域,具体涉及一种基于长连接的消息推送***及方法。
背景技术
在现有的消息推送服务中,很多都是基于短连接的推送服务,短连接推送服务需要客户端根据业务需要主动发起推送请求,推送完成后断开连接,如果客户端发起频率过高则容易对服务器造成较大负担,但如果发起频率较低则不能保证推送消息被客户端实时地接收,对于一些重要的消息,基于短连接进行发送而出现的时延是致命的。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于长连接的消息推送***和相应的基于长连接的消息推送及方法。
根据本发明的一个方面,提供了一种基于长连接的消息推送***,包括:网关服务器、至少一个推送服务器、消息中心服务器以及配置服务器;网关服务器和至少一个推送服务器预先在配置服务器中完成注册;
配置服务器,适于存储至少一个推送服务器的服务信息;
消息中心服务器,适于管理消息推送策略,根据消息推送策略配置推送任务;
网关服务器,与客户端之间建立长连接,适于在获取到至少一个客户端提供的用户登录信息后,从配置服务器获取推送服务器的服务信息,将至少一个客户端提供的用户登录信息上报给在线的至少一个推送服务器;
至少一个推送服务器,适于根据接收到的用户登录信息,记录用户标识列表;以及,根据消息中心服务器下发的推送任务,按照用户标识列表将推送消息发送至网关服务器,以供网关服务器将推送消息转发至客户端。
根据本发明的另一方面,提供了一种基于长连接的消息推送方法,包括:
网关服务器和至少一个推送服务器预先在配置服务器中完成注册;
网关服务器与客户端之间建立长连接,在获取到至少一个客户端提供的用户登录信息后,从配置服务器获取推送服务器的服务信息,将至少一个客户端提供的用户登录信息上报给在线的至少一个推送服务器;
至少一个推送服务器根据接收到的用户登录信息,记录用户标识列表;以及,根据消息中心服务器下发的推送任务,按照用户标识列表将推送消息发送至网关服务器,以供网关服务器将推送消息转发至客户端。
根据本发明提供的方案,基于长连接的消息推送服务,能够保证消息实时地推送给客户端,还有利于实现消息的精准推送,克服了现有技术中基于短连接的消息推送服务,需要客户端主动发起,频率过高则对服务器造成较大负担,频率较低则不能保证消息的实时性,而导致消息的实时性难以保证的缺陷,另外,对于一些重要的安全类信息,短连接推送的时延也是致命的。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明实施例一的一种基于长连接的消息推送***的结构示意图;
图2示出了根据本发明实施例二的一种基于长连接的消息推送***的结构示意图;
图3示出了根据本发明实施例二的一种基于长连接的消息推送***的框图;
图4示出了根据本发明实施例三的一种长连接服务***的结构示意图;
图5示出了根据本发明实施例四的一种长连接服务***的结构示意图;
图6示出了根据本发明实施例五的一种长连接服务***的结构示意图;
图7示出了根据本发明实施例中网关服务器的结构示意图;
图8示出了根据本发明实施例六的一种基于长连接的消息推送方法的流程示意图;
图9示出了根据本发明实施例七的一种长连接服务方法的流程示意图;
图10示出了根据本发明实施例八的一种长连接服务方法的流程示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
图1示出了根据本发明实施例一的一种基于长连接的消息推送***的结构示意图。如图1所示,该***包括:配置服务器100、消息中心服务器110、网关服务器120以及至少一个推送服务器130;其中,网关服务器120和至少一个推送服务器130预先在配置服务器100中完成注册。
配置服务器100,适于存储至少一个推送服务器130的服务信息。
消息中心服务器110,适于管理消息推送策略,根据消息推送策略配置推送任务。
其中,消息推送策略具体可以设定哪个产品哪个业务要去推送消息,推送目标,推送方式,推送任务类型,推送任务的创建、启动、停止、更新,权限管理,编辑权限,发布权限,审核权限,查看在线人数,查看消息状态。
网关服务器120,与客户端之间建立长连接,适于在获取到至少一个客户端提供的用户登录信息后,从配置服务器100获取推送服务器130的服务信息,将至少一个客户端提供的用户登录信息上报给在线的至少一个推送服务器130。
客户端与网关服务器120建立长连接之后,网关服务器120需要将获取到的至少一个客户端的用户登录信息(session)上报给推送服务器130,具体地,网关服务器120从配置服务器100获取推送服务器130的服务信息,根据获取的服务信息查找到在线的至少一个推送服务器130,将至少一个客户端提供的用户登录信息上报给在线的至少一个推送服务器130,其中,用户登录信息可以包括:用户标识、登录时间、登录IP、登录客户端等。
至少一个推送服务器130适于:根据接收到的用户登录信息,记录用户标识列表;以及,根据消息中心服务器110下发的推送任务,按照用户标识列表将推送消息发送至网关服务器120,以供网关服务器120将推送消息转发至客户端。
具体地,至少一个推送服务器130在接收到网关服务器120发送的用户登录信息后,可以从用户登录信息中提取出对应的用户标识,并将其记录到用户标识列表中,其中,用户标识列表用于记录在线的客户端的用户标识,以供推送服务器130根据用户标识列表选择对应的客户端来接收推送消息。
消息中心服务器110根据消息推送策略配置推送任务,并将推送任务下发给至少一个推送服务器130,至少一个推送服务器130接收来自消息中心服务器110的推送任务,并对该推送任务进行处理,得到对应的推送消息,然后,按照用户标识列表将推送消息发送至网关服务器120,由网关服务器120将推送消息转发至客户端。
根据本发明上述实施例提供的基于长连接的消息推送***,基于长连接的消息推送服务,能够保证消息实时地推送给客户端,还有利于实现消息的精准推送,克服了现有技术中基于短连接的消息推送服务,需要客户端主动发起,频率过高则对服务器造成较大负担,频率较低则不能保证消息的实时性,而导致消息的实时性难以保证的缺陷,另外,对于一些重要的安全类信息,短连接推送的时延也是致命的。
配置服务器具体可以是Zookeeper服务器,其作为配置服务器存储了推送服务器的服务信息,例如,IP端口号、服务类型、和/或在线状态等,这里仅是举例说明,不具有任何限定作用。至少一个推送服务器将其提供的服务类型和端口号注册到Zookeeper服务器,而网关服务器则从Zookeeper服务器获取推送服务器的服务信息,将用户登录信息上报给推送服务器,其中,Zookeeper服务器一般配置三到五台的业务服务器组成集群,具有容灾能力,保证服务稳定可用,下面将结合具体实施例进行详细介绍:
图2示出了根据本发明实施例二的一种基于长连接的消息推送***的结构示意图,图3示出了根据本发明实施例二的一种基于长连接的消息推送***的框图。结合图2和图3对基于长连接的消息推送***做进一步介绍,该***包括:Zookeeper服务器200、网关服务器210、消息中心服务器220、至少一个推送服务器230、状态中心服务器240、分发装置250以及统计装置260;其中,网关服务器210和至少一个推送服务器230预先在Zookeeper服务器200中完成注册。
Zookeeper服务器200,适于存储至少一个推送服务器230的服务信息。
网关服务器210,与客户端之间建立长连接,适于在获取到至少一个客户端提供的用户登录信息后,从Zookeeper服务器200获取推送服务器230的服务信息,将至少一个客户端提供的用户登录信息上报给在线的至少一个推送服务器230。
消息中心服务器220进一步适于:从Zookeeper服务器200获取至少一个推送服务器230的服务信息,向在线的推送服务器230发送广播方式的推送任务,并设定在线的推送服务器中的一个推送服务器执行一阶段消息推送,所有在线的推送服务器执行二阶段消息推送。
具体地,Zookeeper服务器200存储了至少一个推送服务器230的服务信息,消息中心服务器220通过从Zookeeper服务器200获取至少一个推送服务器230的服务信息,根据服务信息查找到在线的推送服务器230,向在线的推送服务器230发送广播方式的推送任务,其中,广播过程有两个阶段,消息中心服务器220还需设定执行一阶段消息推送和二阶段消息推送的推送服务器230,具体设定在线的推送服务器中的一个推送服务器执行一阶段消息推送,所有在线的推送服务器执行二阶段消息推送。
客户端与网关服务器210建立长连接完成二阶段登录之后,网关服务器210需要将用户登录信息(session)上报给推送服务器230,具体地,网关服务器210从Zookeeper服务器200获取推送服务器230的服务信息,根据获取的服务信息查找到在线的至少一个推送服务器230,将至少一个客户端提供的用户登录信息上报给在线的至少一个推送服务器230,其中,用户登录信息可以包括:用户标识、登录时间、登录IP、登录客户端等。
至少一个推送服务器230包括:推送模块231,适于将推送消息通过广播方式发送给网关服务器210,以供网关服务器210将推送消息转发至所有建立长连接的客户端以完成一阶段消息推送;以及,获取筛选得到的新用户登录信息对应的增量用户标识列表,将增量用户标识列表以及推送消息发送给网关服务器210,以供网关服务器210根据增量用户标识列表将推送消息转发至对应的客户端以完成二阶段消息推送。
具体地,消息中心服务器220根据消息推送策略配置推送任务,并将推送任务下发给在线的推送服务器230,被设定执行一阶段消息推送的推送服务器对接收到的推送任务进行处理,得到对应的推送消息,并由推送模块231将推送消息通过广播方式发送给网关服务器210,由网关服务器210将推送消息转发至所有建立长连接的客户端以完成一阶段消息推送。
在进行一阶段消息推送过程中或完成后,网关服务器210还可能上报新的用户登录信息,我们知道,推送服务器230根据接收到的用户登录信息,记录了用户标识列表,对于新的用户登录信息对应的客户端,需要筛选出新用户登录信息对应的增量用户标识列表,推送模块231获取筛选得到的新用户登录信息对应的增量用户标识列表,将增量用户标识列表以及推送消息发送给网关服务器210,由网关服务器210根据增量用户标识列表将推送消息转发至对应的客户端以完成二阶段消息推送,其中,推送模块231需要一直执行二阶段消息推送,直至推送消息过期。
此外,消息中心服务器220进一步适于:从Zookeeper服务器200获取至少一个推送服务器230的服务信息,向在线的推送服务器发送多播方式的推送任务,并设定每个在线的推送服务器执行一阶段消息推送和二阶段消息推送。
具体地,Zookeeper服务器200存储了至少一个推送服务器230的服务信息,消息中心服务器220通过从Zookeeper服务器200获取至少一个推送服务器230的服务信息,根据服务信息查找到在线的推送服务器,向在线的推送服务器发送多播方式的推送任务,其中,多播过程有两个阶段,消息中心服务器220还需设定执行一阶段消息推送和二阶段消息推送的推送服务器,具体设定每个在线的推送服务器执行一阶段消息推送和二阶段消息推送。
至少一个推送服务器230包括:推送模块231,适于按照预设条件筛选符合推送条件的用户标识列表,将符合推送条件的用户标识列表以及推送消息发送给网关服务器210,以供网关服务器210根据符合推送条件的用户标识列表将推送消息转发至对应的客户端以完成一阶段消息推送;以及,获取筛选得到的符合推送条件的新用户登录信息对应的增量用户标识列表,将增量用户标识列表以及推送消息发送给网关服务器210,以供网关服务器210根据增量用户标识列表将推送消息转发至对应的客户端以完成二阶段消息推送。
具体地,推送模块231可以按照预设条件筛选符合推送条件的用户标识列表,例如,按照区域(IP)来筛选符合条件的用户标识列表;也可以根据指定的用户标识筛选符合推送条件的用户标识列表;还可以根据指定特征来筛选符合推送条件的用户标识列表,然后,将符合推送条件的用户标识列表以及推送消息发送给网关服务器,由网关服务器210根据符合推送条件的用户标识列表将推送消息转发至对应的客户端以完成一阶段消息推送;
在进行一阶段消息推送过程中或完成后,网关服务器210还可能上报新的用户登录信息,我们知道,推送服务器230根据接收到的用户登录信息,记录了用户标识列表,对于新的用户登录信息对应的客户端,需要筛选出新用户登录信息对应的增量用户标识列表,推送模块231获取筛选得到的新用户登录信息对应的增量用户标识列表,将增量用户标识列表以及推送消息发送给网关服务器210,由网关服务器210根据增量用户标识列表将推送消息转发至对应的客户端以完成二阶段消息推送,其中,推送模块231需要一直执行二阶段消息推送,直至该推送消息过期。
在本发明实施例中,可以根据业务需要平行扩展推送服务器230,对于网关服务器210和消息中心服务器220来说,新增推送服务器,不会影响整个***的运行。
状态中心服务器240,适于记录已推送的推送消息标识列表以及已推送的用户标识列表,以及记录已成功推送的用户标识列表。其中,状态中心服务器240可以为Redis服务器,其可以记录向哪些用户推送了消息,以及推送了哪些消息,此外,还可以记录哪些用户成功接收了推送消息。
为了防止频繁地访问状态中心服务器,在进行二阶段消息推送之前,该基于长连接的消息推送***可以利用分发装置筛选符合推送条件的新用户登录信息对应的增量用户标识列表,具体地,分发装置250,适于查询状态中心服务器240以筛选出符合推送条件的新用户登录信息对应的增量用户标识列表,并将增量用户标识列表发送给推送模块,为了避免分发装置重复地访问状态中心服务器240,分发装置250还将查询状态中心服务器240的查询记录存储至其缓存中,从而在后续需要筛选符合推送条件的新用户登录信息对应的增量用户标识列表时,可以先查询其缓存,若查询到缓存中并未有新用户登录信息对应的用户标识的记载,则再查询状态中心服务器240,并更新缓存。
分发装置250筛选出符合推送条件的新用户登录信息对应的增量用户标识列表后,将增量用户标识列表群发给至少一个推送服务器230,至少一个推送服务器230中的推送模块231将增量用户标识列表以及推送消息发送给网关服务器210,以供网关服务器210根据增量用户标识列表将推送消息转发至对应的客户端以完成二阶段消息推送。
消息的到达率是评价推送***的一个重要指标,在本发明实施例中,状态中心服务器240记录了已成功推送的用户标识列表和已推送的用户标识列表,因此,统计装置260通过查询状态中心服务器240可以得到已成功推送的用户标识列表和已推送的用户标识列表;根据已成功推送的用户标识列表和已推送的用户标识列表计算推送消息的到达率,此外,在计算消息的到达率时,还需要进行消重处理,以避免同一客户端多次接收推送消息,而导致计算结果不准确。
在本发明实施例中,至少一个推送服务器230包括:缓存模块232,适于存储预设时间段内已推送的推送消息标识列表以及已推送的用户标识列表。具体地,缓存模块232可以存储最近的已推送的推送消息标识列表以及已推送的用户标识列表。
在本发明实施例中,至少一个推送服务器230还包括:配置模块233,适于将推送服务器的服务信息注册到配置服务器。具体地,至少一个推送服务器的服务信息包括:IP端口号、服务类型、和/或在线状态,其中,服务类型具体可以为消息推送服务;在线状态包括:在线和离线。
在本发明实施例中,至少一个推送服务器230还包括:指令处理模块234,适于根据消息中心服务器发送的消息处理指令,对推送消息进行相应地处理。
具体地,消息中心服务器220可以根据需要向推送服务器230发送对应的消息处理指令,例如,推送指令、暂停指令、取消指令,推送服务器可以根据相应的消息处理指令执行消息推送、暂停推送、取消推送等处理。举例说明,指令处理模块234接收到消息中心服务器发送的取消消息推送指令,查找对应消息,更新消息状态到已取消,并停止推送,更新已推送用户标识列表。
在本发明实施例中,网关服务器包括多个线程,每个推送服务器包括连接协程,网关服务器的一个线程与推送服务器的连接协程之间建立链接,线程通过链接和推送服务器保持一一对应的关系,消息的推送最终从此连接下发给客户端。
网关服务器将至少一个客户端提供的用户登录信息均衡地分配给各个线程,即,每个线程中保存一定量用户登录信息,且每个线程分配得到的用户登录信息是互斥的,各个线程基于与至少一个推送服务器的连接协程之间建立的链接将用户登录信息上报给对应的推送服务器,从而,每个线程上报的用户登录信息是互斥的。由于线程之间负载均衡,从而推送服务器之间记录的用户标识重复率低;而且还提高了推送效率,其也是推送服务器能够平行扩展的关键。
在本发明实施例中,至少一个推送服务器230包括:信息存储模块235,适于根据接收到的用户登录信息,记录用户标识列表以及线程标识。
在本发明实施例中,至少一个推送服务器230进一步适于:若网关服务器上报的客户端为离线状态,则记录该客户端对应的用户标识的在线状态为离线;或者,若检测到与网关服务器的线程之间的链接断开,则删除该线程标识以及该线程上报的所有用户登录信息对应的用户标识。
为了保证推送消息的准确性,推送服务器需要获取用户的上下线状态,因此当用户完成二阶段登录后,网关服务器210需要把用户登录成功信息上报给推送服务器230,当客户端与网关服务器之间的长连接断开时,网关服务器210将删除对应的用户登录信息,还要上报离线状态给推送服务器230。虽然推送服务器是分布式的,但是同一个用户的上下线要报给同一个推送服务器,并且要有时序,即需要先上报在线状态,再报离线状态,很容易理解,如果先报了离线状态,再报在线状态,那相应的用户就永远无法从推送服务器的内存中清掉了。网关服务器在发送时保证时序,能够实现将消息合并批量发送,每条登录消息逐一发送的话会有很大的开销,增加网关服务器的负担。
在本发明实施例中,网关服务器的线程的生命周期与链接的生命周期相等,若推送服务器与网关服务器的线程之间的链接断开,则需要删除推送服务器记录的线程标识以及该线程上报的所有用户登录信息对应的用户标识,具体地,推送服务器需要实时检测与网关服务器的线程之间的链接是否端口,若检测到与网关服务器的线程之间的链接断开后,则会删除该线程标识以及该线程上报的所有用户登录信息对应的用户标识。
在本发明实施例中,网关服务器210进一步适于:若检测到线程与至少一个推送服务器的协程之间的链接断开时,则启动重试机制再次与推送服务器建立链接,例如,可以重试3次;若3次链接都失败,则将该线程存储的用户登录信息转发给其他线程。
根据本发明上述实施例提供的基于长连接的消息推送***,基于长连接的消息推送服务,能够保证消息实时地推送给客户端,还有利于实现消息的精准推送,克服了现有技术中基于短连接的消息推送服务,需要客户端主动发起,频率过高则对服务器造成较大负担,频率较低则不能保证消息的实时性,而导致消息的实时性难以保证的缺陷,另外,对于一些重要的安全类信息,短连接推送的时延也是致命的,此外,还提高了消息的推送效率,还能够精准的统计消息的到达率。
实施例三
图4示出了根据本发明实施例三的一种长连接服务***的结构示意图。如图4所示,该***包括:配置服务器400、网关服务器410以及至少一个业务服务器420;其中,网关服务器410和至少一个业务服务器420预先在配置服务器400中完成注册。
配置服务器400,适于存储至少一个业务服务器420的服务信息。
具体地,至少一个业务服务器420的服务信息包括:IP端口号、服务类型、和/或在线状态,其中,服务类型具体可以用户登录与密钥管理服务、各类查杀服务、消息推送服务等;在线状态包括:在线和离线。
网关服务器410,与客户端之间建立长连接,适于从配置服务器400获取业务服务器的服务信息,将客户端利用长连接发送的用户登录请求或业务处理请求转发给在线的至少一个业务服务器420。
其中,网关服务器410是长连接服务和客户端通信的出口,客户端与网关服务器410之间建立TCP长连接,网关服务器410之后作为客户端与业务服务器通信的桥梁,提供稳定可靠的消息透传服务。
具体地,客户端利用与网关服务器410之间所建立长连接向网关服务器410发送用户登录请求或业务处理请求,网关服务器410在接收到用户登录请求或业务处理请求后,从配置服务器400获取业务服务器的服务信息,根据获取的服务信息查找到在线的至少一个业务服务器,将用户登录请求或业务处理请求转发给在线的至少一个业务服务器420。
至少一个业务服务器420,适于响应于用户登录请求或业务处理请求,将响应信息或业务处理结果通过网关服务器410转发至客户端。
具体地,至少一个业务服务器420在接收到用户登录请求或业务处理请求后,响应该用户登录请求或业务处理请求,将响应信息或业务处理结果发送给网关服务器410,再由网关服务器410将响应信息或业务处理结果转发至客户端。
可选地,网关服务器410进一步适于:每隔第四预设时间向至少一个业务服务器发送业务处理请求,以检测网关服务器与至少一个业务服务器之间的链接的可用状态,其中,第四预设时间可以根据实际需要进行设定,例如,0.1秒,这里仅是举例说明,不具有任何限定作用。
根据本发明上述实施例提供的长连接服务***,客户端基于与网关服务器之间建立的长连接发送用户登录请求或业务处理请求,可以实现客户端状态实时感知,以及实现用户登录请求或业务处理请求实时转发,从而能够与对应的业务服务器快速进行通信,提升长连接服务的安全性。
至少一个业务服务器可以是登录服务器、密钥服务器、云查杀服务器,配置服务器具体可以是Zookeeper服务器,其作为配置服务器存储了业务服务器的服务信息,例如,IP端口号、服务类型、和/或在线状态等,这里仅是举例说明,不具有任何限定作用。各业务服务器将其提供的服务类型和端口号注册到Zookeeper服务器,而网关服务器则从Zookeeper服务器获取业务服务器的服务信息,将特定数据包转到相应的业务服务器,其中,Zookeeper服务器一般配置三到五台的业务服务器组成集群,具有容灾能力,保证服务稳定可用,下面将结合具体实施例进行详细介绍:
实施例四
图5示出了根据本发明实施例四的一种长连接服务***的结构示意图。如图5所示,该***包括:Zookeeper服务器500、网关服务器510以及至少一个登录服务器520、至少一个密钥服务器530;其中,网关服务器510、至少一个登录服务器520和至少一个密钥服务器530预先在Zookeeper服务器500中完成注册。
Zookeeper服务器500,适于存储至少一个登录服务器520的服务信息以及至少一个密钥服务器530的服务信息。
网关服务器510,与客户端之间建立长连接,适于从Zookeeper服务器500获取登录服务器的服务信息,将客户端利用长连接发送的携带有加密后的用户登录信息的一阶段用户登录请求转发给在线的至少一个登录服务器520。
客户端与网关服务器510之间建立长连接后,客户端可以利用长连接向网关服务器510发送一阶段用户登录请求,该请求携带有经过加密的用户登录信息,其中,可以采用异或加解密算法进行加密,加密时所采用的密钥可以是固定的,这里仅是举例说明,不具有任何限定作用。
网关服务器510在接收到客户端发送的携带有加密后的用户登录信息的一阶段用户登录请求后,从Zookeeper服务器500获取登录服务器的服务信息,根据获取的服务信息查找到在线的至少一个登录服务器520,将该一阶段用户登录请求转发给在线的至少一个登录服务器520。
至少一个登录服务器520适于:响应于一阶段用户登录请求,将一阶段密钥通过网关服务器510转发至客户端。
具体地,至少一个登录服务器520在接收到一阶段用户登录请求后,对一阶段用户登录请求进行合法性验证,验证通过后,至少一个登录服务器520响应于一阶段用户登录请求,向网关服务器510发送一阶段密钥以通过该网关服务器510将一阶段密钥转发至客户端,其中,该一阶段密钥是随机生成的,网关服务器510还会记录该一阶段密钥。
网关服务器510进一步适于:从Zookeeper服务器500获取密钥服务器的服务信息,将客户端发送的经一阶段密钥加密后的二阶段用户登录请求转发给在线的至少一个密钥服务器530;
客户端在接收到网关服务器510转发的一阶段密钥后,使用NaclEC非对称加密算法对二阶段用户登录请求进行加密,同时使用登录服务器返回的一阶段密钥对请求加密后的数据进行异或加密,将经过一阶段密钥加密后的二阶段用户登录请求发送给网关服务器510,由网关服务器510转发给在线的至少一个密钥服务器530,这里主要是为了防止公钥泄露,同时提高链接重放请求的复杂度。
至少一个密钥服务器530适于:响应于二阶段用户登录请求,将二阶段密钥通过网关服务器510转发至客户端,以供客户端利用二阶段密钥对业务数据包进行加密处理。
具体地,至少一个密钥服务器530收到二阶段用户登录请求后,先利用一阶段密钥对二阶段用户登录请求进行异或解密,解密成功后,再对数据进行NaclEC非对称加密算法的解密,解密成功,对二阶段用户登录请求进行合法性验证,验证通过后,将二阶段密钥发送给网关服务器510,以通过该网关服务器510将二阶段密钥转发至客户端,后续客户端可以利用二阶段密钥对业务数据包进行加密处理,通过两阶段登录以及对登录请求加密,可以保证通讯协议的安全性,防止针对协议的破解和协议破解后的恶意攻击。
为了防止慢链接,网关服务器510严格限定了请求时间,具体地,网关服务器510进一步适于:在与客户端建立长连接之后,判断在第二预设时间内是否接收到客户端发送的一阶段用户登录请求,若否,则断开与客户端之间所建立的长连接,从而有效地防止恶意连接和基于TCP SYN的攻击,防止句柄浪费,其中,第二预设时间可以根据实际需要进行设定,例如,0.01秒,这里仅是举例说明,不具有任何限定作用。
此外,网关服务器510进一步适于:在将一阶段密钥转发至客户端之后,判断在第三预设时间内是否接收到客户端发送的二阶段用户登录请求,若否,则断开与客户端之间所建立的长连接,防止句柄浪费,其中,第三预设时间可以根据实际需要进行设定,例如,0.01秒,这里仅是举例说明,不具有任何限定作用。
另外,针对单个客户端,限制可建立连接数和每秒请求数,假使协议被破解,也能够有效的防止接入服务因请求过载而瘫痪。
根据本发明上述实施例提供的长连接服务***,客户端基于与网关服务器之间建立的长连接发送两阶段用户登录请求,登录服务器和密钥服务器进行两阶段的登录验证,提高了长连接服务的安全性,另外,通过限制长连接建立后两阶段用户登录请求的发送时间,可以有效地防止恶意连接和基于TCP SYN的攻击,进一步提升了长连接服务的安全性。
实施实例五
图6示出了根据本发明实施例五的一种长连接服务***的结构示意图。如图6所示,该***包括:Zookeeper服务器600、网关服务器610以及至少一个云查杀服务器620;其中,网关服务器610和至少一个云查杀服务器620预先在Zookeeper服务器600中完成注册。
Zookeeper服务器600,适于存储至少一个云查杀服务器620的服务信息。
网关服务器610,与客户端之间建立长连接,适于从Zookeeper服务器600获取云查杀服务器的服务信息,将客户端利用长连接发送的携带有经二阶段密钥加密的业务数据包的业务处理请求转发给在线的至少一个云查杀服务器620。
具体地,客户端与网关服务器610之间建立长连接后,客户端可以利用长连接向网关服务器610发送业务处理请求,该请求携带有经二阶段密钥加密的业务数据包,网关服务器610接收到业务处理请求后,从Zookeeper服务器600获取云查杀服务器的服务信息,根据获取的服务信息查找到在线的至少一个云查杀服务器620,将云查杀请求转发给在线的至少一个云查杀服务器620,其中,业务处理请求可以是云查杀请求。
至少一个云查杀服务器620适于:响应于业务处理请求,通过与云规则平台以及存储***进行交互,得到云查杀结果,将云查杀结果通过网关服务器610转发至客户端。
其中,至少一个云查杀服务器620可以提供各类查杀服务,其支持http、tcp、udp等接口,可以采用中间接口层(safeglue/trident)以实现业务功能插件式管理,从而能够在不修改(或者极少修改一些统计信息)的情况下,将安全业务快速接入长连接服务。
具体地,至少一个云查杀服务器620在接收到云查杀请求后,通过与云规则平台和KV存储***进行交互,得到业务处理结果,完成一笔云查杀请求,最后将业务处理结果通过网关服务器返回给客户端。
为了防止云查杀服务器升级、重启等对请求失败造成的影响,为网关服务器增加重试机制的功能,具体地,网关服务器进一步适于:若在第一预设时间内未收到至少一个云查杀服务器返回的业务处理结果,则启动重试机制再次向在线的至少一个云查杀服务器发送业务处理请求,其中,可以预先设置网关服务器的重试次数,例如3次,若重试3次均失败,可以认定网关服务器与云查杀服务器之间链接已断开。
在本发明的一个可选实施例中,至少一个业务服务器可以包括:入侵防御服务器,此时,业务处理请求可以为主动防御请求,具体地实现过程与图3所示实施例类似,这里不再赘述。
根据本发明上述实施例提供的长连接服务***,客户端基于与网关服务器之间建立的长连接发送业务处理请求,可以实现业务请求实时转发,从而能够与云查杀服务器快速进行通信,实现客户端状态实时感知,当危害影响巨大的病毒(例如勒索者病毒)出现时,客户端可以在不升级的情况下,通过长连接服务立刻获取防护手段,减少病毒造成的危害。
下面针对网关服务器做具体介绍,图7示出了根据本发明实施例中网关服务器的结构示意图,如图7所示,网关服务器包括:监听线程模块701,适于从配置服务器获取至少一个业务服务器的服务信息;与客户端之间建立长连接,以及将长连接转接给工作线程模块。
工作线程模块702,适于将客户端利用长连接发送的用户登录请求或业务处理请求转发给在线的至少一个业务服务器;以及,将至少一个客户端提供的用户登录信息上报给在线的至少一个推送服务器。
考虑到网关服务器运行时可能会出现崩溃的问题,网关服务器采用了监听线程模块和工作线程模块分离的方式,监听线程模块不处理业务,只负责监测工作线程的运行状态,一旦发现工作线程崩溃,立即重新创建工作线程。另外,监听线程模块701监测到长连接服务不可用时,将会发送短信报警给运维和开发人员,进行人工干预。
此外,工作线程模块702进一步适于:将网关服务器运行时的错误信息、用户登录请求或业务处理请求记录到日志中,具体地,网关服务器在运行时很可能会遇到错误,工作线程模块702将内部的错误信息记录到日志当中,另外,如遇到致命错误,工作线程模块还会生成coredump文件,并保存到指定目录,以方便开发人员跟踪错误和调试;以及,通过预设接口查看网关服务器的运行状态;检测客户端心跳,心跳超时断开与客户端之间的长连接;验证用户登录信息是否有效。
实施例六
图8示出了根据本发明实施例六的一种基于长连接的消息推送方法的流程示意图。如图8所示,该方法包括以下步骤:
步骤S800,网关服务器和至少一个推送服务器预先在配置服务器中完成注册。
步骤S801,网关服务器与客户端之间建立长连接,在获取到至少一个客户端提供的用户登录信息后,从配置服务器获取推送服务器的服务信息,将至少一个客户端提供的用户登录信息上报给在线的至少一个推送服务器。
步骤S802,至少一个推送服务器根据接收到的用户登录信息,记录用户标识列表;以及,根据消息中心服务器下发的推送任务,按照用户标识列表将推送消息发送至网关服务器,以供网关服务器将推送消息转发至客户端。
根据本发明上述实施例提供的基于长连接的消息推送方法,基于长连接的消息推送服务,能够保证消息实时地推送给客户端,还有利于实现消息的精准推送,克服了现有技术中基于短连接的消息推送服务,需要客户端主动发起,频率过高则对服务器造成较大负担,频率较低则不能保证消息的实时性,而导致消息的实时性难以保证的缺陷,另外,对于一些重要的安全类信息,短连接推送的时延也是致命的。
实施例七
图9示出了根据本发明实施例七的一种长连接服务方法的流程示意图。如图9所示,该方法包括以下步骤:
步骤S900,网关服务器和至少一个业务服务器预先在配置服务器中完成注册。
步骤S901,网关服务器与客户端之间建立长连接,从配置服务器获取业务服务器的服务信息,将客户端利用长连接发送的用户登录请求或业务处理请求转发给在线的至少一个业务服务器。
步骤S902,至少一个业务服务器响应于用户登录请求或业务处理请求,将响应信息或业务处理结果通过网关服务器转发至客户端。
根据本发明上述实施例提供的长连接服务方法,客户端基于与网关服务器之间建立的长连接发送用户登录请求或业务处理请求,可以实现客户端状态实时感知,以及实现用户登录请求或业务处理请求实时转发,从而能够与对应的业务服务器快速进行通信,提升长连接服务的安全性。
实施例八
图10示出了根据本发明实施例八的一种长连接服务方法的流程示意图。在以下步骤执行之前,网关服务器和至少一个业务服务器预先在配置服务器中完成注册。在注册之后,执行以下步骤:
步骤S1000,网关服务器与客户端之间建立长连接,从配置服务器获取至少一个登录服务器的服务信息,将客户端发送的携带有加密后的用户登录信息的一阶段用户登录请求转发给在线的至少一个登录服务器。
步骤S1001,至少一个登录服务器响应于一阶段用户登录请求,将一阶段密钥通过网关服务器转发至客户端。
步骤S1002,网关服务器从配置服务器获取至少一个密钥服务器的服务信息,将客户端发送的经一阶段密钥加密后的二阶段用户登录请求转发给在线的至少一个密钥服务器。
步骤S1003,至少一个密钥服务器响应于二阶段用户登录请求,将二阶段密钥通过网关服务器转发至客户端,以供客户端利用二阶段密钥对业务数据包进行加密处理。
步骤S1004,网关服务器从配置服务器获取至少一个云查杀服务器的服务信息,将客户端发送的携带有经二阶段密钥加密的业务数据包的业务处理请求转发给在线的至少一个云查杀服务器。
步骤S1005,至少一个云查杀服务器响应于业务处理请求,通过与云规则平台以及存储方法进行交互,得到业务处理结果,将业务处理结果通过网关服务器转发至客户端。
步骤S1006,网关服务器将至少一个客户端提供的用户登录信息上报给在线的至少一个推送服务器。
步骤S1007,至少一个推送服务器根据接收到的用户登录信息,记录用户标识列表;以及,根据消息中心服务器下发的推送任务,按照用户标识列表将推送消息发送至网关服务器,以供网关服务器将推送消息转发至客户端。
可选地,方法还包括:网关服务器检测在第一预设时间内是否收到至少一个云查杀服务器返回的业务处理结果;
若在第一预设时间内未收到至少一个云查杀服务器返回的业务处理结果,则启动重试机制再次向在线的至少一个云查杀服务器发送业务处理请求。
可选地,方法还包括:消息中心服务器从配置服务器获取至少一个推送服务器的服务信息,向在线的推送服务器发送广播方式的推送任务,并设定在线的推送服务器中的一个推送服务器执行一阶段消息推送,所有在线的推送服务器执行二阶段消息推送。
可选地,至少一个推送服务器根据消息中心服务器下发的推送任务,按照用户标识列表将推送消息发送至网关服务器,以供网关服务器将推送消息转发至客户端进一步包括:
至少一个推送服务器将推送消息通过广播方式发送给网关服务器,以供网关服务器将推送消息转发至所有建立长连接的客户端以完成一阶段消息推送;以及
获取筛选得到的新用户登录信息对应的增量用户标识列表,将增量用户标识列表以及推送消息发送给网关服务器,以供网关服务器根据增量用户标识列表将推送消息转发至对应的客户端以完成二阶段消息推送。
可选地,方法还包括:消息中心服务器从配置服务器获取至少一个推送服务器的服务信息,向在线的推送服务器发送多播方式的推送任务,并设定每个在线的推送服务器执行一阶段消息推送,所有在线的推送服务器执行二阶段消息推送。
可选地,至少一个推送服务器根据消息中心服务器下发的推送任务,按照用户标识列表将推送消息发送至网关服务器,以供网关服务器将推送消息转发至客户端进一步包括:
至少一个推送服务器按照预设条件筛选符合推送条件的用户标识列表,将符合推送条件的用户标识列表以及推送消息发送给网关服务器,以供网关服务器根据符合推送条件的用户标识列表将推送消息转发至对应的客户端以完成一阶段消息推送;以及
获取筛选得到的符合推送条件的新用户登录信息对应的增量用户标识列表,将增量用户标识列表以及推送消息发送给网关服务器,以供网关服务器根据增量用户标识列表将推送消息转发至对应的客户端以完成二阶段消息推送。
可选地,方法还包括:将已推送的推送消息标识列表以及已推送的用户标识列表存储至状态中心服务器。
可选地,方法还包括:在与客户端建立长连接之后,网关服务器判断在第二预设时间内是否接收到客户端发送的一阶段用户登录请求,若否,则断开与客户端之间所建立的长连接。
可选地,方法还包括:在将一阶段密钥转发至客户端之后,网关服务器判断在第三预设时间内是否接收到客户端发送的二阶段用户登录请求,若否,则断开与客户端之间所建立的长连接。
可选地,方法还包括:网关服务器每隔第四预设时间向至少一个业务服务器发送业务处理请求,以检测网关服务器与至少一个业务服务器之间的链接的可用状态。
可选地,网关服务器包括:监听线程和工作线程;
监听线程从配置服务器获取至少一个业务服务器的服务信息;
工作线程将客户端利用长连接发送的用户登录请求或业务处理请求转发给在线的至少一个业务服务器;将至少一个客户端提供的用户登录信息上报给在线的至少一个推送服务器。
可选地,方法还包括:监听线程与客户端之间建立长连接,以及将长连接转接给工作线程。
可选地,方法还包括:工作线程将网关服务器运行时的错误信息、用户登录请求或业务处理请求记录到日志中。
可选地,方法还包括:工作线程通过预设接口查看网关服务器的运行状态。
可选地,服务信息包括:IP端口号、服务类型、和/或在线状态。
根据本发明上述实施例提供的长连接服务方法,客户端基于与网关服务器之间建立的长连接发送两阶段用户登录请求,登录服务器和密钥服务器进行两阶段的登录验证,提高了长连接服务的安全性,另外,通过限制长连接建立后两阶段用户登录请求的发送时间,可以有效地防止恶意连接和基于TCP SYN的攻击,进一步提升了长连接服务的安全性;客户端基于与网关服务器之间建立的长连接发送业务处理请求,可以实现业务请求实时转发,从而能够与云查杀服务器快速进行通信,实现客户端状态实时感知,当危害影响巨大的病毒(例如勒索者病毒)出现时,客户端可以在不升级的情况下,通过长连接服务立刻获取防护手段,减少病毒造成的危害;基于长连接的消息推送服务,能够保证消息实时地推送给客户端,还有利于实现消息的精准推送,克服了现有技术中基于短连接的消息推送服务,需要客户端主动发起,频率过高则对服务器造成较大负担,频率较低则不能保证消息的实时性,而导致消息的实时性难以保证的缺陷,另外,对于一些重要的安全类信息,短连接推送的时延也是致命的。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的基于长连接的消息推送设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (30)

1.一种基于长连接的消息推送***,包括:网关服务器、至少一个推送服务器、消息中心服务器以及配置服务器;所述网关服务器和所述至少一个推送服务器预先在所述配置服务器中完成注册;
配置服务器,适于存储所述至少一个推送服务器的服务信息;
消息中心服务器,适于管理消息推送策略,根据所述消息推送策略配置推送任务;
网关服务器,与客户端之间建立长连接,适于在获取到至少一个客户端提供的用户登录信息后,从所述配置服务器获取推送服务器的服务信息,将至少一个客户端提供的用户登录信息上报给在线的至少一个推送服务器;
至少一个推送服务器,适于根据接收到的用户登录信息,记录用户标识列表;以及,根据所述消息中心服务器下发的推送任务,按照用户标识列表将推送消息发送至网关服务器,以供所述网关服务器将推送消息转发至客户端。
2.根据权利要求1所述的消息推送***,其中,所述消息中心服务器进一步适于:从配置服务器获取至少一个推送服务器的服务信息,向在线的推送服务器发送广播方式的推送任务,并设定在线的推送服务器中的一个推送服务器执行一阶段消息推送,所有在线的推送服务器执行二阶段消息推送。
3.根据权利要求2所述的消息推送***,其中,所述至少一个推送服务器包括:推送模块,适于将推送消息通过广播方式发送给网关服务器,以供所述网关服务器将推送消息转发至所有建立长连接的客户端以完成一阶段消息推送;以及,获取筛选得到的新用户登录信息对应的增量用户标识列表,将所述增量用户标识列表以及推送消息发送给网关服务器,以供所述网关服务器根据增量用户标识列表将推送消息转发至对应的客户端以完成二阶段消息推送。
4.根据权利要求1所述的消息推送***,其中,所述消息中心服务器进一步适于:从配置服务器获取至少一个推送服务器的服务信息,向在线的推送服务器发送多播方式的推送任务,并设定每个在线的推送服务器执行一阶段消息推送和二阶段消息推送。
5.根据权利要求4所述的消息推送***,其中,所述至少一个推送服务器包括:推送模块,适于按照预设条件筛选符合推送条件的用户标识列表,将符合推送条件的用户标识列表以及推送消息发送给网关服务器,以供所述网关服务器根据符合推送条件的用户标识列表将推送消息转发至对应的客户端以完成一阶段消息推送;以及,获取筛选得到的符合推送条件的新用户登录信息对应的增量用户标识列表,将增量用户标识列表以及推送消息发送给网关服务器,以供所述网关服务器根据增量用户标识列表将推送消息转发至对应的客户端以完成二阶段消息推送。
6.根据权利要求3或5所述的消息推送***,其中,所述***还包括:状态中心服务器,适于记录已推送的推送消息标识列表以及已推送的用户标识列表,以及记录已成功推送的用户标识列表。
7.根据权利要求6所述的消息推送***,其中,所述***包括:分发装置,适于查询状态中心服务器以筛选出符合推送条件的新用户登录信息对应的增量用户标识列表,将增量用户标识列表发送给推送模块,并存储查询记录;
所述推送模块进一步适于:将增量用户标识列表以及推送消息发送给网关服务器,以供所述网关服务器根据增量用户标识列表将推送消息转发至对应的客户端以完成二阶段消息推送。
8.根据权利要求6所述的消息推送***,所述消息推送***还包括:统计装置,适于查询所述状态中心服务器得到已成功推送的用户标识列表和已推送的用户标识列表;
根据已成功推送的用户标识列表和已推送的用户标识列表计算推送消息的到达率。
9.根据权利要求1所述的消息推送***,其中,所述至少一个推送服务器包括:缓存模块,适于存储预设时间段内已推送的推送消息标识列表以及已推送的用户标识列表。
10.根据权利要求1所述的消息推送***,其中,所述至少一个推送服务器还包括:配置模块,适于将推送服务器的服务信息注册到配置服务器。
11.根据权利要求1所述的消息推送***,其中,所述至少一个推送服务器还包括:指令处理模块,适于根据消息中心服务器发送的消息处理指令,对推送消息进行相应地处理。
12.根据权利要求1所述的消息推送***,其中,所述网关服务器包括多个线程,每个推送服务器包括连接协程,网关服务器的一个线程与推送服务器的连接协程之间建立链接;
所述网关服务器将至少一个客户端提供的用户登录信息均衡地分配给各个线程,各个线程基于与至少一个推送服务器的连接协程之间建立的链接将用户登录信息上报给在线的至少一个推送服务器,其中,每个线程上报的用户登录信息是互斥的。
13.根据权利要求12所述的消息推送***,其中,所述至少一个推送服务器包括:信息存储模块,适于根据接收到的用户登录信息,记录用户标识列表以及线程标识。
14.根据权利要求13所述的消息推送***,其中,所述至少一个推送服务器进一步适于:若所述网关服务器上报的客户端为离线状态,则记录该客户端对应的用户标识的在线状态为离线;或者
若检测到与网关服务器的线程之间的链接断开,则删除该线程标识以及该线程上报的所有用户登录信息对应的用户标识。
15.根据权利要求13或14所述的消息推送***,其中,所述网关服务器进一步适于:若检测到线程与至少一个推送服务器的协程之间的链接断开时,则启动重试机制再次与推送服务器建立链接;
若链接失败,则将该线程存储的用户登录信息转发给其他线程。
16.一种基于长连接的消息推送方法,包括:
网关服务器和至少一个推送服务器预先在配置服务器中完成注册;
网关服务器与客户端之间建立长连接,在获取到至少一个客户端提供的用户登录信息后,从所述配置服务器获取推送服务器的服务信息,将至少一个客户端提供的用户登录信息上报给在线的至少一个推送服务器;
至少一个推送服务器根据接收到的用户登录信息,记录用户标识列表;以及,根据所述消息中心服务器下发的推送任务,按照用户标识列表将推送消息发送至网关服务器,以供所述网关服务器将推送消息转发至客户端。
17.根据权利要求16所述的消息推送方法,其中,所述方法还包括:消息中心服务器从配置服务器获取至少一个推送服务器的服务信息,向在线的推送服务器发送广播方式的推送任务,并设定在线的推送服务器中的一个推送服务器执行一阶段消息推送,所有在线的推送服务器执行二阶段消息推送。
18.根据权利要求17所述的消息推送方法,其中,所述至少一个推送服务器根据所述消息中心服务器下发的推送任务,按照用户标识列表将推送消息发送至网关服务器,以供所述网关服务器将推送消息转发至客户端进一步包括:
所述至少一个推送服务器将推送消息通过广播方式发送给网关服务器,以供所述网关服务器将推送消息转发至所有建立长连接的客户端以完成一阶段消息推送;以及,获取筛选得到的新用户登录信息对应的增量用户标识列表,将所述增量用户标识列表以及推送消息发送给网关服务器,以供所述网关服务器根据增量用户标识列表将推送消息转发至对应的客户端以完成二阶段消息推送。
19.根据权利要求16所述的消息推送方法,其中,所述方法还包括:消息中心服务器从配置服务器获取至少一个推送服务器的服务信息,向在线的推送服务器发送多播方式的推送任务,并设定每个在线的推送服务器执行一阶段消息推送和二阶段消息推送。
20.根据权利要求19所述的消息推送方法,其中,所述至少一个推送服务器根据所述消息中心服务器下发的推送任务,按照用户标识列表将推送消息发送至网关服务器,以供所述网关服务器将推送消息转发至客户端进一步包括:
所述至少一个推送服务器按照预设条件筛选符合推送条件的用户标识列表,将符合推送条件的用户标识列表以及推送消息发送给网关服务器,以供所述网关服务器根据符合推送条件的用户标识列表将推送消息转发至对应的客户端以完成一阶段消息推送;以及,获取筛选得到的符合推送条件的新用户登录信息对应的增量用户标识列表,将增量用户标识列表以及推送消息发送给网关服务器,以供所述网关服务器根据增量用户标识列表将推送消息转发至对应的客户端以完成二阶段消息推送。
21.根据权利要求18或20所述的消息推送方法,其中,所述方法还包括:将已推送的推送消息标识列表以及已推送的用户标识列表,以及已成功推送的用户标识列表记录到状态中心服务器。
22.根据权利要求21所述的消息推送方法,其中,所述方法包括:分发装置查询状态中心服务器以筛选出符合推送条件的新用户登录信息对应的增量用户标识列表,将增量用户标识列表发送给至少一个推送服务器,并存储查询记录;
所述至少一个推送服务器将增量用户标识列表以及推送消息发送给网关服务器,以供所述网关服务器根据增量用户标识列表将推送消息转发至对应的客户端以完成二阶段消息推送。
23.根据权利要求21所述的消息推送方法,所述方法还包括:统计装置查询所述状态中心服务器得到已成功推送的用户标识列表和已推送的用户标识列表;
根据已成功推送的用户标识列表和已推送的用户标识列表计算推送消息的到达率。
24.根据权利要求16所述的消息推送方法,其中,所述方法还包括:所述至少一个推送服务器存储预设时间段内已推送的推送消息标识列表以及已推送的用户标识列表。
25.根据权利要求16所述的消息推送方法,其中,所述方法还包括:所述至少一个推送服务器将服务信息注册到配置服务器。
26.根据权利要求16所述的消息推送方法,其中,所述方法还包括:所述至少一个推送服务器根据消息中心服务器发送的消息处理指令,对推送消息进行相应地处理。
27.根据权利要求16所述的消息推送方法,其中,所述网关服务器包括多个线程,每个推送服务器包括连接协程,网关服务器的一个线程与推送服务器的连接协程之间建立链接;
所述方法还包括:所述网关服务器将至少一个客户端提供的用户登录信息均衡地分配给各个线程,各个线程基于与至少一个推送服务器的连接协程之间建立的链接将用户登录信息上报给在线的至少一个推送服务器,其中,每个线程上报的用户登录信息是互斥的。
28.根据权利要求27所述的消息推送方法,其中,所述方法还包括:所述至少一个推送服务器根据接收到的用户登录信息,记录用户标识列表以及线程标识。
29.根据权利要求28所述的消息推送方法,其中,所述方法还包括:若所述网关服务器上报的客户端为离线状态,所述至少一个推送服务器记录该客户端对应的用户标识的在线状态为离线;或者
若检测到与网关服务器的线程之间的链接断开,所述至少一个推送服务器删除该线程标识以及该线程上报的所有用户登录信息对应的用户标识。
30.根据权利要求28或29所述的消息推送方法,其中,所述方法还包括:若检测到线程与至少一个推送服务器的协程之间的链接断开时,所述网关服务器启动重试机制再次与推送服务器建立链接;若链接失败,则将该线程存储的用户登录信息转发给其他线程。
CN201710774218.6A 2017-08-31 2017-08-31 基于长连接的消息推送***及方法 Active CN107395767B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710774218.6A CN107395767B (zh) 2017-08-31 2017-08-31 基于长连接的消息推送***及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710774218.6A CN107395767B (zh) 2017-08-31 2017-08-31 基于长连接的消息推送***及方法

Publications (2)

Publication Number Publication Date
CN107395767A CN107395767A (zh) 2017-11-24
CN107395767B true CN107395767B (zh) 2021-02-05

Family

ID=60347472

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710774218.6A Active CN107395767B (zh) 2017-08-31 2017-08-31 基于长连接的消息推送***及方法

Country Status (1)

Country Link
CN (1) CN107395767B (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109922101B (zh) * 2017-12-12 2023-08-15 三六零科技集团有限公司 一种在移动终端中实现特定业务的方法、装置和服务器
CN108093060A (zh) * 2017-12-26 2018-05-29 陈占辉 一种智能家居控制后台***消息的推送方法
CN108234631B (zh) * 2017-12-29 2021-06-15 北京奇虎科技有限公司 消息推送平台和消息推送方法
CN108093076A (zh) * 2017-12-29 2018-05-29 北京奇虎科技有限公司 消息推送方法和装置
CN108243112B (zh) * 2018-01-11 2022-07-19 杭州网易智企科技有限公司 聊天群组网络流量控制方法及装置、存储介质及计算设备
CN108322521B (zh) * 2018-01-17 2020-10-16 腾讯科技(深圳)有限公司 消息内容推送方法、装置、***、计算机设备和存储介质
CN108769111B (zh) * 2018-04-17 2020-01-24 平安科技(深圳)有限公司 一种服务器连接方法、计算机可读存储介质及终端设备
CN108390950A (zh) * 2018-05-28 2018-08-10 中国建设银行股份有限公司 一种消息推送方法、装置及设备
CN110753070A (zh) * 2018-07-23 2020-02-04 北京国双科技有限公司 数据通信方法、客户端、服务端以及数据通信***
CN110166576B (zh) * 2019-06-28 2022-07-01 飞天诚信科技股份有限公司 一种实现云音箱消息补推的方法及***
CN110545327B (zh) * 2019-09-20 2022-04-29 北京达佳互联信息技术有限公司 一种信息推送方法及***
CN111131443B (zh) * 2019-12-23 2023-06-30 中国平安财产保险股份有限公司 一种任务推送方法和***
CN113238808A (zh) * 2020-01-22 2021-08-10 北京沃东天骏信息技术有限公司 一种消息推送方法和装置
CN111866095A (zh) * 2020-07-01 2020-10-30 合肥森亿智能科技有限公司 基于私有云的统一推送平台、方法以及终端
CN112134783A (zh) * 2020-08-11 2020-12-25 广州市贺氏办公设备有限公司 基于用户亲密度的即时通讯***、方法、装置及介质
CN112883261A (zh) * 2021-01-28 2021-06-01 北京百度网讯科技有限公司 配置数据的推送方法、装置、电子设备和介质
CN115134404B (zh) * 2021-03-22 2024-01-30 花瓣云科技有限公司 管理推送连接的方法和电子设备
CN113127236A (zh) * 2021-05-10 2021-07-16 广州欢网科技有限责任公司 消息推送方法、装置及服务器
CN114051037A (zh) * 2021-11-02 2022-02-15 珠海读书郎软件科技有限公司 一种推送消息管理分发的方法
CN114095465A (zh) * 2021-11-17 2022-02-25 北京同城必应科技有限公司 一种在分布式环境下高效的im消息时序性保障机制实现方法
CN115296822B (zh) * 2022-09-28 2022-12-20 飞天诚信科技股份有限公司 一种业务处理的实现方法及***
CN117573390A (zh) * 2023-11-20 2024-02-20 航天信息(广东)有限公司 一种数据处理方法、云端、客户端及数据处理***

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070014350A (ko) * 2005-07-28 2007-02-01 에스케이 텔레콤주식회사 푸시 프록시 게이트웨이와 콘텐츠 제공 서버에서의 인증방법
CN102209302A (zh) * 2011-07-07 2011-10-05 深圳市金立通信设备有限公司 一种实现移动终端信息推送的***及方法
CN103051715A (zh) * 2012-12-24 2013-04-17 东软熙康健康科技有限公司 一种向终端发布通知的方法、相关装置及***
CN105099882A (zh) * 2015-07-09 2015-11-25 杭州电子科技大学 一种基于mqtt的云推送方法和***
CN105141452A (zh) * 2015-08-07 2015-12-09 北京思特奇信息技术股份有限公司 一种基于cxf的高性能服务***及方法
CN105407180A (zh) * 2015-12-29 2016-03-16 曙光信息产业(北京)有限公司 服务器的消息推送方法和装置
CN106385435A (zh) * 2016-08-30 2017-02-08 乐视控股(北京)有限公司 一种业务***的服务治理方法和***
CN107086954A (zh) * 2017-05-23 2017-08-22 北京奇虎科技有限公司 消息推送方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070014350A (ko) * 2005-07-28 2007-02-01 에스케이 텔레콤주식회사 푸시 프록시 게이트웨이와 콘텐츠 제공 서버에서의 인증방법
CN102209302A (zh) * 2011-07-07 2011-10-05 深圳市金立通信设备有限公司 一种实现移动终端信息推送的***及方法
CN103051715A (zh) * 2012-12-24 2013-04-17 东软熙康健康科技有限公司 一种向终端发布通知的方法、相关装置及***
CN105099882A (zh) * 2015-07-09 2015-11-25 杭州电子科技大学 一种基于mqtt的云推送方法和***
CN105141452A (zh) * 2015-08-07 2015-12-09 北京思特奇信息技术股份有限公司 一种基于cxf的高性能服务***及方法
CN105407180A (zh) * 2015-12-29 2016-03-16 曙光信息产业(北京)有限公司 服务器的消息推送方法和装置
CN106385435A (zh) * 2016-08-30 2017-02-08 乐视控股(北京)有限公司 一种业务***的服务治理方法和***
CN107086954A (zh) * 2017-05-23 2017-08-22 北京奇虎科技有限公司 消息推送方法及装置

Also Published As

Publication number Publication date
CN107395767A (zh) 2017-11-24

Similar Documents

Publication Publication Date Title
CN107395767B (zh) 基于长连接的消息推送***及方法
CN107580046B (zh) 长连接服务***及方法
US10708289B2 (en) Secured event monitoring leveraging blockchain
US11223639B2 (en) Endpoint network traffic analysis
US10728216B2 (en) Web application security architecture
CN106911648B (zh) 一种环境隔离方法及设备
CN107347047B (zh) 攻击防护方法和装置
CN114787781A (zh) 用于启用高可用性受管理故障转移服务的***和方法
US11741075B2 (en) Methods and system of tracking transactions for distributed ledger
CN110213263B (zh) 基于联盟区块链的身份验证方法、设备及存储介质
CN111353151B (zh) 一种网络应用的漏洞检测方法和装置
CN111698126A (zh) 信息监控方法、***及计算机可读存储介质
CN117131493A (zh) 权限管理***构建方法、装置、设备及存储介质
US11765058B2 (en) Extensible, secure and efficient monitoring and diagnostic pipeline for hybrid cloud architecture
US20200287847A1 (en) System and control method
CN112363887A (zh) 一种分布式应用监控方法、装置以及存储介质
WO2021254622A1 (en) Methods, system and communication devices related to lawful interception
CN107124390B (zh) 计算设备的安全防御、实现方法、装置及***
CN117632922B (zh) 基于高并发任务处理的业务运营平台及数据处理方法
CN116029729B (zh) 基于动态接入应用链管理合约模式的跨链方法及***
US20230198845A1 (en) Systems and methods of configuring monitoring operations for a cluster of servers
TWI717457B (zh) 環境隔離方法及設備
CN116074024A (zh) 基于云计算技术的监控插件鉴权方法及***
CN117081852A (zh) 基于内外网隔离的公共信息安全发布方法以及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20201210

Address after: 1762, floor 17, 15 / F, building 3, 10 Jiuxianqiao Road, Chaoyang District, Beijing 100020

Applicant after: BEIJING QIYUAN TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Applicant before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant