CN115037785A - 即时通讯系统及方法 - Google Patents
即时通讯系统及方法 Download PDFInfo
- Publication number
- CN115037785A CN115037785A CN202210964562.2A CN202210964562A CN115037785A CN 115037785 A CN115037785 A CN 115037785A CN 202210964562 A CN202210964562 A CN 202210964562A CN 115037785 A CN115037785 A CN 115037785A
- Authority
- CN
- China
- Prior art keywords
- server
- client
- target
- accessed
- data
- 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
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000004891 communication Methods 0.000 title claims abstract description 28
- 230000005540 biological transmission Effects 0.000 claims abstract description 40
- 238000012545 processing Methods 0.000 claims abstract description 17
- 230000008569 process Effects 0.000 claims description 14
- 238000012544 monitoring process Methods 0.000 claims description 12
- 238000005457 optimization Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 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
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种即时通讯系统及方法,当前第一服务器用于将监听到的来自第一客户端的数据传输请求发送至目标第二服务器;目标第二服务器用于对其中携带的待传输数据进行逻辑处理得到返回数据,根据其中携带的待访问客户端的标识信息,将返回数据发送至待访问客户端连接的第一服务器,通过待访问客户端连接的第一服务器将返回数据发送至待访问客户端。该系统中,每个第一服务器可以直接连接至少一个客户端,在高并发情况下,只需要按需增加服务器即可,不需要通过nginx代理服务器进行转发,从而可以降低业务优化的配置成本,并且第一服务器与客户端之间、第一服务器与第二服务器之间均通过长链接方式连接,从而可以有效提升服务器性能。
Description
技术领域
本发明涉及通讯技术领域,尤其是涉及一种即时通讯系统及方法。
背景技术
即时通讯的常见应用场景有文字聊天、语音消息发送、文件传输等。随着客户数和业务量的增加,服务器的请求和响应数也会逐渐增加,提供即时通讯的服务器的压力越来越大,相关技术中,在高并发情况下,一般是通过nginx代理服务器做负载均衡从而达到性能提升,数据请求先访问到nginx代理服务器,再由nginx服务器转发到对应的服务器,这样每台服务器根据权重来处理数据,从而达到分担其他服务器压力,该方式要通过nginx代理服务器进行转发,业务优化的配置成本较大,而且对服务器性能的提升效果非常有限。
发明内容
本发明的目的在于提供一种即时通讯系统及方法,以降低高并发情况下,业务优化的配置成本,提升服务器性能。
本发明提供的一种即时通讯系统,包括多个第一服务器和多个第二服务器,每个第一服务器分别与每个第二服务器之间建立有长链接;每个第一服务器还与至少一个客户端之间建立有长链接;每个第一服务器连接不同的客户端;针对每个第一服务器,当前第一服务器用于当监听到来自所连接的第一客户端的数据传输请求时,将数据传输请求发送至目标第二服务器;其中,数据传输请求中携带有待传输数据和待访问客户端的标识信息;目标第二服务器通过轮询方式确定;目标第二服务器用于对待传输数据进行逻辑处理得到返回数据,根据待访问客户端的标识信息,将返回数据发送至待访问客户端连接的第一服务器,通过待访问客户端连接的第一服务器将返回数据发送至待访问客户端。
进一步的,每个第一服务器与至少一个客户端之间的长链接通过以下方式建立:针对每个客户端,当前客户端用于向指定第一服务器发送长链接注册请求,通过指定第一服务器将长链接注册请求发送至指定第二服务器;其中,长链接注册请求中携带有当前客户端的标识信息;指定第二服务器通过轮询方式确定;指定第二服务器用于将当前客户端的标识信息与当前客户端进行绑定,通过指定第一服务器将绑定成功消息返回至当前客户端,以建立当前客户端与指定第一服务器之间的长链接。
进一步的,每个第一服务器设置有多个客户端连接点;指定第一服务器通过下述方式确定:确定每个第一服务器对应的未连接客户端的空闲连接点数量;将空闲连接点数量最多的第一服务器确定为指定第一服务器。
进一步的,系统还包括第三服务器;第三服务器用于接收每个第一服务器的第一长链接注册请求,以注册每个第一服务器,保存每个第一长链接注册请求中携带的第一服务器的通讯地址;第三服务器用于接收每个第二服务器的第二长链接注册请求,以注册每个第二服务器,将每个第一服务器的通讯地址发送至每个第二服务器,以建立每个第一服务器与每个第二服务器之间的长链接。
进一步的,第三服务器还用于,如果接收到新的第一服务器的新的长链接注册请求,注册新的第一服务器,保存新的长链接注册请求中携带的新的第一服务器的通讯地址,将新的第一服务器的通讯地址发送至每个第二服务器,以建立新的第一服务器与每个第二服务器之间的长链接。
进一步的,第三服务器还用于,每间隔第一预设时间,检查每个第一服务器在第一预设时间内发送预设数据的发送次数;其中,每个第一服务器每间隔第二预设时间向第三服务器发送预设数据;第二预设时间短于第一预设时间;如果目标第一服务器对应的发送次数为零,确定目标第一服务器下线。
进一步的,第三服务器还用于,当确定目标第一服务器下线后,注销目标第一服务器,向每个第二服务器发送消息,以指示每个第二服务器取消与目标第一服务器之间的长链接。
进一步的,第三服务器还用于,当启动进程后,检查当前运行环境。
进一步的,每个第一服务器中运行有多个子进程;每个客户端通过各自对应的子进程与每个第一服务器之间建立长链接。
本发明提供的一种即时通讯方法,方法包括:针对每个第一服务器,当前第一服务器当监听到来自所连接的第一客户端的数据传输请求时,将数据传输请求发送至目标第二服务器;其中,数据传输请求中携带有待传输数据和待访问客户端的标识信息;目标第二服务器通过轮询方式确定;目标第二服务器对待传输数据进行逻辑处理得到返回数据,根据待访问客户端的标识信息,将返回数据发送至待访问客户端连接的第一服务器,通过待访问客户端连接的第一服务器将返回数据发送至待访问客户端。
本发明提供的一种即时通讯系统及方法,包括多个第一服务器和多个第二服务器,每个第一服务器分别与每个第二服务器之间建立有长链接;每个第一服务器还与至少一个客户端之间建立有长链接;每个第一服务器连接不同的客户端;针对每个第一服务器,当前第一服务器用于当监听到来自所连接的第一客户端的数据传输请求时,将数据传输请求发送至目标第二服务器;其中,数据传输请求中携带有待传输数据和待访问客户端的标识信息;目标第二服务器通过轮询方式确定;目标第二服务器用于对待传输数据进行逻辑处理得到返回数据,根据待访问客户端的标识信息,将返回数据发送至待访问客户端连接的第一服务器,通过待访问客户端连接的第一服务器将返回数据发送至待访问客户端。该系统中,每个第一服务器可以直接连接至少一个客户端,在高并发情况下,只需要按需增加服务器即可,不需要通过nginx代理服务器进行转发,从而可以降低业务优化的配置成本,并且第一服务器与客户端之间、第一服务器与第二服务器之间均通过长链接方式连接,从而可以有效提升服务器性能。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种即时通讯系统的结构示意图;
图2为本发明实施例提供的另一种即时通讯系统的结构示意图;
图3为本发明实施例提供的一种即时通讯方法的流程图;
图4为本发明实施例提供的另一种即时通讯方法的流程图。
具体实施方式
下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
IM是指即时通讯(Instant Messaging),IM服务就是提供即时通讯的服务。常见应用场景有文字聊天、语音消息发送、文件传输等。高性能和可扩展一直是衡量一个服务器的重要标准。随着客户数和业务量的增加,提供即时通讯的服务器的内存压力越来越大,CPU运行压力达到极限,导致通讯速度慢、通讯效率低;在高并发情况下,即在一个时间点,同时收到了很多请求的场景下,一般的业务优化和增加服务器配置成本巨大而且效果非常有限。基于此,本发明实施例提供了一种即时通讯系统及方法,该技术可以应用于即时通讯场景中,尤其可以应用于高并发情况下的即时通讯场景中。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种即时通讯系统进行详细介绍,如图1所示,包括多个第一服务器10和多个第二服务器11,每个第一服务器10分别与每个第二服务器11之间建立有长链接;每个第一服务器10还与至少一个客户端12之间建立有长链接;每个第一服务器10连接不同的客户端12。
上述长链接也可以称为长连接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,长链接的双方通常会发链路检测包。在实际实现时,对于每个客户端12来说,通常只会连接一个第一服务器10,而每个第一服务器10可以连接一个或多个客户端12,并且,对客户端12和第一服务器10之间进行长链接;对每个第一服务器10和每个第二服务器11之间均进行长链接。
针对每个第一服务器10,当前第一服务器用于当监听到来自所连接的第一客户端的数据传输请求时,将数据传输请求发送至目标第二服务器;其中,数据传输请求中携带有待传输数据和待访问客户端的标识信息;目标第二服务器通过轮询方式确定;目标第二服务器用于对待传输数据进行逻辑处理得到返回数据,根据待访问客户端的标识信息,将返回数据发送至待访问客户端连接的第一服务器,通过待访问客户端连接的第一服务器将返回数据发送至待访问客户端。
上述当前第一服务器可以是多个第一服务器10中的任意一个,每个第一服务器10都可以接收来自所连接的客户端12的数据传输请求;上述第一客户端可以是当前第一服务器所连接的至少一个客户端中的任意一个;具体的,对于当前第一服务器来说,当前第一服务器可以监听连接客户端的端口,当监听到第一客户端发送的数据传输请求时,可以将该数据传输请求转发至目标第二服务器,通常采用轮询方式从多个第二服务器中确定该目标第二服务器,比如,有三个第二服务器,编号分别为1号、2号和3号,如果上一次被访问的第二服务器为2号,则按照轮询方式,依序确定的本次被访问的目标第二服务器即为3号;目标第二服务器从接收到的数据传输请求中解析出所携带的待访问客户端的标识信息,将数据传输请求中携带的待传输数据进行逻辑处理后,得到返回数据,将返回数据发送至该标识信息对应的待访问客户端连接的第一服务器10,通过待访问客户端连接的第一服务器10将返回数据发送至对应的待访问客户端,完成了两个客户端之间的数据传输;比如,第一客户端对应7号客户端,其向所连接的当前第一服务器发出的数据传输请求中携带的待访问客户端的标识信息对应为1号客户端,当前第一服务器将该数据传输请求转发给目标第二服务器,目标第二服务器对数据传输请求中的待传输数据进行逻辑处理,查询到携带的标识信息为1号客户端的标识,通过1号客户端连接的第一服务器将逻辑处理后的返回数据转发至1号客户端。
上述即时通讯系统,包括多个第一服务器和多个第二服务器,每个第一服务器分别与每个第二服务器之间建立有长链接;每个第一服务器还与至少一个客户端之间建立有长链接;每个第一服务器连接不同的客户端;针对每个第一服务器,当前第一服务器用于当监听到来自所连接的第一客户端的数据传输请求时,将数据传输请求发送至目标第二服务器;其中,数据传输请求中携带有待传输数据和待访问客户端的标识信息;目标第二服务器通过轮询方式确定;目标第二服务器用于对待传输数据进行逻辑处理得到返回数据,根据待访问客户端的标识信息,将返回数据发送至待访问客户端连接的第一服务器,通过待访问客户端连接的第一服务器将返回数据发送至待访问客户端。该系统中,每个第一服务器可以直接连接至少一个客户端,在高并发情况下,只需要按需增加服务器即可,不需要通过nginx代理服务器进行转发,从而可以降低业务优化的配置成本,并且第一服务器与客户端之间、第一服务器与第二服务器之间均通过长链接方式连接,从而可以有效提升服务器性能。
进一步的,每个第一服务器与至少一个客户端之间的长链接通过以下方式建立:针对每个客户端,当前客户端用于向指定第一服务器发送长链接注册请求,通过指定第一服务器将长链接注册请求发送至指定第二服务器;其中,长链接注册请求中携带有当前客户端的标识信息;指定第二服务器通过轮询方式确定;指定第二服务器用于将当前客户端的标识信息与当前客户端进行绑定,通过指定第一服务器将绑定成功消息返回至当前客户端,以建立当前客户端与指定第一服务器之间的长链接。
在实际实现时,每个客户端可以向多个第一服务器中的某个第一服务器发送长链接注册请求,该某个第一服务器可以是随机选择的第一服务器,也可以是按照预设规则选择的第一服务器;在实际实现时,对于当前客户端来说,当前客户端可以向指定第一服务器发送长链接注册请求,其中携带有该当前客户端对应的唯一的标识信息,指定第一服务器将接收到的长链接注册请求转发至指定第二服务器,通常也可以采用轮询方式从多个第二服务器中确定该指定第二服务器,该指定第二服务器对接收到的长链接注册请求进行逻辑处理,将标识信息与当前客户端进行绑定,保存在内存中,然后将绑定成功的结果通过指定第一服务器返回至当前客户端,这样当前客户端就与指定第一服务器建立了长链接。
进一步的,每个第一服务器设置有多个客户端连接点;指定第一服务器通过下述方式确定:确定每个第一服务器对应的未连接客户端的空闲连接点数量;将空闲连接点数量最多的第一服务器确定为指定第一服务器。
作为一种优选方式,考虑到每个第一服务器通常会设置有多个客户端连接点,每个第一服务器可能连接了较多的客户端,也可能连接了较少的客户端,为了充分利用每个第一服务器的性能,均衡使用每个第一服务器,可以根据每个第一服务器对应的已连接客户端的连接点数量,计算出每个第一服务器对应的未连接客户端的空闲连接点数量,当前客户端自动向空闲连接点数量最多的第一服务器发送长链接注册请求。
进一步的,系统还包括第三服务器;第三服务器用于接收每个第一服务器的第一长链接注册请求,以注册每个第一服务器,保存每个第一长链接注册请求中携带的第一服务器的通讯地址;第三服务器用于接收每个第二服务器的第二长链接注册请求,以注册每个第二服务器,将每个第一服务器的通讯地址发送至每个第二服务器,以建立每个第一服务器与每个第二服务器之间的长链接。
该第三服务器主要负责每个第一服务器和每个第二服务器的注册,并对所有第一服务器和所有第二服务器进行长链接,比如,可以将即时通讯系统比作一个快递公司。首先需要建三个部分,分别为行政中心、调拨中心和驿站,驿站主要负责寄件和派送快递,调拨中心主要负责接收驿站送的快递,然后进行一系列处理,然后再送到驿站,由驿站再送到收件人手上。而行政中心只是负责管理,有多个驿站和多少个调拨中心,安排好之后就可以直接对接。如果有新的驿站注册了,行政中心就会通知所有调拨中心。同理如果有驿站不干了,也会由行政中心通知所有调拨中心就不会给该驿站派送任何包裹。
从上面的例子可以看出,行政中心只需要一个就够了,调拨中心和驿站可以是多个的,每多一个所能支撑的业务也会成倍增加。基于该示例,确定的本方案的总体架构主要分为3部分:第三服务器(对应行政中心),第一服务器(对应驿站), 第二服务器(对应调拨中心)。
具体的,参见图2所示的另一种即时通讯系统的结构示意图,其中,服务A(未示出)对应上述第三服务器,服务B对应上述第一服务器、服务C对应上述第二服务器,其中,服务指将一系列程序,部署在服务器上,从而实现的某一系列功能。将服务A、服务B和服务C分别部署在服务器上,由于服务A只处理服务启动时的通讯,不需求集群,单独部署一台即可,服务B和服务C可根据业务量增加或减少服务器数量,一般是看用户连接数,假设服务器配置是8核16G,那么可以配置服务A固定1个,服务B启动4个,服务C启动4个。这样按照一个服务1万的连接数计算,所支撑的用户连接数大概在4万左右,然后基于CPU核数来平均分配服务B和服务C,可以看到每个客户端都有很多的路由到达另外一个客户端,客服端7与客户端1可以经由粗实线对应的路径完成数据通讯。
在长链接时,首先服务A、服务B和服务C进程启动,在服务B和服务C进程启动后向服务A进程发起长链接请求注册以自己,服务A收到每个服务B的注册后,把所有服务B的通讯地址保存在内存中,服务A收到每个服务C的注册后,把内存中所有服务B的通讯地址发给每个服务C,每个服务C收到所有的服务B的通讯地址后连接每个服务B,这样每个服务B和每个服务C就进行了长链接。
进一步的,第三服务器还用于,如果接收到新的第一服务器的新的长链接注册请求,注册新的第一服务器,保存新的长链接注册请求中携带的新的第一服务器的通讯地址,将新的第一服务器的通讯地址发送至每个第二服务器,以建立新的第一服务器与每个第二服务器之间的长链接。
在实际实现时,如果服务A接收到新的服务B发送的新的长链接注册请求,可以注册该新的服务B,保存其对应的通讯地址,同时,服务A会通知所有的服务C,将新的通讯地址发送至所有的服务C,每个服务C收到新的通讯地址后,分别与新的服务B建立长链接。
进一步的,第三服务器还用于,每间隔第一预设时间,检查每个第一服务器在第一预设时间内发送预设数据的发送次数;其中,每个第一服务器每间隔第二预设时间向第三服务器发送预设数据;第二预设时间短于第一预设时间;如果目标第一服务器对应的发送次数为零,确定目标第一服务器下线。
上述第一预设时间和第二预设时间均可以根据实际需求进行设置,且第一预设时间通常长于第二预设时间;在实际实现时,可以为第一服务器和第三服务器分别设置定时任务,对于第一服务器来说,可以每间隔第二预设时间执行一次,比如,每15秒执行一次,向第三服务器发送一个预设数据,该预设数据的内容固定ping,第三服务器每间隔第一预设时间执行一次,比如,每50秒执行一次,检查每个第一服务器在50秒内发ping的请求次数,如果某个目标第一服务器的请求次数为0,就可以认为该目标第一服务器下线了,其中,该目标第一服务器可以是多个第一服务器中的任意一个,正常情况下,每个第一服务器的ping数会大于0,有一定的容错空间。
进一步的,第三服务器还用于,当确定目标第一服务器下线后,注销目标第一服务器,向每个第二服务器发送消息,以指示每个第二服务器取消与目标第一服务器之间的长链接。
如果目标第一服务器下线,第三服务器会注销掉该目标第一服务器,并通知所有的第二服务器,每个第二服务器接收到目标第一服务器被注销掉的通知后,将不再连接下线的目标第一服务器。
进一步的,第三服务器还用于,当启动进程后,检查当前运行环境。
比如,参见图3所示的一种即时通讯方法的流程图,服务A对应第三服务器,服务A进程启动后,会进行运行环境监察,创建信号监听,启动服务B进程和服务C进程后,变为守护进程,监听服务B和服务C状态。该服务A主要负责服务B和服务C的注册,并安排所有服务B和所有服务C的进行长链接;服务B主要负责监听端口,收集客户端长链接注册和数据请求,还负责接收服务C给的返回结果,并返回数据给客户端。服务C主要负责监听端口,接受服务B发送的请求数据,进行逻辑处理后,得到返回结果,并发送至服务B。客户端主要用于向服务B请求长链接,判断注册结果,如果注册成功,向服务B的监听端口发送请求数据,并监听返回结果,如果注册失败,则重复执行向服务B请求长链接的步骤。
进一步的,每个第一服务器中运行有多个子进程;每个客户端通过各自对应的子进程与每个第一服务器之间建立长链接。
服务B初始化时通常会创建多个服务B子进程,只要内存足够大,创建的子进程会更多,每个子进程会负责一个客户端连接,一个服务B能创建上万个子进程,相当于每个服务B能支撑上万的客户端连接,由于服务B只负责客户端长链接和数据传输,不做逻辑处理,所以服务B性能非常高效。
相关技术中,主要是通过nginx做负载均衡从而达到性能提升,这种方式,是通过nginx代理和转发来实现的,一个请求进来,访问到nginx服务器,再由nginx转发到对应的服务器,这样每台服务器根据权重来处理数据,从而达到分担其他服务器压力。而本方案是通过建立连接数来提升服务器性能,每增加一台服务器,就在服务器上创建对应数量的连接数,服务器之间通过长链接链接起来,从而达到提升服务器性能的效果,该方案省去了nginx转发,通讯更快,并且,每个服务都通过长链接链接起来,这样处理的数据量能成配的提升。
本实施例提供的即时通讯系统采用分布式IM服务架构的形式,该架构可以支持高并发,能够成倍提高服务器性能,提高服务稳定性。相对于其他IM服务器,更具有可扩展性,而且很容易就实现分布式部署。可以用几台廉价的服务器组成一个服务器集群,如多个第一服务器、多个第二服务器,这样能够大大的提升了服务性能,同时也降低了成本。如果其中一台服务器宕机,还有其他服务器继续工作,有效的降低了宕机产生的影响。在保证高性能的同时,还提升了稳定性。
本发明实施例提供了另一种即时通讯方法,如图4所示,方法包括:
步骤S402,针对每个第一服务器,当前第一服务器当监听到来自所连接的第一客户端的数据传输请求时,将数据传输请求发送至目标第二服务器;其中,数据传输请求中携带有待传输数据和待访问客户端的标识信息;目标第二服务器通过轮询方式确定;
步骤S404,目标第二服务器对待传输数据进行逻辑处理得到返回数据,根据待访问客户端的标识信息,将返回数据发送至待访问客户端连接的第一服务器,通过待访问客户端连接的第一服务器将返回数据发送至待访问客户端。
上述即时通讯方法,针对每个第一服务器,当前第一服务器用于当监听到来自所连接的第一客户端的数据传输请求时,将数据传输请求发送至目标第二服务器;其中,数据传输请求中携带有待传输数据和待访问客户端的标识信息;目标第二服务器通过轮询方式确定;目标第二服务器用于对待传输数据进行逻辑处理得到返回数据,根据待访问客户端的标识信息,将返回数据发送至待访问客户端连接的第一服务器,通过待访问客户端连接的第一服务器将返回数据发送至待访问客户端。该系统中,每个第一服务器可以直接连接至少一个客户端,在高并发情况下,只需要按需增加服务器即可,不需要通过nginx代理服务器进行转发,从而可以降低业务优化的配置成本,并且第一服务器与客户端之间、第一服务器与第二服务器之间均通过长链接方式连接,从而可以有效提升服务器性能。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种即时通讯系统,其特征在于,包括多个第一服务器和多个第二服务器,每个所述第一服务器分别与每个所述第二服务器之间建立有长链接;每个所述第一服务器还与至少一个客户端之间建立有长链接;每个所述第一服务器连接不同的客户端;
针对每个所述第一服务器,当前第一服务器用于当监听到来自所连接的第一客户端的数据传输请求时,将所述数据传输请求发送至目标第二服务器;其中,所述数据传输请求中携带有待传输数据和待访问客户端的标识信息;所述目标第二服务器通过轮询方式确定;
所述目标第二服务器用于对所述待传输数据进行逻辑处理得到返回数据,根据所述待访问客户端的标识信息,将所述返回数据发送至所述待访问客户端连接的第一服务器,通过所述待访问客户端连接的第一服务器将所述返回数据发送至所述待访问客户端。
2.根据权利要求1所述的系统,其特征在于,每个所述第一服务器与至少一个客户端之间的长链接通过以下方式建立:
针对每个所述客户端,当前客户端用于向指定第一服务器发送长链接注册请求,通过所述指定第一服务器将所述长链接注册请求发送至指定第二服务器;其中,所述长链接注册请求中携带有所述当前客户端的标识信息;所述指定第二服务器通过轮询方式确定;
所述指定第二服务器用于将所述当前客户端的标识信息与所述当前客户端进行绑定,通过所述指定第一服务器将绑定成功消息返回至所述当前客户端,以建立所述当前客户端与所述指定第一服务器之间的长链接。
3.根据权利要求2所述的系统,其特征在于,每个所述第一服务器设置有多个客户端连接点;所述指定第一服务器通过下述方式确定:
确定每个所述第一服务器对应的未连接客户端的空闲连接点数量;
将所述空闲连接点数量最多的第一服务器确定为所述指定第一服务器。
4.根据权利要求1所述的系统,其特征在于,所述系统还包括第三服务器;所述第三服务器用于接收每个所述第一服务器的第一长链接注册请求,以注册每个所述第一服务器,保存每个所述第一长链接注册请求中携带的第一服务器的通讯地址;
所述第三服务器用于接收每个所述第二服务器的第二长链接注册请求,以注册每个所述第二服务器,将每个所述第一服务器的通讯地址发送至每个所述第二服务器,以建立每个所述第一服务器与每个所述第二服务器之间的长链接。
5.根据权利要求4所述的系统,其特征在于,
所述第三服务器还用于,如果接收到新的第一服务器的新的长链接注册请求,注册所述新的第一服务器,保存所述新的长链接注册请求中携带的所述新的第一服务器的通讯地址,将所述新的第一服务器的通讯地址发送至每个所述第二服务器,以建立所述新的第一服务器与每个所述第二服务器之间的长链接。
6.根据权利要求4所述的系统,其特征在于,所述第三服务器还用于,
每间隔第一预设时间,检查每个所述第一服务器在所述第一预设时间内发送预设数据的发送次数;其中,每个所述第一服务器每间隔第二预设时间向所述第三服务器发送所述预设数据;第二预设时间短于所述第一预设时间;
如果目标第一服务器对应的发送次数为零,确定所述目标第一服务器下线。
7.根据权利要求6所述的系统,其特征在于,
所述第三服务器还用于,当确定所述目标第一服务器下线后,注销所述目标第一服务器,向每个所述第二服务器发送消息,以指示每个所述第二服务器取消与所述目标第一服务器之间的长链接。
8.根据权利要求4所述的系统,其特征在于,所述第三服务器还用于,当启动进程后,检查当前运行环境。
9.根据权利要求4所述的系统,其特征在于,每个所述第一服务器中运行有多个子进程;
每个客户端通过各自对应的子进程与每个所述第一服务器之间建立长链接。
10.一种即时通讯方法,其特征在于,所述方法包括:
针对每个第一服务器,当前第一服务器当监听到来自所连接的第一客户端的数据传输请求时,将所述数据传输请求发送至目标第二服务器;其中,所述数据传输请求中携带有待传输数据和待访问客户端的标识信息;所述目标第二服务器通过轮询方式确定;
所述目标第二服务器对所述待传输数据进行逻辑处理得到返回数据,根据所述待访问客户端的标识信息,将所述返回数据发送至所述待访问客户端连接的第一服务器,通过所述待访问客户端连接的第一服务器将所述返回数据发送至所述待访问客户端。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210964562.2A CN115037785B (zh) | 2022-08-12 | 2022-08-12 | 即时通讯系统及方法 |
PCT/CN2023/096600 WO2024032094A1 (zh) | 2022-08-12 | 2023-05-26 | 即时通讯系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210964562.2A CN115037785B (zh) | 2022-08-12 | 2022-08-12 | 即时通讯系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115037785A true CN115037785A (zh) | 2022-09-09 |
CN115037785B CN115037785B (zh) | 2022-11-01 |
Family
ID=83130698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210964562.2A Active CN115037785B (zh) | 2022-08-12 | 2022-08-12 | 即时通讯系统及方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115037785B (zh) |
WO (1) | WO2024032094A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024032094A1 (zh) * | 2022-08-12 | 2024-02-15 | 深圳市星卡软件技术开发有限公司 | 即时通讯系统及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017185961A1 (zh) * | 2016-04-26 | 2017-11-02 | 中兴通讯股份有限公司 | 一种服务发现的处理方法及装置 |
CN109587275A (zh) * | 2019-01-08 | 2019-04-05 | 网宿科技股份有限公司 | 一种通信连接的建立方法及代理服务器 |
CN111447185A (zh) * | 2020-03-10 | 2020-07-24 | 平安科技(深圳)有限公司 | 一种推送信息的处理方法及相关设备 |
WO2020253596A1 (zh) * | 2019-06-21 | 2020-12-24 | 深圳前海微众银行股份有限公司 | 一种Redis集群的高可用方法及装置 |
CN112291298A (zh) * | 2020-09-18 | 2021-01-29 | 云镝智慧科技有限公司 | 异构系统的数据传输方法、装置、计算机设备和存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067359A (zh) * | 2012-12-14 | 2013-04-24 | 北京思特奇信息技术股份有限公司 | 一种基于连接复用的提高服务器并发处理能力的系统及方法 |
CN109600302A (zh) * | 2018-11-27 | 2019-04-09 | 金瓜子科技发展(北京)有限公司 | 一种有序通讯的方法、装置、存储介质及电子设备 |
CN113364818B (zh) * | 2020-03-03 | 2022-08-30 | 北京搜狗科技发展有限公司 | 一种数据处理方法、装置和电子设备 |
US20220210133A1 (en) * | 2020-12-29 | 2022-06-30 | Microsoft Technology Licensing, Llc | Interim connections for providing secure communication of content between devices |
CN114095465A (zh) * | 2021-11-17 | 2022-02-25 | 北京同城必应科技有限公司 | 一种在分布式环境下高效的im消息时序性保障机制实现方法 |
CN115037785B (zh) * | 2022-08-12 | 2022-11-01 | 深圳市星卡软件技术开发有限公司 | 即时通讯系统及方法 |
-
2022
- 2022-08-12 CN CN202210964562.2A patent/CN115037785B/zh active Active
-
2023
- 2023-05-26 WO PCT/CN2023/096600 patent/WO2024032094A1/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017185961A1 (zh) * | 2016-04-26 | 2017-11-02 | 中兴通讯股份有限公司 | 一种服务发现的处理方法及装置 |
CN109587275A (zh) * | 2019-01-08 | 2019-04-05 | 网宿科技股份有限公司 | 一种通信连接的建立方法及代理服务器 |
WO2020253596A1 (zh) * | 2019-06-21 | 2020-12-24 | 深圳前海微众银行股份有限公司 | 一种Redis集群的高可用方法及装置 |
CN111447185A (zh) * | 2020-03-10 | 2020-07-24 | 平安科技(深圳)有限公司 | 一种推送信息的处理方法及相关设备 |
CN112291298A (zh) * | 2020-09-18 | 2021-01-29 | 云镝智慧科技有限公司 | 异构系统的数据传输方法、装置、计算机设备和存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024032094A1 (zh) * | 2022-08-12 | 2024-02-15 | 深圳市星卡软件技术开发有限公司 | 即时通讯系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2024032094A1 (zh) | 2024-02-15 |
CN115037785B (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8914449B2 (en) | Push messaging platform with high scalability and high availability | |
US20060069776A1 (en) | System and method for load balancing a communications network | |
CN101447989A (zh) | 用于改进的高可用性组件实现的系统和方法 | |
JP2000276432A (ja) | トランザクション・メッセージの動的負荷分散方式 | |
US20230015960A1 (en) | Method and Apparatus for Establishing Forwarding Path, and Computer-Readable Storage Medium | |
CN110971698A (zh) | 一种数据转发系统、方法及装置 | |
US11381501B2 (en) | Coordinating pseudowire connection characteristics and multi-homed provider edge device capabtilities | |
CN115037785B (zh) | 即时通讯系统及方法 | |
EP2706737B1 (en) | Method, device, and system for obtaining address of sip registration server | |
US10567262B1 (en) | Dynamic server device monitoring | |
CN111327650A (zh) | 数据传输方法、装置、设备及存储介质 | |
CN106375355B (zh) | 负载均衡处理方法及装置 | |
CN109120556B (zh) | 一种云主机访问对象存储服务器的方法及系统 | |
CN111294358B (zh) | 报文的处理方法及装置 | |
WO2013159492A1 (zh) | 信息上报与下载的方法及系统 | |
CN111555965A (zh) | 一种适用于iOS客户端的消息推送方法及系统 | |
CN110995609A (zh) | 报文发送方法、装置、电子设备及存储介质 | |
CN110601989A (zh) | 一种网络流量均衡方法及装置 | |
TWI477113B (zh) | Information processing methods and systems | |
CN114095465A (zh) | 一种在分布式环境下高效的im消息时序性保障机制实现方法 | |
CN106209666B (zh) | 一种基于负载均衡器的链路复用方法及系统 | |
CN114844847A (zh) | 一种高可靠性的实时消息分发方法及装置 | |
CN108093147B (zh) | 一种分布式多级调度方法和设备 | |
CN111835576B (zh) | 基于dpvs的后端服务器健康检测方法和服务器 | |
CN117692458B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231207 Address after: 518100 2606, Building 4, Phase II, Tian'an Yungu Industrial Park, Gangtou Community, Bantian Street, Longgang District, Shenzhen City, Guangdong Province Patentee after: Shenzhen xingka Technology Co.,Ltd. Address before: Room 2604, Building 4, Phase II, Tianan Yungu Industrial Park, Gangtou Community, Bantian Street, Longgang District, Shenzhen, Guangdong 518100 Patentee before: Shenzhen xingka Software Technology Development Co.,Ltd. |