CN109889454A - 一种微服务架构的消息推送装置及方法 - Google Patents
一种微服务架构的消息推送装置及方法 Download PDFInfo
- Publication number
- CN109889454A CN109889454A CN201910142320.3A CN201910142320A CN109889454A CN 109889454 A CN109889454 A CN 109889454A CN 201910142320 A CN201910142320 A CN 201910142320A CN 109889454 A CN109889454 A CN 109889454A
- Authority
- CN
- China
- Prior art keywords
- message
- websocket
- module
- micro services
- service
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000012544 monitoring process Methods 0.000 claims abstract description 21
- 238000013475 authorization Methods 0.000 claims abstract description 12
- 230000004044 response Effects 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 4
- 230000005540 biological transmission Effects 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000027455 binding Effects 0.000 description 2
- 238000009739 binding Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000000178 monomer Substances 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种微服务架构的消息推送装置及方法,属于Web消息推送技术领域。本发明的微服务架构的消息推送装置包括登录认证模块、websocket消息监听模块、websocket消息推送模块和消息队列模块,登录认证模块对登录用户进行授权认证;websocket消息监听模块用于向websocket服务建立监听;websocket消息推送模块用于websocket服务向消息队列建立监听,接收到消息后通过websocket将信息向浏览器推送;消息队列模块用于服务节点将要向浏览器发送的消息发送给消息队列。该发明的微服务架构的消息推送装置能够大大提升消息传递效率和稳定性,具有很好的推广应用价值。
Description
技术领域
本发明涉及Web消息推送技术领域,具体提供一种微服务架构的消息推送装置及方法。
背景技术
传统的HTTP协议是一种无状态、无连接、单向的应用层协议,请求只能从客户端发起,服务端对请求进行处理和应答。所以传统的HTTP请求无法主动的从服务端向客户端推送消息。在websocket协议被制定之前,大多数web应用的开发者们常用浏览器客户端发起ajax轮询的方式,频繁的向服务端发送HTTP请求,直到获取到服务端想要向客户端推送的消息。这种有诸多缺点,比如说在真正获取目的消息之前的所有请求都是无效的,但是又不得不去发起这些无用的HTTP请求,因为客户端无法确定到底哪一个请求才是有效的。为了解决这个问题,websocket协议被制定出来,随着HTML5语言的普及,websocket技术也越来越被广泛的运用于web项目中,websocket协议允许客户端和服务端之间建立全双工通信,以便消息可以从任意一端发送到另一端,另外websocket只需建立一次长连接,连接建立后,消息可以随时在连接通道上进行传递。相比于轮询方式的大量请求效率大大提高。
微服务架构是最近几年新提出的一个概念,相较于传统的单体架构,微服务架构将单一架构的功能拆分成多个小型的具有完整业务功能的服务,服务之间通过API进行通讯,同时各个微服务之间的开发、测试与部署都是独立进行的。大大降低了系统之间的耦合程度,提高了系统的可扩展性。
消息队列则是被应用于众多系统中的常用技术,消息队列的异步化和松耦合机制,可以提升系统资源的利用率和系统的可扩展性,同时消息队列自带分布式和容灾特性,从而提升系统性能和容错能力。现有的websocket消息推送方案中,针对对微服务架构下的优化并不充分,有待进一步改进。
发明内容
本发明的技术任务是针对上述存在的问题,提供一种能够大大提升消息传递效率和稳定性,并能够有效的降低服务器端压力的微服务架构的消息推送装置。
本发明进一步的技术任务是提供一种微服务架构的消息推送方法。
为实现上述目的,本发明提供了如下技术方案:
一种微服务架构的消息推送装置,该装置基于websocket和消息队列,包括登录认证模块、websocket消息监听模块、websocket消息推送模块和消息队列模块,登录认证模块对登录用户进行授权认证;websocket消息监听模块用于用户登录成功后,向websocket服务建立监听;websocket消息推送模块用于websocket服务向消息队列建立监听,接收到消息后通过websocket将信息向浏览器推送;消息队列模块用于服务节点将要向浏览器发送的消息发送给消息队列,消息队列再将消息发送给websocket服务。
登录认证模块提供认证服务,向客户端提供授权认证。用户通过浏览器访问系统时,首先检测用户是否已经登录,若未登录则跳转至认证服务提供的登录界面,用户填写认证信息后(一般是用户名和密码),登录认证服务检测信息的正确性,若用户信息正确,则向浏览器发送携带用户信息的token。整个登录认证及授权操作完成。
websocket消息监听模块中,用户通过登录认证,取到token以后,可以从token中解析出对应的用户信息,在向websocket服务器建立监听的同时,以用户的唯一标识向websocket服务订阅该用户下的消息,以避免接收到其他用户的消息。
websocket消息推送模块和消息队列模块的功能相互依赖,在消息队列中新建专用的交换器,指定交换器的路由规则为广播模式。在websocket服务中向消息队列建立监听队列,并指定该队列绑定在本功能专用的交换器上,其中要为每一个websocket服务都建立一个监听队列,所有的监听队列都绑定在一个交换器上。消息队列服务为众多微服务节点(消息生产者)提供消息入口,各微服务节点将要向浏览器推送的业务信息和用户信息封装成json格式的消息体,并指定将消息发送给本功能对应的交换器,交换器通过广播模式将消息转发到所有绑定的队列上,这时所有的websocket服务都会接收到消息,websocket服务接收到消息体后解析出json数据,取出用户信息和业务信息,将业务信息发送给与订阅的用户信息相匹配的浏览器。
作为优选,消息队列模块送给消息队列的消息包括用户信息和业务信息,websocket服务监听到消息队列的消息后,按用户信息将业务信息推送到当前用户建立websocket监听的浏览器中。
作为优选,所述websocket消息推送模块中websocket服务部署为高可用模式。
作为优选,通过登录认证模块、websocket消息监听模块、websocket消息推送模块和消息队列模块将微服务节点的消息进行收集并转发给相应的用户登录的客户端。
一种微服务架构的消息推送方法,该方法通过登录认证模块、websocket消息监听模块、websocket消息推送模块和消息队列模块将微服务节点的消息进行收集并转发给相应的用户登录的客户端,并将websocket消息推送模块中的websocket服务设计成高可用模式,将众多微服务节点的大量消息收集转发给web客户端。
作为优选,该方法具体包括以下步骤:
S1、用户在浏览器登录,通过登录认证模块向授权认证服务请求授权;
S2、认证通过后,获取用户信息并区分用户向websocket服务建立监听;
S3、微服务节点向消息队列发送消息;
S4、消息队列接收到消息后,按照路由规则,采用广播的方式将消息同时转发到所有websocket服务监听的消息队列里;
S5、websocket服务监听到消息队列里的消息后,推送到当前用户建立websocket监听的浏览器中;
S6、浏览器监听到websocket服务推送的消息,根据消息体里的内容作出相应的响应。
步骤S2中,由于有多个websocket服务进程,此时只会监听其中的一个websocket服务。
作为优选,步骤S3中微服务节点向消息队列发送消息,包括用户信息和业务信息。
作为优选,步骤S5中,websocket服务监听到消息队列里的消息后,取出用户信息和业务信息,按照用户信息将业务信息推送到当前用户建立websocket监听的浏览器中。
与现有技术相比,本发明的微服务架构的消息推送方法具有以下突出的有益效果:
(一)所述微服务架构的消息推送方法中,采用了websocket协议,客户端与服务端只需建立一次连接,即可实时的接收服务端推送的消息。既大大降低了由传统轮询方式导致的服务器压力过大,又大大提升了消息传递的效率,经过本发明的实际实验得出,可降低服务器压力数倍至数十倍之间,效率提升数倍以上;
(二)将websocket服务部署为高可用,通过建立多个websocket服务进程,以降低因服务故障导致的消息无法推送的概率,经实际实验得出,消息丢失的概率随websocket服务节点的增加而成倍减少,此外,将将websocket服务端建立为一个单独的微服务节点,客户端只需监听这一个微服务节点,并通过消息队列对所有微服务节点的消息转发到websocket服务节点。客户端与众多微服务几点的耦合程度,易于系统进行扩展,符合了微服务架构的设计理念,具有良好的推广应用价值。
附图说明
图1是本发明所述微服务架构的消息推送装置的示意图;
图2是本发明所述微服务架构的消息推送装置的整体框架示意图。
具体实施方式
下面将结合附图和实施例,对本发明的微服务架构的消息推送装置及方法作进一步详细说明。
实施例
如图1所示,本发明的微服务架构的消息推送装置,基于websocket和消息队列。包括登录认证模块、websocket消息监听模块、websocket消息推送模块和消息队列模块。
登录认证模块对登录用户进行授权认证,提供认证服务,向客户端提供授权认证。用户通过浏览器访问系统时,首先检测用户是否已经登录,若未登录则跳转至认证服务提供的登录界面,用户填写认证信息后(一般是用户名和密码),登录认证服务检测信息的正确性,若用户信息正确,则向浏览器发送携带用户信息的token。整个登录认证及授权操作完成。
websocket消息监听模块用于用户登录成功后,向websocket服务建立监听,用户通过登录认证,取到token以后,可以从token中解析出对应的用户信息,在向websocket服务器建立监听的同时,以用户的唯一标识向websocket服务订阅该用户下的消息,以避免接收到其他用户的消息。
websocket消息推送模块用于websocket服务向消息队列建立监听,接收到消息后通过websocket将信息向浏览器推送。websocket消息推送模块中websocket服务部署为高可用模式。消息队列模块用于服务节点将要向浏览器发送的消息发送给消息队列,消息队列再将消息发送给websocket服务,消息队列模块送给消息队列的消息包括用户信息和业务信息,websocket服务监听到消息队列的消息后,按用户信息将业务信息推送到当前用户建立websocket监听的浏览器中。websocket消息推送模块和消息队列模块的功能相互依赖,在消息队列中新建专用的交换器,指定交换器的路由规则为广播模式。在websocket服务中向消息队列建立监听队列,并指定该队列绑定在本功能专用的交换器上,其中要为每一个websocket服务都建立一个监听队列,所有的监听队列都绑定在一个交换器上。消息队列服务为众多微服务节点(消息生产者)提供消息入口,各微服务节点将要向浏览器推送的业务信息和用户信息封装成json格式的消息体,并指定将消息发送给本功能对应的交换器,交换器通过广播模式将消息转发到所有绑定的队列上,这时所有的websocket服务都会接收到消息,websocket服务接收到消息体后解析出json数据,取出用户信息和业务信息,将业务信息发送给与订阅的用户信息相匹配的浏览器。
通过登录认证模块、websocket消息监听模块、websocket消息推送模块和消息队列模块将微服务节点的消息进行收集并转发给相应的用户登录的客户端,并将websocket消息推送模块中的websocket服务设计成高可用模式来减少消息丢失的风险,与现有技术相比,本方案大大提升了消息推送的效率和稳定性,降低了服务端的压力。
如图2所示,本发明的微服务架构的消息推送方法,通过登录认证模块、websocket消息监听模块、websocket消息推送模块和消息队列模块将微服务节点的消息进行收集并转发给相应的用户登录的客户端,并将websocket消息推送模块中的websocket服务设计成高可用模式,将众多微服务节点的大量消息收集转发给web客户端。具体包括以下步骤:
S1、用户在浏览器登录,通过登录认证模块向授权认证服务请求授权。
由于有多个websocket服务进程,此时只会监听其中的一个websocket服务。
S2、认证通过后,获取用户信息并区分用户向websocket服务建立监听。
S3、微服务节点向消息队列发送消息,包括用户信息和业务信息。
S4、消息队列接收到消息后,按照路由规则,采用广播的方式将消息同时转发到所有websocket服务监听的消息队列里。
S5、websocket服务监听到消息队列里的消息后,取出用户信息和业务信息,按照用户信息将业务信息推送到当前用户建立websocket监听的浏览器中。
S6、浏览器监听到websocket服务推送的消息,根据消息体里的内容作出相应的响应。
以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (8)
1.一种微服务架构的消息推送装置,其特征在于:该装置基于websocket和消息队列,包括登录认证模块、websocket消息监听模块、websocket消息推送模块和消息队列模块,登录认证模块对登录用户进行授权认证;websocket消息监听模块用于用户登录成功后,向websocket服务建立监听;websocket消息推送模块用于websocket服务向消息队列建立监听,接收到消息后通过websocket将信息向浏览器推送;消息队列模块用于服务节点将要向浏览器发送的消息发送给消息队列,消息队列再将消息发送给websocket服务。
2.根据权利要求1所述的微服务架构的消息推送装置,其特征在于:消息队列模块送给消息队列的消息包括用户信息和业务信息,websocket服务监听到消息队列的消息后,按用户信息将业务信息推送到当前用户建立websocket监听的浏览器中。
3.根据权利要求1或2所述的微服务架构的消息推送装置,其特征在于:所述websocket消息推送模块中websocket服务部署为高可用模式。
4.根据权利要求3所述的微服务架构的消息推送装置,其特征在于:通过登录认证模块、websocket消息监听模块、websocket消息推送模块和消息队列模块将微服务节点的消息进行收集并转发给相应的用户登录的客户端。
5.一种微服务架构的消息推送方法,其特征在于:该方法通过登录认证模块、websocket消息监听模块、websocket消息推送模块和消息队列模块将微服务节点的消息进行收集并转发给相应的用户登录的客户端,并将websocket消息推送模块中的websocket服务设计成高可用模式,将众多微服务节点的大量消息收集转发给web客户端。
6.根据权利要求5所述的微服务架构的消息推送方法,其特征在于:该方法具体包括以下步骤:
S1、用户在浏览器登录,通过登录认证模块向授权认证服务请求授权;
S2、认证通过后,获取用户信息并区分用户向websocket服务建立监听;
S3、微服务节点向消息队列发送消息;
S4、消息队列接收到消息后,按照路由规则,采用广播的方式将消息同时转发到所有websocket服务监听的消息队列里;
S5、websocket服务监听到消息队列里的消息后,推送到当前用户建立websocket监听的浏览器中;
S6、浏览器监听到websocket服务推送的消息,根据消息体里的内容作出相应的响应。
7.根据权利要求6所述的微服务架构的消息推送方法,其特征在于:步骤S3中微服务节点向消息队列发送消息,包括用户信息和业务信息。
8.根据权利要求6或7所述的微服务架构的消息推送方法,其特征在于:步骤S5中,websocket服务监听到消息队列里的消息后,取出用户信息和业务信息,按照用户信息将业务信息推送到当前用户建立websocket监听的浏览器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910142320.3A CN109889454A (zh) | 2019-02-26 | 2019-02-26 | 一种微服务架构的消息推送装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910142320.3A CN109889454A (zh) | 2019-02-26 | 2019-02-26 | 一种微服务架构的消息推送装置及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109889454A true CN109889454A (zh) | 2019-06-14 |
Family
ID=66929483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910142320.3A Pending CN109889454A (zh) | 2019-02-26 | 2019-02-26 | 一种微服务架构的消息推送装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109889454A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111222074A (zh) * | 2020-01-09 | 2020-06-02 | 山东汇贸电子口岸有限公司 | 一种基于Websocket协议的消息推送方法及系统 |
CN111405020A (zh) * | 2020-03-10 | 2020-07-10 | 山东汇贸电子口岸有限公司 | 基于消息队列和fastDFS微服务架构的异步文件导出方法及系统 |
CN112202872A (zh) * | 2020-09-28 | 2021-01-08 | 华云数据控股集团有限公司 | 一种数据转发方法、api网关及消息服务系统 |
CN114257577A (zh) * | 2021-12-08 | 2022-03-29 | 长城计算机软件与系统有限公司 | 一种面向微服务的服务请求消息响应方法和系统 |
CN114726817A (zh) * | 2022-06-10 | 2022-07-08 | 深圳希施玛数据科技有限公司 | 一种基于团队模式的业务通知方法及装置 |
CN115361348A (zh) * | 2022-10-19 | 2022-11-18 | 理工全盛(北京)科技有限公司 | 由数据采集设备执行的与web浏览器通信的方法 |
CN115766689A (zh) * | 2023-01-10 | 2023-03-07 | 理工全盛(北京)科技有限公司 | web服务端与无人机探测及反制设备双向通信的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103780681A (zh) * | 2014-01-06 | 2014-05-07 | 南京莱斯信息技术股份有限公司 | 一种高实时性Web应用系统及其数据实时推送方法 |
CN105407180A (zh) * | 2015-12-29 | 2016-03-16 | 曙光信息产业(北京)有限公司 | 服务器的消息推送方法和装置 |
CN108156223A (zh) * | 2017-12-06 | 2018-06-12 | 深圳市猫投鹰信息科技有限公司 | 一种基于websocket的消息精准推送系统及方法 |
CN109361770A (zh) * | 2018-12-11 | 2019-02-19 | 苏州创旅天下信息技术有限公司 | 基于WebSocket和消息队列实现双向实时通信的系统及方法 |
-
2019
- 2019-02-26 CN CN201910142320.3A patent/CN109889454A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103780681A (zh) * | 2014-01-06 | 2014-05-07 | 南京莱斯信息技术股份有限公司 | 一种高实时性Web应用系统及其数据实时推送方法 |
CN105407180A (zh) * | 2015-12-29 | 2016-03-16 | 曙光信息产业(北京)有限公司 | 服务器的消息推送方法和装置 |
CN108156223A (zh) * | 2017-12-06 | 2018-06-12 | 深圳市猫投鹰信息科技有限公司 | 一种基于websocket的消息精准推送系统及方法 |
CN109361770A (zh) * | 2018-12-11 | 2019-02-19 | 苏州创旅天下信息技术有限公司 | 基于WebSocket和消息队列实现双向实时通信的系统及方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111222074A (zh) * | 2020-01-09 | 2020-06-02 | 山东汇贸电子口岸有限公司 | 一种基于Websocket协议的消息推送方法及系统 |
CN111405020A (zh) * | 2020-03-10 | 2020-07-10 | 山东汇贸电子口岸有限公司 | 基于消息队列和fastDFS微服务架构的异步文件导出方法及系统 |
CN112202872A (zh) * | 2020-09-28 | 2021-01-08 | 华云数据控股集团有限公司 | 一种数据转发方法、api网关及消息服务系统 |
CN114257577A (zh) * | 2021-12-08 | 2022-03-29 | 长城计算机软件与系统有限公司 | 一种面向微服务的服务请求消息响应方法和系统 |
CN114726817A (zh) * | 2022-06-10 | 2022-07-08 | 深圳希施玛数据科技有限公司 | 一种基于团队模式的业务通知方法及装置 |
CN114726817B (zh) * | 2022-06-10 | 2022-09-13 | 深圳希施玛数据科技有限公司 | 一种基于团队模式的业务通知方法及装置 |
CN115361348A (zh) * | 2022-10-19 | 2022-11-18 | 理工全盛(北京)科技有限公司 | 由数据采集设备执行的与web浏览器通信的方法 |
CN115361348B (zh) * | 2022-10-19 | 2023-01-10 | 理工全盛(北京)科技有限公司 | 由数据采集设备执行的与web浏览器通信的方法 |
CN115766689A (zh) * | 2023-01-10 | 2023-03-07 | 理工全盛(北京)科技有限公司 | web服务端与无人机探测及反制设备双向通信的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109889454A (zh) | 一种微服务架构的消息推送装置及方法 | |
CN108306877B (zh) | 基于node js的用户身份信息的验证方法、装置和存储介质 | |
KR20190114023A (ko) | 패킷 기반 데이터 통신의 디바이스 식별자 의존적 오퍼레이션 프로세싱 | |
CN109391661B (zh) | 物联网终端的区块链组网方法和系统 | |
CN109327493A (zh) | 一种基于云的远程医疗监控系统及监控方法 | |
CN111787345B (zh) | 基于网络直播间的互动资源处理方法、装置、服务器及存储介质 | |
CN105635180A (zh) | 消息推送方法及装置 | |
CN105991412A (zh) | 消息推送方法及装置 | |
CN107295003B (zh) | 一种数据传输方法、装置及系统 | |
CN113132477A (zh) | 一种浏览器终端与设备的实时传输交互方法及系统 | |
WO2014015525A1 (zh) | 一种用户在线状态的查询方法和装置 | |
CN109144919B (zh) | 一种接口转接方法及装置 | |
CN102238505B (zh) | 一种客户端多用户并发信令跟踪处理方法及系统 | |
CN109862094B (zh) | 一种基于流计算的水务设备数据共享方法及装置 | |
CN111224891A (zh) | 一种基于动态学习三元组的流量应用识别系统及方法 | |
CN105323270B (zh) | 网络信息推送方法和系统 | |
CN111935316B (zh) | 一种前端设备目录获取方法及装置 | |
CN107911642A (zh) | 一种有线电视网络管理系统 | |
CN114489730A (zh) | 一种远程升级方法及其终端设备、计算机可读存储介质 | |
JP2015528260A5 (zh) | ||
JP2015528260A (ja) | モバイルデバイス内で複数の候補アプリケーションのための通信接続を提供するための方法及びデバイス | |
CN111490997B (zh) | 任务处理方法、代理系统、服务系统和电子设备 | |
CN112422395A (zh) | 一种数据传输方法、装置、终端设备和存储介质 | |
CN112395647A (zh) | 一种区块链轻节点数据采集系统 | |
CN111556284A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190614 |
|
RJ01 | Rejection of invention patent application after publication |