CN108390881A - 一种分布式高并发实时消息推送方法及系统 - Google Patents
一种分布式高并发实时消息推送方法及系统 Download PDFInfo
- Publication number
- CN108390881A CN108390881A CN201810163782.9A CN201810163782A CN108390881A CN 108390881 A CN108390881 A CN 108390881A CN 201810163782 A CN201810163782 A CN 201810163782A CN 108390881 A CN108390881 A CN 108390881A
- Authority
- CN
- China
- Prior art keywords
- message
- web server
- user
- legal
- cookie information
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
Abstract
本发明提供了一种分布式高并发实时消息推送方法及系统,方法包括:建立第一用户与web服务器之间的消息连接,接收第二用户进行web登录后发送到web服务器的消息,验证消息是否合法,若否,则结束非法访问,若是,则:进行redis数据高速并发处理,进行kafka分区消息处理;web服务器同时消费kafka消息,多台web服务器同时推送相同数据到对应websocket连接分组用户中,第一用户接收web服务器发送的消息。本发明能够降低websocket即时通讯在高并发的场景下的延迟性以及提高可扩展性。
Description
技术领域
本发明属于消息处理技术领域,尤其涉及一种分布式高并发实时消息推送方法及系统。
背景技术
目前,web实时推送技术主要采用两种方法,一种是采用http轮询的方式实现,该方法主要通过浏览器XHR技术,定时地向web服务器发送http 请求,根据web服务器返回的结果重新渲染用户界面,以达到数据刷新的目的,从而达到即时推送的效果,但是,这种方法存在很多比较严重的缺陷,如推送数据延迟时间较长、服务器和浏览器资源开销都比较大、传输数据量存在瓶颈等;另一种方式是采用一个单独的websocket服务器用来传输数据,该方法是搭建一个单独的websocket服务器,然后所有的websocket连接请求该服务器,从而实现所有websocket全部都连接到该服务器,这样只需要管理单个websocket服务器从而实现消息对所有的用户的分发,这种方式造成扩展性较差,用户过多时需要对用户分区进行隔离,已达到不超过服务器的负载。
因此,如何降低websocket即时通讯在高并发的场景下的延迟性以及提高可扩展性是一项亟待解决的问题。
发明内容
有鉴于此,本发明提供了一种分布式高并发实时消息推送方法,能够降低websocket即时通讯在高并发的场景下的延迟性以及提高可扩展性。
为了实现上述目的,本发明提供如下技术方案:
一种分布式高并发实时消息推送方法,包括:
建立第一用户与web服务器之间的消息连接;
接收第二用户进行web登录后发送到web服务器的消息;
验证所述消息是否合法,若否,则结束非法访问,若是,则:
进行redis数据高速并发处理;
进行kafka分区消息处理;
web服务器同时消费kafka消息,多台web服务器同时推送相同数据到对应websocket连接分组用户中;
所述第一用户接收web服务器发送的消息。
优选地,所述建立第一用户与web服务器之间的消息连接包括:
接收所述第一用户的web登录请求;
基于所述登录请求建立连接,产生认证cookie信息,携带所述cookie信息发起websocket长连接请求,解析所述websocket中的所述cookie信息,判断是否合法,若否,则非法访问结束,若是,则:
建立websocket连接,将该连接加入相应分组中。
优选地,所述基于所述登录请求建立连接,产生认证cookie信息,携带所述cookie信息发起websocket长连接请求,解析所述websocket中的所述 cookie信息,判断是否合法包括:
所述第一用户登录成功后,浏览器访问即时推送页面;
所述浏览器执行js,发起ws或wss连接请求;
web服务器解析接收到的所述ws或wss连接请求,并获取cookie信息;
将对应的cookie信息利用web服务器对应的key进行des解密;
将得到的明文字符串进行拆分成6个部分;
将拆分的6个部分信息进行比对,判断是否全部合法。
优选地,所述验证所述消息是否合法包括:
接收所述第二用户携带验证信息发起推送数据的http请求;
所述web服务器接收到http请求,验证cookie信息是否合法,若否,则结束非法访问,若是,则:
验证请求签名sign字段是否合法,若否,则结束非法访问,若是,则:
对所述请求进行重复性校验是否允许推送数据,若否,则结束非法访问,若是,则:
进行redis数据高速并发处理。
优选地,所述kafka分区消息处理包括:
web服务器对处理好的数据进行封装,同时序列化成json数据,生产消息到kafka服务器对用的topic上;
web服务器集群上的所有实例同时订阅所述topic,其中,所有的web服务器根据redis分布式锁实现处于不同的group中。
一种分布式高并发实时消息推送系统,包括:
建立模块,用于建立第一用户与web服务器之间的消息连接;
第一接收模块,用于接收第二用户进行web登录后发送到web服务器的消息;
验证模块,用于验证所述消息是否合法;
结束模块,用于当所述消息不合法时,结束非法访问;
第一处理模块,用于当所述消息合法时,进行redis数据高速并发处理;
第二处理模块,用于进行kafka分区消息处理;
推送模块,用于web服务器同时消费kafka消息,多台web服务器同时推送相同数据到对应websocket连接分组用户中;
第二接收模块,用于所述第一用户接收web服务器发送的消息。
优选地,所述建立模块具体用于:
接收所述第一用户的web登录请求;
基于所述登录请求建立连接,产生认证cookie信息,携带所述cookie信息发起websocket长连接请求,解析所述websocket中的所述cookie信息,判断是否合法,若否,则非法访问结束,若是,则:
建立websocket连接,将该连接加入相应分组中。
优选地,所述建立模块在执行基于所述登录请求建立连接,产生认证 cookie信息,携带所述cookie信息发起websocket长连接请求,解析所述 websocket中的所述cookie信息,判断是否合法时,具体用于:
所述第一用户登录成功后,浏览器访问即时推送页面;
所述浏览器执行js,发起ws或wss连接请求;
web服务器解析接收到的所述ws或wss连接请求,并获取cookie信息;
将对应的cookie信息利用web服务器对应的key进行des解密;
将得到的明文字符串进行拆分成6个部分;
将拆分的6个部分信息进行比对,判断是否全部合法。
优选地,所述验证模块具体用于:
接收所述第二用户携带验证信息发起推送数据的http请求;
所述web服务器接收到http请求,验证cookie信息是否合法,若否,则结束非法访问,若是,则:
验证请求签名sign字段是否合法,若否,则结束非法访问,若是,则:
对所述请求进行重复性校验是否允许推送数据,若否,则结束非法访问,若是,则:
进行redis数据高速并发处理。
优选地,所述第二处理模块具体用于:
web服务器对处理好的数据进行封装,同时序列化成json数据,生产消息到kafka服务器对用的topic上;
web服务器集群上的所有实例同时订阅所述topic,其中,所有的web服务器根据redis分布式锁实现处于不同的group中。
从上述技术方案可以看出,本发明提供了一种分布式高并发实时消息推送方法,当需要进行消息推送时,首先建立第一用户与web服务器之间的消息连接,然后接收第二用户进行web登录后发送到web服务器的消息,并验证所述消息是否合法,若否,则结束非法访问,若是,则:进行redis数据高速并发处理,然后进行kafka分区消息处理,web服务器同时消费kafka消息,多台web服务器同时推送相同数据到对应websocket连接分组用户中,最后所述第一用户接收web服务器发送的消息。本发明通过html5前端与分布式web 服务器建立连接,利用kafka消息生产和消费的原理,同时使用redis进行消息同步处理,实时稳定接收分布式web全局消息,实现分布式web消息的推送,具有健壮性、可扩展性、全局性、一致性、高并发等优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明公开的一种分布式高并发实时消息推送方法实施例1的方法流程图;
图2为本发明公开的一种分布式高并发实时消息推送系统实施例1的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明公开的一种分布式高并发实时消息推送方法实施例1的流程图,所述方法包括:
S101、建立第一用户与web服务器之间的消息连接;
当需要通过web服务器进行消息推送时,首先建立第一用户与web服务器之间的消息连接。其中,所述的第一用户即为接收web服务器推送消息的用户。
S102、接收第二用户进行web登录后发送到web服务器的消息;
当建立第一用户与web服务器之间的消息连接后,第二用户进行web登录,第二用户成功进行web登录后,向web服务器发送消息,其中,第二用户是提前在后台录入的用户,采用图形采用手机号和姓名以及图形短信验证码的方式进行登录系统,向web服务器发送消息则是第二用户登录后操作自己的账号产生的信息推送到web服务器。web服务器接收第二用户进行web 登录后发送到web服务器的消息。
S103、验证所述消息是否合法,若否,则进入S104,若是,则进入S105:
当web服务器接收到消息后,会经过cookie、sign合法校验,重复校验,判断是否推送消息。
S104、结束非法访问;
当经过验证消息不合法时,则结束非法访问。
S105、进行redis数据高速并发处理;
当经过验证消息合法时,则进行多进程数据同步处理,主要采用redis中的incrBy、decrBy、decr、incr、append等高并发api处理。
S106、进行kafka分区消息处理;
web服务器生产json格式的数据到kafka服务器,JSON数据采用的是Java 中的对象封装,然后进行json序列化产生json格式的数据,通过kafka生产者api推送到kafka服务器。
S107、web服务器同时消费kafka消息,多台web服务器同时推送相同数据到对应websocket连接分组用户中;
web服务器的所有实例同时消费相同的消息采用的是利用redis分布式锁让所有web服务器的实例订阅的kafka消息group全不两两相同,从而全局消费相同的消息。第一用户经过与web服务器之间建立消息连接,此时该请求是连接到整个web服务器集群中的一个实例上,对于多个相同组别的用户会均匀分布在多个web服务器实例上,此时需要整个web服务器集群中的所有实例对连接的对应组的第一用户进行推送websocket消息,因此需要整个web 服务器集群推送相同的消息,从而实现消息的全局分发。
S108、第一用户接收web服务器发送的消息。
综上所述,当需要进行消息推送时,首先建立第一用户与web服务器之间的消息连接,然后接收第二用户进行web登录后发送到web服务器的消息,并验证所述消息是否合法,若否,则结束非法访问,若是,则:进行redis数据高速并发处理,然后进行kafka分区消息处理,web服务器同时消费kafka 消息,多台web服务器同时推送相同数据到对应websocket连接分组用户中,最后所述第一用户接收web服务器发送的消息。本发明通过html5前端与分布式web服务器建立连接,利用kafka消息生产和消费的原理,同时使用redis 进行消息同步处理,实时稳定接收分布式web全局消息,实现分布式web消息的推送,具有健壮性、可扩展性、全局性、一致性、高并发等优点。
具体的,在上述实施例中,步骤S101建立第一用户与web服务器之间的消息连接的其中一种实现方式可以是:
S1、接收第一用户的web登录请求;
当需要建立第一用户与web服务器之间的消息连接时,第一用户进行web 登录,web服务器接收第一用户的web登录请求。
S2、基于登录请求建立连接,产生认证cookie信息,携带cookie信息发起websocket长连接请求,解析websocket中的cookie信息,判断是否合法,若否,则非法访问结束,若是,则:建立websocket连接,将该连接加入相应分组中。
根据接收到的登录请求,建立websocket连接,web服务器将websocket 请求转化为http请求类型,同时提取对应的预先加密的cookie信息,解密分析cookie信息是否合法,若合法则建立websocket连接,否则,拒绝此次连接请求。其中,cookie加密使用特殊的分隔符号将多个用户信息按照一定顺序排列并采用des加密算法以及cbc加密模式的方式加密整个cookie信息。第一用户请求经过nginx反向代理以及通过负载均衡算法将连接请求均匀分布到web服务器集群中,第一用户的长连接均匀的建立在web服务器上。其中,第一用户在进行websocket长连接时,在请求的uri地址中携带分组参数,利用uri地址中的参数进行分组管理,实现单独对不同组用户的消息传递。 websocket的分组连接信息存储结构的安全性,采用线程安全的快速查找Map 结构ConcurrentHashMap和高性能线程安全集合CopyOnWriteArraySet结构。
具体的,在基于登录请求建立连接,产生认证cookie信息,携带cookie 信息发起websocket长连接请求,解析websocket中的cookie信息,判断是否合法时,可以采用以下方式:
第一用户登录成功后,浏览器访问即时推送页面;
浏览器执行js,发起ws或wss连接请求;
web服务器解析接收到的ws或wss连接请求,并获取cookie信息;
将对应的cookie信息利用web服务器对应的key进行des解密;
将得到的明文字符串进行拆分成6个部分;
将拆分的6个部分信息进行比对,判断是否全部合法,若合法则建立连接,若不合法,则拒绝连接。
具体的,在上述实施例中,步骤S103验证消息是否合法其中一种实现方式可以是:
接收第二用户携带验证信息发起推送数据的http请求;
web服务器接收到http请求,验证cookie信息是否合法,若否,则结束非法访问,若是,则:
验证请求签名sign字段是否合法,若否,则结束非法访问,若是,则:
对请求进行重复性校验是否允许推送数据,若否,则结束非法访问,若是,则:
进行redis数据高速并发处理。
具体的,在上述实施例中,步骤S106进行kafka分区消息处理其中一种实现方式可以是:
web服务器对处理好的数据进行封装,同时序列化成json数据,生产消息到kafka服务器对用的topic上;
web服务器集群上的所有实例同时订阅所述topic,其中,所有的web服务器根据redis分布式锁实现处于不同的group中。
综上所述,本发明利用websocket、redis、kafka进行即时消息推送,充分利用服务器的cpu、内存、网络带宽资源,有效的解决了推送延迟、实现了推送并发高以及推送消耗资源少。
如图2所示,为本发明公开的一种分布式高并发实时消息推送系统实施例1的结构示意图,所述系统包括:
建立模块201,用于建立第一用户与web服务器之间的消息连接;
当需要通过web服务器进行消息推送时,首先建立第一用户与web服务器之间的消息连接。其中,所述的第一用户即为接收web服务器推送消息的用户。
第一接收模块202,用于接收第二用户进行web登录后发送到web服务器的消息;
当建立第一用户与web服务器之间的消息连接后,第二用户进行web登录,第二用户成功进行web登录后,向web服务器发送消息,其中,第二用户是提前在后台录入的用户,采用图形采用手机号和姓名以及图形短信验证码的方式进行登录系统,向web服务器发送消息则是第二用户登录后操作自己的账号产生的信息推送到web服务器。web服务器接收第二用户进行web 登录后发送到web服务器的消息。
验证模块203,用于验证所述消息是否合法;
当web服务器接收到消息后,会经过cookie、sign合法校验,重复校验,判断是否推送消息。
结束模块204,用于当所述消息不合法时,结束非法访问;
当经过验证消息不合法时,则结束非法访问。
第一处理模块205,用于当消息合法时,进行redis数据高速并发处理;
当经过验证消息合法时,则进行多进程数据同步处理,主要采用redis中的incrBy、decrBy、decr、incr、append等高并发api处理。
第二处理模块206,用于进行kafka分区消息处理;
web服务器生产json格式的数据到kafka服务器,JSON数据采用的是Java 中的对象封装,然后进行json序列化产生json格式的数据,通过kafka生产者api推送到kafka服务器。
推送模块207,用于web服务器同时消费kafka消息,多台web服务器同时推送相同数据到对应websocket连接分组用户中;
web服务器的所有实例同时消费相同的消息采用的是利用redis分布式锁让所有web服务器的实例订阅的kafka消息group全不两两相同,从而全局消费相同的消息。第一用户经过与web服务器之间建立消息连接,此时该请求是连接到整个web服务器集群中的一个实例上,对于多个相同组别的用户会均匀分布在多个web服务器实例上,此时需要整个web服务器集群中的所有实例对连接的对应组的第一用户进行推送websocket消息,因此需要整个web 服务器集群推送相同的消息,从而实现消息的全局分发。
第二接收模块208,用于第一用户接收web服务器发送的消息。
综上所述,当需要进行消息推送时,首先建立第一用户与web服务器之间的消息连接,然后接收第二用户进行web登录后发送到web服务器的消息,并验证所述消息是否合法,若否,则结束非法访问,若是,则:进行redis数据高速并发处理,然后进行kafka分区消息处理,web服务器同时消费kafka 消息,多台web服务器同时推送相同数据到对应websocket连接分组用户中,最后所述第一用户接收web服务器发送的消息。本发明通过html5前端与分布式web服务器建立连接,利用kafka消息生产和消费的原理,同时使用redis 进行消息同步处理,实时稳定接收分布式web全局消息,实现分布式web消息的推送,具有健壮性、可扩展性、全局性、一致性、高并发等优点。
具体的,在上述实施例中,建立模块201建立第一用户与web服务器之间的消息连接的其中一种实现方式可以是:
S1、接收第一用户的web登录请求;
当需要建立第一用户与web服务器之间的消息连接时,第一用户进行web 登录,web服务器接收第一用户的web登录请求。
S2、基于登录请求建立连接,产生认证cookie信息,携带cookie信息发起websocket长连接请求,解析websocket中的cookie信息,判断是否合法,若否,则非法访问结束,若是,则:建立websocket连接,将该连接加入相应分组中。
根据接收到的登录请求,建立websocket连接,web服务器将websocket 请求转化为http请求类型,同时提取对应的预先加密的cookie信息,解密分析cookie信息是否合法,若合法则建立websocket连接,否则,拒绝此次连接请求。其中,cookie加密使用特殊的分隔符号将多个用户信息按照一定顺序排列并采用des加密算法以及cbc加密模式的方式加密整个cookie信息。第一用户请求经过nginx反向代理以及通过负载均衡算法将连接请求均匀分布到 web服务器集群中,第一用户的长连接均匀的建立在web服务器上。其中,第一用户在进行websocket长连接时,在请求的uri地址中携带分组参数,利用uri地址中的参数进行分组管理,实现单独对不同组用户的消息传递。 websocket的分组连接信息存储结构的安全性,采用线程安全的快速查找Map 结构ConcurrentHashMap和高性能线程安全集合CopyOnWriteArraySet结构。
具体的,在基于登录请求建立连接,产生认证cookie信息,携带cookie 信息发起websocket长连接请求,解析websocket中的cookie信息,判断是否合法时,可以采用以下方式:
第一用户登录成功后,浏览器访问即时推送页面;
浏览器执行js,发起ws或wss连接请求;
web服务器解析接收到的ws或wss连接请求,并获取cookie信息;
将对应的cookie信息利用web服务器对应的key进行des解密;
将得到的明文字符串进行拆分成6个部分;
将拆分的6个部分信息进行比对,判断是否全部合法,若合法则建立连接,若不合法,则拒绝连接。
具体的,在上述实施例中,验证模块203验证消息是否合法其中一种实现方式可以是:
接收第二用户携带验证信息发起推送数据的http请求;
web服务器接收到http请求,验证cookie信息是否合法,若否,则结束非法访问,若是,则:
验证请求签名sign字段是否合法,若否,则结束非法访问,若是,则:
对请求进行重复性校验是否允许推送数据,若否,则结束非法访问,若是,则:
进行redis数据高速并发处理。
具体的,在上述实施例中,第二处理模块206进行kafka分区消息处理其中一种实现方式可以是:
web服务器对处理好的数据进行封装,同时序列化成json数据,生产消息到kafka服务器对用的topic上;
web服务器集群上的所有实例同时订阅所述topic,其中,所有的web服务器根据redis分布式锁实现处于不同的group中。
综上所述,本发明利用websocket、redis、kafka进行即时消息推送,充分利用服务器的cpu、内存、网络带宽资源,有效的解决了推送延迟、实现了推送并发高以及推送消耗资源少。
为了更加特定地强调实施的独立性,本说明书涉及许多模块或单元。举例而言,模块或单元可由硬件电路实现,该硬件电路包括特制VLSI电路或门阵列,比如逻辑芯片、晶体管,或其它组件。模块或单元也可在可编程的硬设备中实现,比如场效可编程门阵列、可编程阵列逻辑、可编程逻辑设备等等。
模块或单元也可在藉由各种形式的处理器所执行的软件中实现。比如说,一可执行码模块可包括一个或多个实体的或逻辑的计算机指令区块,该区块可能形成为,比如说,对象、程序或函数。然而,鉴别模块或单元的可执行部分不需要物理上放置在一起,但可由存于不同位置的不同指令所组成,当逻辑上组合在一起时,形成模块或单元且达到该模块或单元所要求的目的。
实际上,可执行码模块或单元可以是一单一指令或多个指令,甚至可以分布在位于不同的程序的数个不同的码区段,并且横跨数个存储设备。同样地,操作数据可被辨识及显示于此模块或单元中,并且可以以任何合适的形式实施且在任何合适的数据结构形式内组织。操作数据可以集合成单一数据集,或可分布在具有不同的存储设备的不同的位置,且至少部分地只以电子信号方式存在于一系统或网络。
本说明书所提及的“实施例”或类似用语表示与实施例有关的特性、结构或特征,包括在本发明的至少一实施例中。因此,本说明书所出现的用语“在一实施例中”、“在实施例中”以及类似用语可能但不必然都指向相同实施例。
再者,本发明所述特性、结构或特征可以以任何方式结合在一个或多个实施例中。以下说明将提供许多特定的细节,比如编程序、软件模块、用户选择、网络交易、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等例子,以提供对本发明实施例的了解。然而相关领域的普通技术人员将看出本发明,即使没有利用其中一个或多个特定细节,或利用其它方法、组件、材料等亦可实施。另一方面,为避免混淆本发明,公知的结构、材料或操作并没有详细描述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种分布式高并发实时消息推送方法,其特征在于,包括:
建立第一用户与web服务器之间的消息连接;
接收第二用户进行web登录后发送到web服务器的消息;
验证所述消息是否合法,若否,则结束非法访问,若是,则:
进行redis数据高速并发处理;
进行kafka分区消息处理;
web服务器同时消费kafka消息,多台web服务器同时推送相同数据到对应websocket连接分组用户中;
所述第一用户接收web服务器发送的消息。
2.根据权利要求1所述的方法,其特征在于,所述建立第一用户与web服务器之间的消息连接包括:
接收所述第一用户的web登录请求;
基于所述登录请求建立连接,产生认证cookie信息,携带所述cookie信息发起websocket长连接请求,解析所述websocket中的所述cookie信息,判断是否合法,若否,则非法访问结束,若是,则:
建立websocket连接,将该连接加入相应分组中。
3.根据权利要求2所述的方法,其特征在于,所述基于所述登录请求建立连接,产生认证cookie信息,携带所述cookie信息发起websocket长连接请求,解析所述websocket中的所述cookie信息,判断是否合法包括:
所述第一用户登录成功后,浏览器访问即时推送页面;
所述浏览器执行js,发起ws或wss连接请求;
web服务器解析接收到的所述ws或wss连接请求,并获取cookie信息;
将对应的cookie信息利用web服务器对应的key进行des解密;
将得到的明文字符串进行拆分成6个部分;
将拆分的6个部分信息进行比对,判断是否全部合法。
4.根据权利要求1所述的方法,其特征在于,所述验证所述消息是否合法包括:
接收所述第二用户携带验证信息发起推送数据的http请求;
所述web服务器接收到http请求,验证cookie信息是否合法,若否,则结束非法访问,若是,则:
验证请求签名sign字段是否合法,若否,则结束非法访问,若是,则:
对所述请求进行重复性校验是否允许推送数据,若否,则结束非法访问,若是,则:
进行redis数据高速并发处理。
5.根据权利要求1所述的方法,其特征在于,所述kafka分区消息处理包括:
web服务器对处理好的数据进行封装,同时序列化成json数据,生产消息到kafka服务器对用的topic上;
web服务器集群上的所有实例同时订阅所述topic,其中,所有的web服务器根据redis分布式锁实现处于不同的group中。
6.一种分布式高并发实时消息推送系统,其特征在于,包括:
建立模块,用于建立第一用户与web服务器之间的消息连接;
第一接收模块,用于接收第二用户进行web登录后发送到web服务器的消息;
验证模块,用于验证所述消息是否合法;
结束模块,用于当所述消息不合法时,结束非法访问;
第一处理模块,用于当所述消息合法时,进行redis数据高速并发处理;
第二处理模块,用于进行kafka分区消息处理;
推送模块,用于web服务器同时消费kafka消息,多台web服务器同时推送相同数据到对应websocket连接分组用户中;
第二接收模块,用于所述第一用户接收web服务器发送的消息。
7.根据权利要求6所述的系统,其特征在于,所述建立模块具体用于:
接收所述第一用户的web登录请求;
基于所述登录请求建立连接,产生认证cookie信息,携带所述cookie信息发起websocket长连接请求,解析所述websocket中的所述cookie信息,判断是否合法,若否,则非法访问结束,若是,则:
建立websocket连接,将该连接加入相应分组中。
8.根据权利要求7所述的系统,其特征在于,所述建立模块在执行基于所述登录请求建立连接,产生认证cookie信息,携带所述cookie信息发起websocket长连接请求,解析所述websocket中的所述cookie信息,判断是否合法时,具体用于:
所述第一用户登录成功后,浏览器访问即时推送页面;
所述浏览器执行js,发起ws或wss连接请求;
web服务器解析接收到的所述ws或wss连接请求,并获取cookie信息;
将对应的cookie信息利用web服务器对应的key进行des解密;
将得到的明文字符串进行拆分成6个部分;
将拆分的6个部分信息进行比对,判断是否全部合法。
9.根据权利要求6所述的系统,其特征在于,所述验证模块具体用于:
接收所述第二用户携带验证信息发起推送数据的http请求;
所述web服务器接收到http请求,验证cookie信息是否合法,若否,则结束非法访问,若是,则:
验证请求签名sign字段是否合法,若否,则结束非法访问,若是,则:
对所述请求进行重复性校验是否允许推送数据,若否,则结束非法访问,若是,则:
进行redis数据高速并发处理。
10.根据权利要求6所述的系统,其特征在于,所述第二处理模块具体用于:
web服务器对处理好的数据进行封装,同时序列化成json数据,生产消息到kafka服务器对用的topic上;
web服务器集群上的所有实例同时订阅所述topic,其中,所有的web服务器根据redis分布式锁实现处于不同的group中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810163782.9A CN108390881B (zh) | 2018-02-27 | 2018-02-27 | 一种分布式高并发实时消息推送方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810163782.9A CN108390881B (zh) | 2018-02-27 | 2018-02-27 | 一种分布式高并发实时消息推送方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108390881A true CN108390881A (zh) | 2018-08-10 |
CN108390881B CN108390881B (zh) | 2021-06-15 |
Family
ID=63069997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810163782.9A Active CN108390881B (zh) | 2018-02-27 | 2018-02-27 | 一种分布式高并发实时消息推送方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108390881B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109241111A (zh) * | 2018-08-27 | 2019-01-18 | 武汉虹信技术服务有限责任公司 | 一种基于内存数据库的分布式人脸识别系统及方法 |
CN109327437A (zh) * | 2018-09-29 | 2019-02-12 | 深圳市多易得信息技术股份有限公司 | 并发websocket业务信息处理方法及服务端 |
CN109413040A (zh) * | 2018-09-21 | 2019-03-01 | 深圳前海微众银行股份有限公司 | 消息鉴权方法、设备、系统及计算机可读存储介质 |
CN110377439A (zh) * | 2019-07-23 | 2019-10-25 | 上海德拓信息技术股份有限公司 | 一种数据实时采集推送的系统 |
CN110955857A (zh) * | 2019-10-18 | 2020-04-03 | 苏宁云计算有限公司 | 一种用于高并发环境的业务处理方法及装置 |
CN110971686A (zh) * | 2019-11-29 | 2020-04-07 | 湖南御家科技有限公司 | 一种支持高并发、高可用的电子商城客服系统 |
CN111031058A (zh) * | 2019-12-23 | 2020-04-17 | 集奥聚合(北京)人工智能科技有限公司 | 基于WebSocket的分布式服务器集群交互方法及装置 |
CN111240867A (zh) * | 2020-01-21 | 2020-06-05 | 中移(杭州)信息技术有限公司 | 一种信息通讯系统及方法 |
CN111711689A (zh) * | 2020-06-16 | 2020-09-25 | 深圳市思迪信息技术股份有限公司 | 投顾系统图文直播方法及系统、设备及存储介质 |
CN111740953A (zh) * | 2020-05-13 | 2020-10-02 | 南斗六星系统集成有限公司 | 一种车辆监管平台数据接入转发方法及系统 |
CN112769671A (zh) * | 2019-10-21 | 2021-05-07 | 北京车和家信息技术有限公司 | 消息处理方法、装置与系统 |
CN112948490A (zh) * | 2021-02-26 | 2021-06-11 | 平安普惠企业管理有限公司 | 基于kafka和redis的数据同步方法、装置、设备和存储介质 |
CN115037753A (zh) * | 2022-06-22 | 2022-09-09 | 平安科技(深圳)有限公司 | 消息通知方法和系统 |
CN115514731A (zh) * | 2022-09-22 | 2022-12-23 | 中国农业银行股份有限公司 | 一种消息推送方法、装置、介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105450618A (zh) * | 2014-09-26 | 2016-03-30 | Tcl集团股份有限公司 | 一种api服务器处理大数据的运算方法及其系统 |
CN106293968A (zh) * | 2016-08-04 | 2017-01-04 | 华中科技大学 | 一种基于Kafka消息中间件的双向通信系统及方法 |
US20170083368A1 (en) * | 2015-09-18 | 2017-03-23 | Salesforce.Com, Inc. | Maintaining throughput of a stream processing framework while increasing processing load |
CN106713470A (zh) * | 2016-12-29 | 2017-05-24 | 北京奇艺世纪科技有限公司 | 一种分布式缓存更新方法及缓存更新系统 |
CN107026917A (zh) * | 2017-06-16 | 2017-08-08 | 智者四海(北京)技术有限公司 | 用于消息推送的方法及系统 |
-
2018
- 2018-02-27 CN CN201810163782.9A patent/CN108390881B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105450618A (zh) * | 2014-09-26 | 2016-03-30 | Tcl集团股份有限公司 | 一种api服务器处理大数据的运算方法及其系统 |
US20170083368A1 (en) * | 2015-09-18 | 2017-03-23 | Salesforce.Com, Inc. | Maintaining throughput of a stream processing framework while increasing processing load |
CN106293968A (zh) * | 2016-08-04 | 2017-01-04 | 华中科技大学 | 一种基于Kafka消息中间件的双向通信系统及方法 |
CN106713470A (zh) * | 2016-12-29 | 2017-05-24 | 北京奇艺世纪科技有限公司 | 一种分布式缓存更新方法及缓存更新系统 |
CN107026917A (zh) * | 2017-06-16 | 2017-08-08 | 智者四海(北京)技术有限公司 | 用于消息推送的方法及系统 |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109241111A (zh) * | 2018-08-27 | 2019-01-18 | 武汉虹信技术服务有限责任公司 | 一种基于内存数据库的分布式人脸识别系统及方法 |
CN109413040A (zh) * | 2018-09-21 | 2019-03-01 | 深圳前海微众银行股份有限公司 | 消息鉴权方法、设备、系统及计算机可读存储介质 |
CN109413040B (zh) * | 2018-09-21 | 2020-12-18 | 深圳前海微众银行股份有限公司 | 消息鉴权方法、设备、系统及计算机可读存储介质 |
CN109327437A (zh) * | 2018-09-29 | 2019-02-12 | 深圳市多易得信息技术股份有限公司 | 并发websocket业务信息处理方法及服务端 |
CN109327437B (zh) * | 2018-09-29 | 2020-02-21 | 深圳市多易得信息技术股份有限公司 | 并发websocket业务信息处理方法及服务端 |
CN110377439A (zh) * | 2019-07-23 | 2019-10-25 | 上海德拓信息技术股份有限公司 | 一种数据实时采集推送的系统 |
CN110955857A (zh) * | 2019-10-18 | 2020-04-03 | 苏宁云计算有限公司 | 一种用于高并发环境的业务处理方法及装置 |
CN112769671A (zh) * | 2019-10-21 | 2021-05-07 | 北京车和家信息技术有限公司 | 消息处理方法、装置与系统 |
CN110971686A (zh) * | 2019-11-29 | 2020-04-07 | 湖南御家科技有限公司 | 一种支持高并发、高可用的电子商城客服系统 |
CN110971686B (zh) * | 2019-11-29 | 2022-03-08 | 湖南御家科技有限公司 | 一种支持高并发、高可用的电子商城客服系统 |
CN111031058A (zh) * | 2019-12-23 | 2020-04-17 | 集奥聚合(北京)人工智能科技有限公司 | 基于WebSocket的分布式服务器集群交互方法及装置 |
CN111240867B (zh) * | 2020-01-21 | 2023-11-03 | 中移(杭州)信息技术有限公司 | 一种信息通讯系统及方法 |
CN111240867A (zh) * | 2020-01-21 | 2020-06-05 | 中移(杭州)信息技术有限公司 | 一种信息通讯系统及方法 |
CN111740953A (zh) * | 2020-05-13 | 2020-10-02 | 南斗六星系统集成有限公司 | 一种车辆监管平台数据接入转发方法及系统 |
CN111711689B (zh) * | 2020-06-16 | 2023-06-23 | 深圳市思迪信息技术股份有限公司 | 投顾系统图文直播方法及系统、设备及存储介质 |
CN111711689A (zh) * | 2020-06-16 | 2020-09-25 | 深圳市思迪信息技术股份有限公司 | 投顾系统图文直播方法及系统、设备及存储介质 |
CN112948490A (zh) * | 2021-02-26 | 2021-06-11 | 平安普惠企业管理有限公司 | 基于kafka和redis的数据同步方法、装置、设备和存储介质 |
CN112948490B (zh) * | 2021-02-26 | 2023-10-24 | 湖北华中电力科技开发有限责任公司 | 基于kafka和redis的数据同步方法、装置、设备和存储介质 |
CN115037753A (zh) * | 2022-06-22 | 2022-09-09 | 平安科技(深圳)有限公司 | 消息通知方法和系统 |
CN115037753B (zh) * | 2022-06-22 | 2023-10-27 | 平安科技(深圳)有限公司 | 消息通知方法和系统 |
CN115514731A (zh) * | 2022-09-22 | 2022-12-23 | 中国农业银行股份有限公司 | 一种消息推送方法、装置、介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN108390881B (zh) | 2021-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108390881A (zh) | 一种分布式高并发实时消息推送方法及系统 | |
CN105634904B (zh) | 一种sslvpn的代理方法、服务器以及客户端及其处理方法 | |
CN108965230A (zh) | 一种安全通信方法、系统及终端设备 | |
US20020078243A1 (en) | Method and apparatus for time synchronization in a network data processing system | |
CN105933315B (zh) | 一种网络服务安全通信方法、装置和系统 | |
KR20190114023A (ko) | 패킷 기반 데이터 통신의 디바이스 식별자 의존적 오퍼레이션 프로세싱 | |
KR20040055674A (ko) | 클라이언트 세션 페일오버 제공 방법 및 그 장치,클라이언트 세션 재설정 방법 및 페일오버 방법 | |
CN112422532A (zh) | 业务通信方法、系统、装置及电子设备 | |
CN112149105A (zh) | 数据处理系统、方法、相关设备及存储介质 | |
CN111355986B (zh) | 一种直播间中的消息处理方法、装置和存储介质 | |
CN108769743B (zh) | 一种视频播放控制方法、系统、节点和计算机存储介质 | |
CN107196954A (zh) | 一种服务访问方法、装置及系统 | |
US8606875B1 (en) | Method and system for automatic distribution and installation of a client certificate in a secure manner | |
Guo et al. | Blockchain-assisted privacy-preserving data computing architecture for Web3 | |
CN110324365A (zh) | 无密钥前端集群系统、应用方法、存储介质、电子装置 | |
CN111131308B (zh) | 一种基于服务的调用系统及方法 | |
CN116633725A (zh) | 一种全渠道接入网关 | |
CN112994882B (zh) | 基于区块链的鉴权方法、装置、介质及设备 | |
CN113259436B (zh) | 网络请求的处理方法和装置 | |
US20130024543A1 (en) | Methods for generating multiple responses to a single request message and devices thereof | |
CN109218009A (zh) | 一种提高设备id安全性的方法、客户端和服务器 | |
CN106549955A (zh) | 一种实现数据通讯的方法及系统 | |
CN108462681A (zh) | 一种异构网络的通信方法、设备及系统 | |
CN108833396A (zh) | 一种确权的方法、装置、系统及终端 | |
Mahu et al. | Secure entropy gatherer |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220425 Address after: 610000 No. 907, floor 9, unit 1, building 1, No. 151, Tianfu Second Street, Chengdu high tech Zone, China (Sichuan) pilot Free Trade Zone, Chengdu, Sichuan Patentee after: Chengdu Bodian Technology Co.,Ltd. Address before: 100086 20 / F, block C, No.2, south academy of Sciences Road, Haidian District, Beijing Patentee before: BEIJING JIAODIAN XINGANXIAN INFORMATION TECHNOLOGY CO.,LTD. |
|
TR01 | Transfer of patent right |