CN113132487A - 一种精简的分布式长连接的数据传输方法及系统 - Google Patents

一种精简的分布式长连接的数据传输方法及系统 Download PDF

Info

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
Application number
CN202110432355.8A
Other languages
English (en)
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.)
SHENZHEN LEWEI TECHNOLOGY DEVELOPMENT CO LTD
Original Assignee
SHENZHEN LEWEI TECHNOLOGY DEVELOPMENT 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 SHENZHEN LEWEI TECHNOLOGY DEVELOPMENT CO LTD filed Critical SHENZHEN LEWEI TECHNOLOGY DEVELOPMENT CO LTD
Priority to CN202110432355.8A priority Critical patent/CN113132487A/zh
Publication of CN113132487A publication Critical patent/CN113132487A/zh
Pending legal-status Critical Current

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/14Session management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • 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/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

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所述的数据传输系统,其特征在于,在所述后端业务处理单元中,按单条消息进行路由转发时,各长连接实际处理模块在线列表会判断该用户是否存在,如果是,则发送该消息,然后返回长连接实际处理单元,否则直接返回长连接实际处理单元;
在所述后端业务处理单元中,按房间消息进行路由转发时,向本节点该房间所有用户发送消息,然后返回长连接实际处理单元;
在所述后端业务处理单元中,按广播消息进行路由转发时,向本节点所有用户发送消息,然后返回长连接实际处理单元。
CN202110432355.8A 2021-04-21 2021-04-21 一种精简的分布式长连接的数据传输方法及系统 Pending CN113132487A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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协议的消息推送系统及方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
黄永华: "应用Socket的微服务之间的通讯", 《福建电脑》 *

Cited By (3)

* Cited by examiner, † Cited by third party
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