CN113676477A - 基于星状网络和内存路由表实现Socket会话集群通信的方法 - Google Patents
基于星状网络和内存路由表实现Socket会话集群通信的方法 Download PDFInfo
- Publication number
- CN113676477A CN113676477A CN202110959074.8A CN202110959074A CN113676477A CN 113676477 A CN113676477 A CN 113676477A CN 202110959074 A CN202110959074 A CN 202110959074A CN 113676477 A CN113676477 A CN 113676477A
- Authority
- CN
- China
- Prior art keywords
- message
- node
- user
- routing table
- 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
- 238000004891 communication Methods 0.000 title claims abstract description 17
- 238000000034 method Methods 0.000 title claims abstract description 17
- 230000001419 dependent effect Effects 0.000 abstract description 2
- RYYVLZVUVIJVGH-UHFFFAOYSA-N caffeine Chemical compound CN1C(=O)N(C)C(=O)C2=C1N=CN2C RYYVLZVUVIJVGH-UHFFFAOYSA-N 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- LPHGQDQBBGAPDZ-UHFFFAOYSA-N Isocaffeine Natural products CN1C(=O)N(C)C(=O)C2=C1N(C)C=N2 LPHGQDQBBGAPDZ-UHFFFAOYSA-N 0.000 description 2
- 229960001948 caffeine Drugs 0.000 description 2
- VJEONQKOZGKCAK-UHFFFAOYSA-N caffeine Natural products CN1C(=O)N(C)C(=O)C2=C1C=CN2C VJEONQKOZGKCAK-UHFFFAOYSA-N 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/44—Star or tree networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种基于星状网络和内存路由表实现Socket会话集群通信的方法。创新性的引入了星状网络部署方式,结合高速内存路由表,将其中一个节点部署成中心节点来转发消息,解决了用户Socket会话连接在不同服务器时,Socket间无法相互通信的难点,实现了不同服务器间用户Socket会话的相互通信。本发明方法通过利用星状网络这种应用部署方式结合高速内存路由表,在不引入第三方依赖组件的情况下,较为巧妙地解决了集群间Socket的相互通信问题。
Description
技术领域
本发明涉及一种基于星状网络和内存路由表实现Socket会话集群通信的方法。
背景技术
现有的实现Socket集群间通信的方法及其问题;
1、引入消息队列组件进行消息广播
目前市面大部分公司的实现方案是基于引入消息队列组件通过广播实现集群间Socket通信,即所有的服务器节点都去订阅Topic-A,当客户端A要发送一条消息给客户端B时,客户端A是将消息发送给消息队列的Topic-A,然后集群内每个服务节点都将收到一份广播的数据,然后尝试发送,这其中因为Socket连接只在某一台服务节点,所以仅有一台服务节点能发送成功。这就存在消息风暴、服务器资源浪费等问题,当消息发送量达到一定程度时,服务节点的资源都消耗在解析和本节点无关的消息上。
2、订阅预置的消息队列
为解决广播消息带来的消息风暴问题,有一部分通过了优化方案,利用队列方式规避了消息风暴问题,即服务节点在上线时只订阅发送给自己的消息队列,这样当客户端A、B要进行通信时,是将消息发给客户端B所在的服务器节点订阅的队列,这里我们称之为Server-B,订阅了queue-b,这样Server-B只会拉去本节点所需要的发送的消息数据。这种方案能相对较好的规避广播方式的消息风暴问题,但是目前主流的消息队列中间件对动态新建队列支持度不够完善,都是在服务节点上线前新建好队列queue-x,代码里硬编码,服务器节点server-x只订阅自己的队列queue-x,存在硬编码不方便及服务动态横向扩展不灵活问题。
发明内容
本发明的目的在于在不引入第三方依赖组件的情况下,较为巧妙地解决了集群间Socket的相互通信问题,提供一种基于星状网络和内存路由表实现Socket会话集群通信的方法,基于星状网络的部署方式,利用将其中一台节点当做中心节点转发来自不同服务节点的消息,实现集群内不同Socket的相互通信。
为实现上述目的,本发明的技术方案是:一种基于星状网络和内存路由表实现Socket会话集群通信的方法,引入星状网络部署方式,结合高速内存路由表,将其中一个节点部署成中心节点来转发消息,从而解决用户Socket会话连接在不同服务器时,不同服务器间用户Socket 会话的相互通信。
在本发明一实施例中,该方法具体实现步骤如下:
Step1、修改中心节点服务器默认配置文件,注册为中心节点,其他服务器采用默认配置,启动后都为服务节点,服务节点启动时默认会向中心节点发起连接请求,保持连接,同时自动加入GatWay负载均衡成为服务节点之一,并拉取数据库中所有在线连接与主机关联关系保存到本地内存路由缓存表信息;
Step2、新客户端连接上服务节点时,将自己和服务节点的对应关系保存到数据库中,并将关联关系通过中心节点向各个服务节点广播,各个服务节点会保存到本地内存路由表缓存信息中;
Step3、不同服务器间用户Socket 会话的相互通信。
在本发明一实施例中,不同服务器间用户Socket 会话的相互通信的实现方式为:发送消息时先尝试根据用户ID获取绑定的sessionChnnel 是否在本地,如果不在的话去内存路由表根据用户ID查找接收消息用户会话所在的主机的服务节点,然后将包含目的主机和接收消息用户信息组成的消息包发送给中心节点处理,中心节点根据目的主机将消息转发给目的主机的服务节点,目的主机的服务节点收到消息后根据用户ID获取sessionChnnel发送信息,完成消息发送。
相较于现有技术,本发明具有以下有益效果:
1、部署方式简单,改造成本小
本发明中,创新性地将应用部署采用星状网络部署方式,部署简单便捷,相对于已有系统仅仅只需将一台节点的配置文件定义为中心节点,其他服务节点采用默认配置,无需改变。简单便捷,代码改造成本小
2、降低系统复杂度,提升系统可靠性
本发明中,不再引入类似消息队列等第三方组件,降低的系统的复杂度,加强了系统的可控性,有效地提升了系统的稳定性。
3、承载容量高,横向扩展能力强
本发明中,服务节点上线后通过自动保持与中心节点的连接实现自动注册上线,极大的加强了集群的自动横向扩展能力,有效的提高了业务连接的承载容量。
附图说明
图1为本发明方法星状网络部署示意图。
图2 为消息发送业务时序图。
图3为消息协议消息包组成。
具体实施方式
下面结合附图,对本发明的技术方案进行具体说明。
如图1所示,本发明一种基于星状网络和内存路由表实现Socket会话集群通信的方法,基于星状网络的部署方式,利用将其中一台节点当做中心节点转发来自不同服务节点的消息,实现集群内不同Socket的相互通信,即发送消息时先尝试根据用户ID获取绑定的sessionChnnel 是否在本地,如果不在的话去内存路由表根据用户ID查找,该接收消息用户会话所在的主机节点,然后将包含目的主机和接收用户信息组成的消息包发送个中心节点处理,中心节点根据目的主机将消息转发给目的主机服务节点,目的主机服务节点收到消息后根据用户ID获取sessionChnnel发送信息,完成消息发送。
以下为本发明具体实现过程。
Step1、修改中心节点服务器默认配置文件,注册为中心节点,其他服务应用采用默认配置,启动后都为服务节点,服务节点启动时默认会向中心节点发起连接请求,保持连接,同时自动加入GatWay负载均衡成为服务节点之一,并拉取数据库中所有在线连接与主机关联关系保存到本地内存路由缓存表信息。
Step2、新客户端连接上服务节点时,都会将自己连接和服务节点的对应关系保存到数据库中,并将关联关系通过中心节点向各个服务节点广播,各个服务节点会保存到本地内存路由表缓存信息中。
Step3、Socket间发送消息。结合如下图2消息发送时序图说明
客户端A发送的消息被所在服务端Server-S接收解析,服务端S从消息内容中读取接收消息用户的ID,在本节点尝试通过根据用户ID获得客户端B对应绑定的SessionChnnel发送消息,如果能获取到则说明客户端A、B连接在同一个服务节点可以直接相互发送消息;如果根据用户ID在Server-S无法获得客户端B对应的SessionChnnel,则根据Key=SMS:USER_ID ;从路由缓存表查找对应所在主机,填入目的主机字段,重新打包消息,将消息发送给中心节点,此时中心节点通过消息内容的主机字段获取对应绑定主机与中心节点的会话SessionChnnel,将消息转发给对应客户端B对应所在服务节点Server-A,Server-A在收到消息后就可以将消息发送给客户端B,至此跨主机的SocketA/B 就实现了信息的相互交互。
本发明方法中需约定以下协议及数据格式:
1、消息协议组成
如图3所示,消息协议由消息长度、命令类型、消息序列号、目的主机、接收用户、消息内容组成,除“消息内容”字段外其余字段都为固定4字节长度16进制内容;命令类型如表1所示。
表1
命令类型 | 说明 |
0x00000001 | 登陆请求 |
0x80000001 | 登录应答 |
0x00000002 | 提交消息 |
0x80000002 | 提交应答 |
0x00000003 | 转发消息 |
0x80000003 | 转发应答 |
0x00000004 | 心跳消息 |
0x80000004 | 心跳应答 |
0x00000005 | 下发消息 |
0x80000005 | 下发应答 |
0x00000006 | 退出请求 |
0x80000006 | 退出应答 |
0x00000007 | 广播消息 |
0x80000007 | 广播应答 |
其他 | 保留 |
2、内存路由表
内存路由表基于Caffeine cache;Caffeine 是目前非常流行java 内存缓存框架,单应用读写可达百万QPS/秒,能很好地满足我们在查找路由时对查询性能的业务需求,业务数据以键值对储存于内存。内存路由表的命名规范如表2所示。
表2
Key | Value | 说明 |
Sms:会话用户ID | 主机编号ID | 键值数据类型都是字符串 |
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。
Claims (3)
1.一种基于星状网络和内存路由表实现Socket会话集群通信的方法,其特征在于,引入星状网络部署方式,结合高速内存路由表,将其中一个节点部署成中心节点来转发消息,从而解决用户Socket会话连接在不同服务器时,不同服务器间用户Socket 会话的相互通信。
2.根据权利要求1所述的基于星状网络和内存路由表实现Socket会话集群通信的方法,其特征在于,该方法具体实现步骤如下:
Step1、修改中心节点服务器默认配置文件,注册为中心节点,其他服务器采用默认配置,启动后都为服务节点,服务节点启动时默认会向中心节点发起连接请求,保持连接,同时自动加入GatWay负载均衡成为服务节点之一,并拉取数据库中所有在线连接与主机关联关系保存到本地内存路由缓存表信息;
Step2、新客户端连接上服务节点时,将自己和服务节点的对应关系保存到数据库中,并将关联关系通过中心节点向各个服务节点广播,各个服务节点会保存到本地内存路由表缓存信息中;
Step3、不同服务器间用户Socket 会话的相互通信。
3.根据权利要求1或2所述的基于星状网络和内存路由表实现Socket会话集群通信的方法,其特征在于,不同服务器间用户Socket 会话的相互通信的实现方式为:发送消息时先尝试根据用户ID获取绑定的sessionChnnel 是否在本地,如果不在的话去内存路由表根据用户ID查找接收消息用户会话所在的主机的服务节点,然后将包含目的主机和接收消息用户信息组成的消息包发送给中心节点处理,中心节点根据目的主机将消息转发给目的主机的服务节点,目的主机的服务节点收到消息后根据用户ID获取sessionChnnel发送信息,完成消息发送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110959074.8A CN113676477A (zh) | 2021-08-20 | 2021-08-20 | 基于星状网络和内存路由表实现Socket会话集群通信的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110959074.8A CN113676477A (zh) | 2021-08-20 | 2021-08-20 | 基于星状网络和内存路由表实现Socket会话集群通信的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113676477A true CN113676477A (zh) | 2021-11-19 |
Family
ID=78544374
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110959074.8A Pending CN113676477A (zh) | 2021-08-20 | 2021-08-20 | 基于星状网络和内存路由表实现Socket会话集群通信的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113676477A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011113289A1 (zh) * | 2010-03-17 | 2011-09-22 | 华为技术有限公司 | 一种业务路由方法和业务网络 |
CN103475566A (zh) * | 2013-07-10 | 2013-12-25 | 北京发发时代信息技术有限公司 | 一种实时消息交换平台及分布式集群组建方法 |
CN105897827A (zh) * | 2015-11-27 | 2016-08-24 | 乐视云计算有限公司 | 服务器节点、局域网服务器集群及其实现方法 |
CN111211971A (zh) * | 2020-01-03 | 2020-05-29 | 西安新能技术有限公司 | 一种支撑互联网问诊服务的集群式即时消息系统及其实现方法 |
CN111478781A (zh) * | 2019-01-24 | 2020-07-31 | 北京京东尚科信息技术有限公司 | 一种消息广播的方法和装置 |
CN111565229A (zh) * | 2020-04-29 | 2020-08-21 | 创盛视联数码科技(北京)有限公司 | 一种基于Redis的通信系统分布式方法 |
-
2021
- 2021-08-20 CN CN202110959074.8A patent/CN113676477A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011113289A1 (zh) * | 2010-03-17 | 2011-09-22 | 华为技术有限公司 | 一种业务路由方法和业务网络 |
CN103475566A (zh) * | 2013-07-10 | 2013-12-25 | 北京发发时代信息技术有限公司 | 一种实时消息交换平台及分布式集群组建方法 |
CN105897827A (zh) * | 2015-11-27 | 2016-08-24 | 乐视云计算有限公司 | 服务器节点、局域网服务器集群及其实现方法 |
CN111478781A (zh) * | 2019-01-24 | 2020-07-31 | 北京京东尚科信息技术有限公司 | 一种消息广播的方法和装置 |
CN111211971A (zh) * | 2020-01-03 | 2020-05-29 | 西安新能技术有限公司 | 一种支撑互联网问诊服务的集群式即时消息系统及其实现方法 |
CN111565229A (zh) * | 2020-04-29 | 2020-08-21 | 创盛视联数码科技(北京)有限公司 | 一种基于Redis的通信系统分布式方法 |
Non-Patent Citations (1)
Title |
---|
鞠晨等: "用于低压电力线通信的同步关联分簇路由算法", 《电器与能效管理技术》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8019823B2 (en) | Method, system and device for increasing multimedia messaging service system capacity | |
CN111917562B (zh) | 广播消息转发方法、装置、设备及存储介质 | |
CN106230896A (zh) | 一种消息推送方法、装置及系统 | |
US9191219B2 (en) | Network multicast peer discovery methods | |
EP3439239A1 (en) | Data transmission method and system based on peer-to-peer network | |
US9426767B2 (en) | Method, gateway, proxy and system for implementing mobile internet services | |
CN113452431B (zh) | 一种利用边缘计算技术优化卫星网络数据业务的方法 | |
CN104301287B (zh) | 一种多对多会话的实现方法、网络节点、服务器及系统 | |
WO2012000220A1 (zh) | 一种网页上实现的自动接收群组消息的方法 | |
US9591069B2 (en) | Peer-to-peer assist for live media streaming | |
CN109391551B (zh) | 一种多端口组播方法、设备及计算机可读存储介质 | |
CN101483604A (zh) | 资源列表发送方法、装置和系统 | |
CN110768708B (zh) | 一种基于通信卫星的组播方法、服务器和终端 | |
CN104320405A (zh) | 一种适用于星型卫星网络的上网优化方法 | |
CN103200214A (zh) | 离线消息集中处理方法和系统 | |
CN108810936A (zh) | 一种LoRa终端的配置方法及装置 | |
US20210314406A1 (en) | Communication Method and System under Micro-Service Architecture | |
CN113676477A (zh) | 基于星状网络和内存路由表实现Socket会话集群通信的方法 | |
CN112733051A (zh) | 一种基于WebSocket的信息推送管理系统及其方法 | |
CN114285788B (zh) | 一种设备连接方法、装置和设备 | |
CN110505280B (zh) | P2p传输的控制方法及p2p节点 | |
CN112579301A (zh) | 一种基于ndn的p2p分布式机器学习训练系统数据传输方法 | |
CN104994131B (zh) | 一种基于分布式代理服务器的自适应上传加速方法 | |
US20180375930A1 (en) | Peer-to-peer network data transmission method and system | |
CN114615277B (zh) | 一种基于emq x的多集群动态扩展方法及系统 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20211119 |