CN113132487A - 一种精简的分布式长连接的数据传输方法及系统 - Google Patents
一种精简的分布式长连接的数据传输方法及系统 Download PDFInfo
- Publication number
- CN113132487A CN113132487A CN202110432355.8A CN202110432355A CN113132487A CN 113132487 A CN113132487 A CN 113132487A CN 202110432355 A CN202110432355 A CN 202110432355A CN 113132487 A CN113132487 A CN 113132487A
- Authority
- CN
- China
- Prior art keywords
- message
- long connection
- user
- processing module
- long
- 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 38
- 230000005540 biological transmission Effects 0.000 title claims abstract description 23
- 210000001503 joint Anatomy 0.000 claims description 3
- 230000002085 persistent effect Effects 0.000 claims description 3
- 230000002688 persistence Effects 0.000 claims description 2
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 238000004891 communication Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- 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/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Abstract
本发明提供了精简的分布式长连接的数据传输方法及系统,该方法包括如下步骤:步骤1:约定长连接客户端和服务器端数据格式,包括消息类型;步骤2:客户端通过长连接连接到服务器后,后端服务器维护长连接用户在线列表;步骤3:增加消息队列rabbitmq,用来对接消息的发送端和接收端;步骤4:客户端发送的消息,通过nginx到长连接实际处理模块,长连接实际处理模块按业务处理完成后,直接返回给前端用户;步骤5:后端业务处理模块要发消息给用户时,先判断用户是否在线,如果用户在线,就将消息发到消息队列,由各长连接实际业务处理模块按规则进行路由转发。本发明的有益效果是:可以很方便对长连接模块进行改造,快速实现扩展。
Description
技术领域
本发明涉及数据通信技术领域,尤其涉及一种精简的分布式长连接的数据传输方法及系统。
背景技术
在客户端和服务器的数据传输过程中,长连接是必不可少的。通过建立的长连接,服务器可以很方便将消息下发给各个客户端。
HTTP的分布式比较好实现,可以通过Redis实现连接共享,用nginx进行反向代理,但长连接部分的消息转发,如果用多个节点来实现,消息可能会被多次发送。
发明内容
本发明提供了一种精简的分布式长连接的数据传输方法,包括如下步骤:
步骤1:约定长连接客户端和服务器端数据格式,包括消息的类型。
步骤2:客户端通过长连接连接到服务器后,后端服务器维护一个长连接用户在线列表。
步骤3:增加一个消息队列rabbitmq,用来对接消息的发送端和接收端。
步骤4:客户端发送的消息,通过nginx到长连接实际处理模块,长连接实际处理模块按业务处理完成后,直接返回给前端用户。
步骤5:后端业务处理模块要发消息给用户时,先判断用户是否在线,如果用户在线,就将消息发到消息队列,由各长连接实际业务处理模块按规则进行路由转发,如果用户不在线,需要离线缓存的消息,用缓存进行存储,用数据库进行持久化;然后继续执行步骤4,完成数据发送和接受过程。
作为本发明的进一步改进,在所述步骤1中,消息的类型包括单条消息、房间消息和广播消息三种类型;在所述步骤2中,后端服务器维护一个长连接用户在线用户列表,该列表用redis进行存储。
作为本发明的进一步改进,在所述步骤3中,具体还包括:
步骤S1:配置好rabbitmq对应的消息队列名称、账号、密码和相应的路由器。
步骤S2:长连接模块连接rabbitmq路由器的接收端,并维持一个本节点的在线用户列表,后端业务模块连接到rabbitmq的发送端。
作为本发明的进一步改进,在所述步骤5中,各长连接实际业务处理模块,按单条消息、房间消息和广播消息的规则进行路由转发。
作为本发明的进一步改进,在所述步骤5中,按单条消息进行路由转发时,各长连接实际处理模块在线列表会判断该用户是否存在,如果是,则发送该消息,然后返回步骤4,否则直接返回步骤4;
在所述步骤5中,按房间消息进行路由转发时,向本节点该房间所有用户发送消息,然后返回步骤4。
在所述步骤5中,按广播消息进行路由转发时,向本节点所有用户发送消息,然后返回步骤4。
本发明的有益效果是:1.本发明的精简的分布式长连接的数据传输方法可以很方便对长连接模块进行改造,快速实现扩展;2.本发明的精简的分布式长连接的数据传输方法可以很方便将长连接的业务压力进行负载均衡,动态扩展。
附图说明
图1是本发明数据传输方法的流程图。
具体实施方式
如图1所示,本发明公开了一种精简的分布式长连接的数据传输方法,包括如下步骤:
步骤1:约定长连接客户端和服务器端数据格式,包括消息的类型:单条、房间和广播。即把消息进行分类,分成单条、房间和广播三种类型,在原来的消息基础上,按业务要求加上对应的类型。
步骤2:客户端通过长连接连接到服务器后,后端服务器维护一个长连接用户在线列表,该列表用redis进行存储。(备注:redis是缓存服务器的一种)
步骤3:增加一个消息队列rabbitmq,用来对接消息的发送端和接收端。(备注:rabbitmq是消息队列的一种)
在所述步骤3中,具体还包括:
步骤S1:配置好rabbitmq对应的消息队列名称、账号、密码和相应的路由器。
步骤S2:长连接模块连接rabbitmq路由器的接收端,并维持一个本节点的在线用户列表,后端业务模块连接到rabbitmq的发送端。
步骤4:客户端发送的消息,通过nginx(反向代理服务器)到长连接实际处理模块,长连接实际处理模块按业务处理完成后,直接返回给前端用户。
步骤5:后端业务处理模块要发消息给用户时,先判断用户是否在线,如果用户在线,就将消息发到消息队列,由各长连接实际业务处理模块按单条、房间和广播消息的规则进行路由转发,如果用户不在线,需要离线缓存的消息,用缓存进行存储,用数据库进行持久化;然后继续执行步骤4,完成数据发送和接受过程。
在所述步骤5中,按单条消息进行路由转发时,各长连接实际处理模块在线列表会判断该用户是否存在,如果是,则发送该消息,然后返回步骤4,否则直接返回步骤4。
在所述步骤5中,按房间消息进行路由转发时,向本节点该房间所有用户发送消息,然后返回步骤4。
在所述步骤5中,按广播消息进行路由转发时,向本节点所有用户发送消息,然后返回步骤4。
在步骤2中,客户端通过长连接连接到服务器后,后端服务器维护一个长连接用户在线列表,该列表用redis进行存储,通过增加用户在线列表的维护,把原来对外的长连接端口,用支持stream反向代理的nginx进行负载均衡。
本发明还公开了一种精简的分布式长连接的数据传输系统,包括:
数据格式单元:用于约定长连接客户端和服务器端数据格式,包括消息的类型。
在线列表模单元:用于客户端通过长连接连接到服务器后,后端服务器维护一个长连接用户在线列表。
消息队列单元:用于增加一个消息队列rabbitmq,用来对接消息的发送端和接收端。
长连接实际处理单元:用于将客户端发送的消息,通过nginx到长连接实际处理模块,长连接实际处理模块按业务处理完成后,直接返回给前端用户。
后端业务处理单元:用于后端业务处理模块要发消息给用户时,先判断用户是否在线,如果用户在线,就将消息发到消息队列,由各长连接实际业务处理模块按规则进行路由转发,如果用户不在线,需要离线缓存的消息,用缓存进行存储,用数据库进行持久化;然后继续执行步骤4,完成数据发送和接受过程。
在所述数据格式单元中,消息的类型包括单条消息、房间消息和广播消息三种类型;在所述在线列表模单元中,后端服务器维护一个长连接用户在线用户列表,该列表用redis进行存储。
在所述消息队列单元中,具体还包括:
配置模块:用于配置好rabbitmq对应的消息队列名称、账号、密码和相应的路由器。
对接模块:用于长连接模块连接rabbitmq路由器的接收端,并维持一个本节点的在线用户列表,后端业务模块连接到rabbitmq的发送端。
在所述后端业务处理单元中,各长连接实际业务处理模块,按单条消息、房间消息和广播消息的规则进行路由转发。
在所述后端业务处理单元中,按单条消息进行路由转发时,各长连接实际处理模块在线列表会判断该用户是否存在,如果是,则发送该消息,然后返回长连接实际处理单元,否则直接返回长连接实际处理单元。
在所述后端业务处理单元中,按房间消息进行路由转发时,向本节点该房间所有用户发送消息,然后返回长连接实际处理单元。
在所述后端业务处理单元中,按广播消息进行路由转发时,向本节点所有用户发送消息,然后返回长连接实际处理单元。
本发明的有益效果:1.本发明的精简的分布式长连接的数据传输方法可以很方便对长连接模块进行改造,快速实现扩展;2.本发明的精简的分布式长连接的数据传输方法可以很方便将长连接的业务压力进行负载均衡,动态扩展。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (10)
1.一种精简的分布式长连接的数据传输方法,其特征在于,包括如下步骤:
步骤1:约定长连接客户端和服务器端数据格式,包括消息的类型;
步骤2:客户端通过长连接连接到服务器后,后端服务器维护一个长连接用户在线列表;
步骤3:增加一个消息队列rabbitmq,用来对接消息的发送端和接收端;
步骤4:客户端发送的消息,通过nginx到长连接实际处理模块,长连接实际处理模块按业务处理完成后,直接返回给前端用户;
步骤5:后端业务处理模块要发消息给用户时,先判断用户是否在线,如果用户在线,就将消息发到消息队列,由各长连接实际业务处理模块按规则进行路由转发,如果用户不在线,需要离线缓存的消息,用缓存进行存储,用数据库进行持久化;然后继续执行步骤4,完成数据发送和接受过程。
2.根据权利要求1所述的数据传输方法,其特征在于,在所述步骤1中,消息的类型包括单条消息、房间消息和广播消息三种类型;在所述步骤2中,后端服务器维护一个长连接用户在线用户列表,该列表用redis进行存储。
3.根据权利要求1所述的数据传输方法,其特征在于,在所述步骤3中,具体还包括:
步骤S1:配置好rabbitmq对应的消息队列名称、账号、密码和相应的路由器;
步骤S2:长连接模块连接rabbitmq路由器的接收端,并维持一个本节点的在线用户列表,后端业务模块连接到rabbitmq的发送端。
4.根据权利要求2所述的数据传输方法,其特征在于,在所述步骤5中,各长连接实际业务处理模块,按单条消息、房间消息和广播消息的规则进行路由转发。
5.根据权利要求4所述的数据传输方法,其特征在于,在所述步骤5中,按单条消息进行路由转发时,各长连接实际处理模块在线列表会判断该用户是否存在,如果是,则发送该消息,然后返回步骤4,否则直接返回步骤4;
在所述步骤5中,按房间消息进行路由转发时,向本节点该房间所有用户发送消息,然后返回步骤4;
在所述步骤5中,按广播消息进行路由转发时,向本节点所有用户发送消息,然后返回步骤4。
6.一种精简的分布式长连接的数据传输系统,包括:
数据格式单元:用于约定长连接客户端和服务器端数据格式,包括消息的类型;
在线列表模单元:用于客户端通过长连接连接到服务器后,后端服务器维护一个长连接用户在线列表;
消息队列单元:用于增加一个消息队列rabbitmq,用来对接消息的发送端和接收端;
长连接实际处理单元:用于将客户端发送的消息,通过nginx到长连接实际处理模块,长连接实际处理模块按业务处理完成后,直接返回给前端用户;
后端业务处理单元:用于后端业务处理模块要发消息给用户时,先判断用户是否在线,如果用户在线,就将消息发到消息队列,由各长连接实际业务处理模块按规则进行路由转发,如果用户不在线,需要离线缓存的消息,用缓存进行存储,用数据库进行持久化;然后继续执行步骤4,完成数据发送和接受过程。
7.根据权利要求6所述的数据传输系统,其特征在于,在所述数据格式单元中,消息的类型包括单条消息、房间消息和广播消息三种类型;在所述在线列表模单元中,后端服务器维护一个长连接用户在线用户列表,该列表用redis进行存储。
8.根据权利要求6所述的数据传输系统,其特征在于,在所述消息队列单元中,具体还包括:
配置模块:用于配置好rabbitmq对应的消息队列名称、账号、密码和相应的路由器;
对接模块:用于长连接模块连接rabbitmq路由器的接收端,并维持一个本节点的在线用户列表,后端业务模块连接到rabbitmq的发送端。
9.根据权利要求7所述的数据传输系统,其特征在于,在所述后端业务处理单元中,各长连接实际业务处理模块,按单条消息、房间消息和广播消息的规则进行路由转发。
10.根据权利要求9所述的数据传输系统,其特征在于,在所述后端业务处理单元中,按单条消息进行路由转发时,各长连接实际处理模块在线列表会判断该用户是否存在,如果是,则发送该消息,然后返回长连接实际处理单元,否则直接返回长连接实际处理单元;
在所述后端业务处理单元中,按房间消息进行路由转发时,向本节点该房间所有用户发送消息,然后返回长连接实际处理单元;
在所述后端业务处理单元中,按广播消息进行路由转发时,向本节点所有用户发送消息,然后返回长连接实际处理单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110432355.8A CN113132487A (zh) | 2021-04-21 | 2021-04-21 | 一种精简的分布式长连接的数据传输方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110432355.8A CN113132487A (zh) | 2021-04-21 | 2021-04-21 | 一种精简的分布式长连接的数据传输方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113132487A true CN113132487A (zh) | 2021-07-16 |
Family
ID=76779174
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110432355.8A Pending CN113132487A (zh) | 2021-04-21 | 2021-04-21 | 一种精简的分布式长连接的数据传输方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113132487A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113905005A (zh) * | 2021-09-30 | 2022-01-07 | 完美世界(北京)软件科技发展有限公司 | 即时通讯的客户端状态更新方法和装置 |
CN115866286A (zh) * | 2023-01-31 | 2023-03-28 | 北京微吼时代科技有限公司 | 直播业务中消息服务的方法与系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102523177A (zh) * | 2011-12-19 | 2012-06-27 | 北京新媒传信科技有限公司 | 一种消息推送服务的实现方法与系统 |
CN103312751A (zh) * | 2012-03-14 | 2013-09-18 | 南京新与力文化传播有限公司 | 一种基于浏览器的即时通信方法 |
CN103973718A (zh) * | 2013-01-25 | 2014-08-06 | 成都勤智数码科技股份有限公司 | 一种基于android移动平台的运维消息推送方法 |
WO2015101357A1 (en) * | 2014-01-06 | 2015-07-09 | Tencent Technology (Shenzhen) Company Limited | Method and system for pushing web application message |
CN107093138A (zh) * | 2017-04-21 | 2017-08-25 | 山东佳联电子商务有限公司 | 基于分布式无阻塞异步消息处理模式的拍卖竞价系统及其运行方法 |
CN109040286A (zh) * | 2018-08-24 | 2018-12-18 | 重庆金康特智能穿戴技术研究院有限公司 | 一种基于内存数据库的客户端在线状态维护方法 |
CN109547511A (zh) * | 2017-09-22 | 2019-03-29 | 中国移动通信集团浙江有限公司 | 一种web消息实时推送方法、服务器、客户端及系统 |
CN111131501A (zh) * | 2019-12-31 | 2020-05-08 | 郑州信大捷安信息技术股份有限公司 | 一种基于mqtt协议的消息推送系统及方法 |
-
2021
- 2021-04-21 CN CN202110432355.8A patent/CN113132487A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102523177A (zh) * | 2011-12-19 | 2012-06-27 | 北京新媒传信科技有限公司 | 一种消息推送服务的实现方法与系统 |
CN103312751A (zh) * | 2012-03-14 | 2013-09-18 | 南京新与力文化传播有限公司 | 一种基于浏览器的即时通信方法 |
CN103973718A (zh) * | 2013-01-25 | 2014-08-06 | 成都勤智数码科技股份有限公司 | 一种基于android移动平台的运维消息推送方法 |
WO2015101357A1 (en) * | 2014-01-06 | 2015-07-09 | Tencent Technology (Shenzhen) Company Limited | Method and system for pushing web application message |
CN107093138A (zh) * | 2017-04-21 | 2017-08-25 | 山东佳联电子商务有限公司 | 基于分布式无阻塞异步消息处理模式的拍卖竞价系统及其运行方法 |
CN109547511A (zh) * | 2017-09-22 | 2019-03-29 | 中国移动通信集团浙江有限公司 | 一种web消息实时推送方法、服务器、客户端及系统 |
CN109040286A (zh) * | 2018-08-24 | 2018-12-18 | 重庆金康特智能穿戴技术研究院有限公司 | 一种基于内存数据库的客户端在线状态维护方法 |
CN111131501A (zh) * | 2019-12-31 | 2020-05-08 | 郑州信大捷安信息技术股份有限公司 | 一种基于mqtt协议的消息推送系统及方法 |
Non-Patent Citations (1)
Title |
---|
黄永华: "应用Socket的微服务之间的通讯", 《福建电脑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113905005A (zh) * | 2021-09-30 | 2022-01-07 | 完美世界(北京)软件科技发展有限公司 | 即时通讯的客户端状态更新方法和装置 |
CN115866286A (zh) * | 2023-01-31 | 2023-03-28 | 北京微吼时代科技有限公司 | 直播业务中消息服务的方法与系统 |
CN115866286B (zh) * | 2023-01-31 | 2023-05-16 | 北京微吼时代科技有限公司 | 直播业务中消息服务的方法与系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107018147B (zh) | 一种物联网通信方法及系统、网关模块 | |
US7403520B2 (en) | Multicast routing method and apparatus for routing multicast packet | |
JP4291366B2 (ja) | メッセージ管理 | |
US7949704B2 (en) | Administration of a broker-based publish/subscribe messaging system | |
CN113132487A (zh) | 一种精简的分布式长连接的数据传输方法及系统 | |
CN110661871B (zh) | 一种数据传输方法及mqtt服务器 | |
WO2008064591A1 (fr) | Procédé, système et dispositif pour augmenter la capacité d'un système de services de messagerie multimédia | |
CN101009662A (zh) | 基于负载均衡技术的报文处理方法、系统及设备 | |
CN113157449A (zh) | 基于mqtt的实时流数据分析处理方法 | |
CN108289055B (zh) | 一种基于Redis订阅服务的分布式实时聊天系统及方法 | |
US8463857B2 (en) | Notification of internet service events using instant messaging service | |
US11146517B2 (en) | Intermediary device for data message network routing | |
CN1487706B (zh) | 企业即时通信的方法、系统和控制流程 | |
CN107483628A (zh) | 基于dpdk的单向代理方法及系统 | |
US20060020708A1 (en) | System and method for peer-to-peer communication | |
CN111614726B (zh) | 一种数据转发方法、集群系统及存储介质 | |
CN101557354A (zh) | 一种在在线客服中发送图片的方法 | |
CN115242760B (zh) | 一种基于WebRTC的SFU系统及方法 | |
CN107426081A (zh) | 一种实时消息传输方法及系统 | |
KR100773778B1 (ko) | 멀티캐스트 방식의 분산 서버 제어 방법 및 그 시스템 | |
CN103533001A (zh) | 基于http多重代理的通信方法和系统、中间代理服务器 | |
CN101156400B (zh) | 一种在多媒体消息业务中处理消息的方法和系统 | |
CN106612307A (zh) | 一种永远在线业务的实现方法及装置 | |
CN115037785A (zh) | 即时通讯系统及方法 | |
TW201038019A (en) | Message processing method and system |
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: 20210716 |
|
RJ01 | Rejection of invention patent application after publication |