CN109688225B - 一种通信方法及装置 - Google Patents
一种通信方法及装置 Download PDFInfo
- Publication number
- CN109688225B CN109688225B CN201910017359.2A CN201910017359A CN109688225B CN 109688225 B CN109688225 B CN 109688225B CN 201910017359 A CN201910017359 A CN 201910017359A CN 109688225 B CN109688225 B CN 109688225B
- Authority
- CN
- China
- Prior art keywords
- chat
- module
- information
- client
- interface
- 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.)
- Active
Links
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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供了一种通信方法及装置,应用于服务器集群,所述服务器集群部署有管理进程、聊天进程、广播进程、接口进程、监控进程和全局进程,所述方法包括:接口进程接收客户端发送的聊天信息,所述接口进程将所述聊天信息发送到广播进程;所述广播进程将所述聊天信息发送到聊天进程;所述管理进程将所述聊天进程接收到的聊天信息存储到第一数据库内;所述全局进程从所述第一数据库中读取所述聊天信息,并将所述聊天信息发送到相对应的聊天进程;所述聊天进程将接收到的聊天信息发送到广播进程;所述广播进程将接收到的聊天信息发送到相连接的接口进程;所述接口进程将聊天信息发送到目标客户端。本申请的信息交互快速,能降低服务器负担。
Description
技术领域
本发明涉及网络通信技术领域,特别是涉及一种通信方法和一种通信装置。
背景技术
现代网络游戏一般会采用分服的方式管理玩家,不同的玩家登陆到不同的服务器上。网络游戏内的副本组队聊天、大厅内广播公告都会根据玩家登陆的进程,分配到不同的聊天进程上。
因为聊天的分散性,游戏中的聊天消息种类较多,每个模块都需要重复开发,浪费大量的人力物力。游戏系统中的聊天无法充分利用数据库来保证聊天系统的可靠性。大部分游戏中的聊天消息都会在玩家突然离线的时候被舍弃掉。聊天功能受限于服务器的人数。网络游戏中难免出现某些服务器人多,某些服务器人少的情况。对于登陆人数较多的服务器,服务器压力过大,玩家卡顿感明显,发送消息延迟大。对于登陆人数较少服务器,因为人数较少,服务器负载过低,又造成资源浪费。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种通信方法和相应的一种通信装置。
为了解决上述问题,本发明实施例公开了一种通信方法,应用于服务器集群,所述服务器集群部署有至少一个管理进程、至少一个聊天进程、至少一个广播进程、至少一个接口进程、至少一个监控进程和至少一个全局进程,所述方法包括:
接口进程接收客户端发送的聊天信息,所述接口进程将所述聊天信息发送到广播进程;
所述广播进程将所述聊天信息发送到聊天进程;
所述管理进程将所述聊天进程接收到的聊天信息存储到第一数据库内;
所述全局进程从所述第一数据库中读取所述聊天信息,并将所述聊天信息发送到相对应的聊天进程;
所述聊天进程将接收到的聊天信息发送到广播进程;
所述广播进程将接收到的聊天信息发送到相连接的接口进程;
所述接口进程将聊天信息发送到目标客户端。
可选地,所述接口进程接收所述客户端发送的登陆信息,并将所述登陆信息发送到聊天进程;
所述聊天进程根据所述登陆信息判断所述客户端是否初次登陆;
若所述客户端是初次登陆,则所述聊天进程对所述登陆信息进行校验;
若校验成功,则所述聊天进程将所述登陆信息存储到所述第一数据库。
可选地,若所述客户端不是初次登陆,则所述聊天进程确定所述客户端曾经登陆的其他聊天进程;
所述聊天进程将所述客户端配置到客户端上一次所登陆的其他聊天进程。
可选地,所述聊天进程设有至少一种类型的频道模块,所述方法还包括:
所述聊天进程将所述客户端分配到该聊天进程所设有的至少一个频道模块中。
可选地,所述聊天进程采用预设的分配器,确定自身设有的每一频道模块的人数;
若一频道模块的人数达到预设人数阈值,则所述聊天进程将该频道分裂为相同类型的多个频道。
可选地,所述全局进程接收客户端发送的频道查询请求,并查询所述频道查询请求指定的频道所对应的当前聊天进程;
所述全局进程向所述客户端发送所述当前聊天进程的信息,以使所述客户端从当前聊天进程发起频道切换请求;
所述当前聊天进程根据所述频道切换请求,将所述客户端从所述当前聊天进程切换到所述频道切换请求指定的聊天频道。
可选地,所述当前聊天进程根据所述频道切换请求,将所述客户端从所述当前聊天进程切换到所述频道切换请求指定的聊天频道,包括:
所述当前聊天进程确定所述频道切换请求所指定的聊天频道是否在所述当前聊天进程;
若是,则所述当前聊天进程将所述客户端从所述当前聊天进程切换到所述频道切换请求指定的聊天频道;
若否,则所述当前聊天进程向所述频道切换请求指定的聊天频道所对应的目标聊天进程,发送所述频道切换请求;
所述目标聊天进程根据所述频道切换请求,将所述客户端从所述当前聊天进程切换到所述频道切换请求指定的聊天频道。
可选地,所述聊天进程将接收到的聊天信息发送到广播进程,包括:
所述聊天进程确定所述聊天信息所对应的目标频道,以及确定所述目标频道所对应的目标接口进程;
所述聊天进程将所述聊天信息,发送至任意一个广播进程。
可选地,所述接口进程将聊天信息发送到目标客户端,包括:
所述接口进程确定与所述聊天信息对应的频道所对应的目标客户端;
所述接口进程将聊天信息发送到目标客户端。
可选地,所述管理进程将所述聊天进程接收到的聊天信息存储到第一数据库内,包括:
所述管理进程接收客户端发送的聊天信息持久化请求;
所述管理进程根据所述持久化请求,将该客户端的聊天信息持久化存储到所述第二数据库。
可选地,所述全局进程测量所述第一数据库中聊天信息量是否满足预设的信息量阈值;
若聊天信息量不满足预设的信息量阈值,则全局进程对服务器进行缩容;
若聊天信息量超过预设的信息量阈值,则全局进程对服务器进行扩容。
可选地,所述全局进程对服务器的缩容,包括:
全局进程接收到需要缩容的服务器的IP地址;
所述全局进程查询ip地址所在服务器的在线状态和分配情况;
若所述的IP地址所对应的服务器具有在运行的聊天进程,且所述运行的聊天进程正在处理发送或接收聊天消息,则所述全局进程将所述运行的聊天进程所在的服务器标记为第一服务器,第一服务器为需要优先屏蔽的服务器;
所述全局进程向所有聊天进程发送IP地址查询请求;
所述聊天进程根据所述IP地址查询请求,查询聊天进程所在服务器的 IP地址;
若所述聊天进程所在服务器的IP地址与所述第一服务器的IP地址相同,则所述全局进程将该聊天进程标记为第一聊天进程,第一聊天进程为不再配置新的客户端的聊天进程;
所述聊天进程向所有的接口进程发送IP地址查询请求;
所述接口进程根据上述IP地址查询请求,查询接口进程所在服务器的 IP地址;
若所述接口进程所在服务器的IP地址与所述第一服务器的IP地址相同,则所述全局进程将该接口进程标记为第一接口进程,第一接口进程为不再配置新的客户端的接口进程;
所述全局进程将所述第一接口进程从预设的可用接口进程列表中删除;
当所述第一服务器上的第一聊天进程和第一接口进程都不具有聊天信息时,所述全局进程关闭所述第一服务器,并将所述第一接口进程从预置的接口列表中删除。
可选地,全局进程对服务器进行扩容还包括:
所述全局进程获取待扩容的服务器的IP地址,并将所述IP地址存储到预置的第三数据库;
所述全局进程确定所述待扩容的服务器所部署有的接口进程,并将所述待扩容的服务器所部署有的接口进程添加到预置的接口进程列表。
可选地,所述监控进程监测第一数据库的数据变化和各个进程的心跳数据。
本申请还公开了一种通信装置,包括部署在服务器集群的至少一个管理进程模块、至少一个聊天进程模块、至少一个广播进程模块、至少一个接口进程模块、至少一个监控进程模块和至少一个全局进程模块;
所述接口进程模块用于接收客户端发送的聊天信息,并将所述聊天信息发送到广播进程模块;
所述广播进程模块用于将所述聊天信息发送到聊天进程模块;
所述管理进程模块将所述聊天进程模块接收到的聊天信息存储到第一数据库内;
所述全局进程模块用于从所述第一数据库中读取所述聊天信息,并将所述聊天信息发送到相对应的聊天进程模块;
所述聊天进程模块还用于将接收到的聊天信息发送到广播进程模块;
所述广播进程模块还用于将接收到的聊天信息发送到相连接的接口进程模块;
所述接口进程模块还用于将聊天信息发送到目标客户端;
所述监控进程模块用于监测第一数据库的数据变化和各个进程模块的心跳数据。
可选地,所述接口进程模块还用于接收所述客户端发送的登陆信息,并将所述登陆信息发送到聊天进程模块;
所述聊天进程模块还用于根据所述登陆信息,判断所述客户端是否初次登陆;若所述客户端是初次登陆,则对所述登陆信息进行校验;若校验成功,则将所述登陆信息存储到所述第一数据库。
可选地,所述聊天进程模块还用于若所述客户端不是初次登陆,则确定所述客户端曾经登陆的其他聊天进程模块;将所述客户端配置到客户端上一次所登陆的其他聊天进程模块。
可选地,所述聊天进程模块设有至少一种类型的频道;
所述聊天进程模块还用于将所述客户端分配到该聊天进程模块所设有的至少一个频道中。
可选地,所述聊天进程模块还用于采用预设的分配器,确定自身设有的每一频道的人数;若一频道的人数达到预设人数阈值,则将该频道分裂为相同类型的多个频道。
可选地,所述全局进程模块还用于接收客户端发送的频道查询请求,并查询所述频道查询请求指定的频道所对应的当前聊天进程模块;向所述客户端发送所述当前聊天进程模块的信息,以使所述客户端从当前聊天进程模块发起频道切换请求;根据所述频道切换请求,将所述客户端从所述当前聊天进程模块切换到所述频道切换请求指定的聊天频道。
可选地,所述当前聊天进程模块用于确定所述频道切换请求所指定的聊天频道是否在所述当前聊天进程模块;若是,则将所述客户端从所述当前聊天进程模块切换到所述频道切换请求指定的聊天频道;若否,则向所述频道切换请求指定的聊天频道所对应的目标聊天进程模块,发送所述频道切换请求;
所述目标聊天进程模块用于根据所述频道切换请求,将所述客户端从所述当前聊天进程模块切换到所述频道切换请求指定的聊天频道。
可选地,所述聊天进程模块用于确定所述聊天信息所对应的目标频道,以及确定所述目标频道所对应的目标接口进程模块;将所述聊天信息,发送至任意一个广播进程模块。
可选地,所述接口进程模块用于确定与所述聊天信息对应的频道所对应的目标客户端;将聊天信息发送到目标客户端。
可选地,所述管理进程模块用于接收客户端发送的聊天信息持久化请求;根据所述持久化请求,将该客户端的聊天信息持久化存储到所述第二数据库。
可选地,所述全局进程模块用于测量所述第一数据库中聊天信息量是否满足预设的信息量阈值;若聊天信息量不满足预设的信息量阈值,则对服务器进行缩容;若聊天信息量超过预设的信息量阈值,则对服务器进行扩容。
可选地,所述全局进程模块用于接收到需要缩容的服务器的IP地址;查询所述IP地址所在服务器的在线状态和分配情况;若所述的IP地址所对应的服务器具有在运行的聊天进程模块,且所述运行的聊天进程模块正在处理发送或接收聊天消息,则将所述运行的聊天进程模块所在的服务器标记为第一服务器,第一服务器为需要优先屏蔽的服务器;向所有聊天进程模块发送IP地址查询请求;
所述聊天进程模块用于根据所述IP地址查询请求,查询聊天进程模块所在服务器的IP地址;
所述全局进程模块用于若所述聊天进程模块所在服务器的IP地址与所述第一服务器的IP地址相同,则将该聊天进程模块标记为第一聊天进程模块,第一聊天进程模块为不再配置新的客户端的聊天进程模块;
所述聊天进程模块用于向所有的接口进程模块发送IP地址查询请求;
所述接口进程模块用于根据上述IP地址查询请求,查询接口进程模块所在服务器的IP地址;
所述全局进程模块用于若所述接口进程模块所在服务器的IP地址与所述第一服务器的IP地址相同,则将该接口进程模块标记为第一接口进程模块,第一接口进程模块为不再配置新的客户端的接口进程模块;并将所述第一接口进程模块从预设的可用接口进程模块列表中删除;当所述第一服务器上的第一聊天进程模块和第一接口进程模块都不具有聊天信息时,关闭所述第一服务器,并将所述第一接口进程模块从预置的接口列表中删除。
可选地,所述全局进程模块用于获取待扩容的服务器的IP地址,并将所述IP地址存储到预置的第三数据库;确定所述待扩容的服务器所部署有的接口进程模块,并将所述待扩容的服务器所部署有的接口进程模块添加到预置的接口进程模块列表。
本申请还包括一种装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如权利要求1-14所述的一个或多个的方法。
本申请还包括一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-14所述的一个或多个的方法
本发明实施例包括以下优点:
在本发明的实施例中,客户端只需要将聊天信息发送到广播进程,由广播进程将聊天信息发送到聊天进程,然后管理进程将聊天进程接收到的信息存储到数据库中,接着全局进程从数据库中读取聊天信息,将聊天信息分配发送到相对应的聊天进程里,然后聊天进程将聊天信息发送给任意广播进程,由广播进程将聊天信息发送到与该聊天进程相连接的接口进程,最后接口进程将聊天信息发送给目标客户端。整个信息的发送交互过程简单快速,并且加入了广播进程能有效降低聊天进程的压力,聊天进程从原来分配聊天信息,然后发送多条聊天信息,到只需要发送一条聊天信息即可,大大减轻了聊天进程的压力,并且所有进程随意组合在不同的服务器上,而是交叉的分配在不同的物理主机,可以避免某一个服务器的故障,导致游戏中断,有效提高了游戏质量。
附图说明
图1是本发明的一种通信方法实施例的步骤流程图;
图2是本发明的一种通信方法实施例二的步骤流程图;
图3是本发明实施例二中服务器集群的进程的示意图;
图4是本发明实施例二中接口进程连接客户端的示意图;
图5是本发明实施例二中客户端登录校验的示意图;
图6是本发明实施例二中管理进程存储数据的示意图;
图7是本发明实施例二中频道模块类型的示意图;
图8是本发明实施例二中聊天进程对频道模块分配服务器集群的进程示意图的示意图;
图9是本发明实施例二中全局进程对客户端进行频道切换的示意图;
图10是本发明实施例二中全局进程对服务器进行缩容的示意图;
图11是本发明实施例二中聊天进程将聊天信息发送到广播进程的示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本发明的一种通信方法实施例的步骤流程图,该方法应用于服务器集群,所述服务器集群部署有至少一个管理进程、至少一个聊天进程、至少一个广播进程、至少一个接口进程、至少一个监控进程和至少一个全局进程;聊天服务集群是一个由多台物理主机组成的为游戏提供聊天的服务的服务器群。每台服务器上会运行一些进程,而进程并不是必须运行在固定的服务器上,可以随意组合,也可以为了避免某一个服务器的故障,而交叉的分配在不同的物理主机上。
该方法具体可以包括如下步骤:
步骤101,接口进程接收客户端发送的聊天信息,并将所述聊天信息发送到广播进程;
每一个接口进程接收一个客户端发送的聊天信息,接口进程与客户端一一对应。
步骤102,所述广播进场将所述聊天信息发送到聊天进程;
广播进程可以同时接收多个接口进程发送的聊天信息,再将聊天信息发送给聊天进程,使用广播进程可以减轻聊天进程的压力。
步骤103,所述管理进程将所述聊天进程接收到的聊天信息存储到第一数据库内;
管理进程将聊天信息存储到第一数据库内以作备份,能有效提高整个游戏的安全性,同时在调用聊天信息数据时也更加方便。
步骤104,所述全局进程从所述第一数据库中读取所述聊天信息,并将所述聊天信息发送到相对应的聊天进程;
全局进程用来统一分配全局的数据,备份储存好的聊天信息数据由全局进程从第一数据库中读取出来,将聊天信息发送到相对应的聊天进程,由于聊天进程与多个接口进程相连,而不同的聊天进程与不同的接口进程相连,接口进程与客户端有一一对应的关系,因此在发送聊天信息时,需要将聊天信息发送到相对应的聊天进程上。
步骤105,所述聊天进程将接收到的聊天信息发送到广播进程;
聊天进程与广播进程没有一一对应的关系,聊天进程可以任意对接任何广播进程,并且广播进程能减少聊天进程的聊天信息发送的压力,在聊天信息发送过程中,如一个客户端需要群发一条聊天信息,则该聊天信息可能需要发送给多个玩家,那么对于发送信息的聊天进程来说,聊天信息发送的压力会很大。通过加入广播进程,聊天进程只需要把消息发送个任一一个广播进程,然后广播进程在把聊天信息发送给N个接入的接口进程。这样聊天就由原来的需要接受信息,发送N条信息,变为接受一条信息,发送一条信息。而发送信息的任务就交给了广播进程。而广播进程在部署过程中,可以是多个,这样可以避免因为发送压力过大,而给聊天进程对外服务的逻辑带来影响,从而减少了上一层聊天进程的压力。
步骤106,所述广播进程将接收到的聊天信息发送到相连接的接口进程;
而广播进程在接收到聊天进程的发送的聊天信息后,可以发送到相连接的单一接口进程或多个接口进程,实现广播发送信息的功能。
步骤107,所述接口进程将聊天信息发送到目标客户端;
目标客户端可以快速接收到聊天信息。
在本发明的实施例中,客户端只需要将聊天信息发送到广播进程,由广播进程将聊天信息发送到聊天进程,然后管理进程将聊天进程接收到的信息存储到数据库中,接着全局进程从数据库中读取聊天信息,将聊天信息分配发送到相对应的聊天进程里,然后聊天进程将聊天信息发送给任意广播进程,由广播进程将聊天信息发送到与该聊天进程相连接的接口进程,最后接口进程将聊天信息发送给目标客户端。整个信息过程简单快速,并且加入了广播进程能有效降低聊天进程的压力,聊天进程从原来分配聊天信息,然后发送多条聊天信息,到只需要发送一条聊天信息即可,大大减轻了聊天进程的压力,并且所有进程随意组合在不同的服务器上,而是交叉的分配在不同的物理主机,可以避免某一个服务器的故障,导致游戏中断,有效提高了游戏质量。
参照图2,示出了本发明的一种通信方法实施例二的步骤流程图,所述方法应用于服务器集群,参照图3,示出了本实施例的服务器集群的进程的示意图,所述服务器集群部署有至少一个管理进程、至少一个聊天进程、至少一个广播进程、至少一个接口进程、至少一个监控进程和至少一个全局进程,该方法具体可以包括如下步骤:
步骤201,接口进程接收客户端发送的聊天信息,并将所述聊天信息发送到广播进程;
参照图4为本实施例中接口进程连接客户端的示意图,每一个接口进程接收一个客户端发送的聊天信息,接口进程与客户端一一对应,在接入接口进程时,客户端从接口列表中自由接入的接口进程接口,又或者通过随机分配的方式接入接口进程的接口。
在本实施例中,步骤201可以包括以下子步骤:
子步骤S11,所述接口进程接收所述客户端发送的登陆信息,并将所述登陆信息发送到聊天进程;
子步骤S12,所述聊天进程根据所述登陆信息,判断所述客户端是否初次登陆;
参照图5为本实施例中客户端登录校验的示意图,每次在客户端登录前,接口进程都需要对其进程校验。
若所述客户端是初次登陆,则所述聊天进程对所述登陆信息进行校验;
若校验成功,则所述聊天进程将所述登陆信息存储到所述第一数据库。
客户端在发送聊天信息前,需要先登录,在登录后才能发送信息。
若所述客户端不是初次登陆,则所述聊天进程确定所述客户端曾经登陆的其他聊天进程;所述聊天进程将所述客户端配置到客户端上一次所登陆的其他聊天进程。
校验客户端的登录信息是为了能使接口进程与客户端是一一对应的关系,同时在登录时将客户端的登录信息储存到数据库中,为了避免客户端在游戏过程中突然掉线,而无法重现登录到原有的聊天进程,继续原来的聊天,从而降低了客户端的用户体验,并且在掉线重新登录后,玩家也能接收到因掉线而无法接收的信息。
步骤202,所述广播进场将所述聊天信息发送到聊天进程;
广播进程可以同时接收多个接口进程发送的聊天信息,再将聊天信息发送给聊天进程,使用广播进程可以减轻聊天进程的压力。
步骤203,所述管理进程将所述聊天进程接收到的聊天信息存储到第一数据库内;
参照图6为本实施例中管理进程存储数据的示意图,管理进程将聊天信息存储到第一数据库内以作备份,能有效提高整个游戏的安全性,同时在调用聊天信息数据时也更加方便。
在本实施例中,步骤203可以包括以下子步骤:
子步骤S21,所述管理进程将所述聊天进程接收到的聊天信息存储到第一数据库内;
子步骤S22,所述管理进程接收客户端发送的聊天信息持久化请求;
子步骤S23,所述管理进程根据所述持久化请求,将该客户端的聊天信息持久化存储到所述第二数据库。
处理客户端的聊天信息可以存储以外,对于系统消息、其他聊天的变种信息也可以通过设置来确定是否保存。如果需要保存,那么会首先查询内存数据库得到玩家最新的应该保存的消息ID。然后插入数据库比如 Mongodb这一类可以存储大量数据的文档型数据库中。在插入完成以后通知玩家,若玩家有多个设备则通知不同的设备拉取读取的历史数据的差异。
如图6所示,玩家A依次发送了消息编号为1,2,3,4的消息给玩家B,并通过聊天进程存储到Mongodb这种文档型数据库中,并将消息编号存储在内存数据库中,玩家B收到消息后去查询内存数据库,通过比对本地已经收到的消息id是小于1的,那么Mongodb的数据库就会给B玩家返回编号为1,2,3,4的四条信息。这样即使玩家的网络不好,没有收到数据,也可以通过下次拉取,获取所有的没有拉取到本地的数据了。
步骤204,所述全局进程从所述第一数据库中读取所述聊天信息,将所述聊天信息发送到相对应的聊天进程;
全局进程用来统一分配全局的数据,备份储存好的聊天信息数据由全局进程从第一数据库中读取出来,将聊天信息发送到相对应的聊天进程,由于聊天进程与多个接口进程相连,而不同的聊天进程与不同的接口进程相连,接口进程与客户端有一一对应的关系,因此在发送聊天信息时,需要将聊天信息发送到相对应的聊天进程上。
所述聊天进程设有至少一种类型的频道模块,所述聊天进程将所述客户端分配到该聊天进程所设有的至少一个频道模块中。
参照图7为本实施例中频道模块类型的示意图,本实施例中所述频道模块共设有三种类型的频道模块,一种是大厅聊天频道模块,该大厅聊天频道模块人数没有上线,大厅聊天频道模块内会自动分为多个大厅聊天频道,每个大厅聊天频道之间不互联,频道之间可以自由切换,玩家在1频道的信息不会被2频道的人收到,但是玩家可以自由切换到频道2与这些频道的玩家聊天,该类型为游戏内的世界聊天、大厅聊天、大厅内跑马灯类型提供支持;第二种是群组频道模块,该群组频道模块人数有上限,模块内部不会区分频道,玩家的消息会被每一个玩家收到,这种模式为游戏中战队、组队类的聊天及队伍内部的通知类消息提供支持;第三种是弹幕模块,弹幕模块没有人数上限,弹幕模块内部会被自动分为多个频道,频道由父频道分裂而成,玩家收到频道内的消息,但玩家不能自由切换频道。这种弹幕模块为游戏内的观战弹幕、游戏内的跨服玩法、游戏内抽奖提示提供支持。另外频道的分配详情也可以通过内存数据库保存。
另外,因为游戏的宣传和推广,可能会有大量的玩家同时涌入观看同一场比赛,那么观看一场比赛的频道人数过多的时候就需要进行分裂。如玩家本来在弹幕频道1,但是因为目前人数过多,需要将频道分裂为两个。那么玩家就会同时进入两个弹幕频道,从而接受消息。这是为了保证不会因为分裂频道导致玩家收不到消息。分裂后的频道也属于同一个聊天进程,玩家可以在这同一个进程中自由切换。
参照图8为本实施例中聊天进程对频道模块分配聊天消息的示意图,聊天进程将不同的聊天信息分配到不同的聊天进程的频道模块中,再从不同的频道模块将聊天信息发送给不同的接口进程;
聊天进程对聊天信息分配的步骤可以包括以下子步骤:
子步骤S31,所述聊天进程采用预设的分配器,确定自身设有的每一频道模块的人数;
子步骤S32,若一频道模块的人数达到预设人数阈值,则所述聊天进程将该频道分裂为相同类型的多个频道。
参照图9为本实施例中全局进程对客户端进行频道切换的示意图,客户端的频道切换步骤可以包括以下子步骤:
子步骤S41,所述全局进程接收客户端发送的频道查询请求,并查询所述频道查询请求指定的频道所对应的当前聊天进程;
子步骤S42,所述全局进程向所述客户端发送所述当前聊天进程的信息,以使所述客户端从当前聊天进程发起频道切换请求;
子步骤S43,所述当前聊天进程根据所述频道切换请求,将所述客户端从所述当前聊天进程切换到所述频道切换请求指定的聊天频道;
所述子步骤S43具体可以包括:所述当前聊天进程确定所述频道切换请求所指定的聊天频道是否在所述当前聊天进程;
若是,则所述当前聊天进程将所述客户端从所述当前聊天进程切换到所述频道切换请求指定的聊天频道;
若否,则所述当前聊天进程向所述频道切换请求指定的聊天频道所对应的目标聊天进程,发送所述频道切换请求;
所述目标聊天进程根据所述频道切换请求,将所述客户端从所述当前聊天进程切换到所述频道切换请求指定的聊天频道。
加入频道切换后,能提高玩家的用户体验,同时也不会因频道分裂而导致玩家收不到消息。并且在等待一段时间游戏的宣传和推广结束后,玩家随机退出一个频道,因为退出时随机的,所以两个房间人数会相似,也能将服务器上承载的玩家数量差异被磨平,不会出现某个服务器负载高而某个服务器负载不足的不平衡情况,使得服务器运行更加合理。
在本实施例中,所述的方法还可以包括:所述全局进程测量第一数据库中聊天信息量是否满足预设的信息量阈值;
若聊天信息量不满足预设的信息量阈值,则全局进程对服务器进行缩容;
若聊天信息量超过预设的信息量阈值,则全局进程对服务器进行扩容。
具体的,所述全局进程对第一数据库发送信息量查询请求,所述第一数据库根据所述信息量查询请求对进行查询,并将查询结果发送给所述全局进程;所述全局进程对查询结果与预设的信息量阈值作比较;
加入了信息量查询功能对服务器的扩容或缩容判断,在玩家数量多或者聊天信息量大、玩家活跃的时候进行扩容,在玩家数量小或者聊天信息量小的时候进行缩容,能使得服务器在运行时更合理,避免了资源的浪费,保证整个系统的稳定、高效的运行。
参照图10为本实施例中全局进程对服务器进行缩容的示意图,在全局进程测量到第一数据库的聊天信息量不满足预设的信息量阈值时,对服务器进行缩容;
在本实施例中,全局进程对服务器进行缩容的步骤可以包括以下子步骤:
子步骤S51,全局进程接收到需要缩容的服务器的IP地址;
子步骤S52,所述全局进程查询IP地址所在服务器的在线状态和分配情况;
子步骤S53,若所述的IP地址列表所对应的服务器具有在运行的聊天进程,且所述运行的聊天进程正在处理发送或接收聊天消息,则所述全局进程将所述运行的聊天进程所在的服务器标记为第一服务器,第一服务器为需要优先屏蔽的服务器;
子步骤S54,所述全局进程向所有聊天进程发送IP地址查询请求;
子步骤S55,所述聊天进程根据所述IP地址查询请求,查询聊天进程所在服务器的IP地址;
子步骤S56,若所述聊天进程所在服务器的IP地址与所述第一服务器的 IP地址相同,则所述全局进程将该聊天进程标记为第一聊天进程,第一聊天进程为不再配置新的客户端的聊天进程;
子步骤S57,所述聊天进程向所有的接口进程发送IP地址查询请求;
子步骤S58,所述接口进程根据上述IP地址查询请求,查询接口进程所在服务器的IP地址;
子步骤S59,若所述接口进程所在服务器的IP地址与所述第一服务器的 IP地址相同,所述全局进程将该接口进程标记为第一接口进程,第一接口进程为不再配置新的客户端的接口进程,并将所述第一接口进程从预设的可用接口进程列表中删除;
当所述第一服务器上的第一聊天进程和第一接口进程都不具有聊天信息时,则关闭所述第一服务器,并将所述第一接口进程从预置的接口列表中删除。
在本实施例中,全局进程对服务器进程扩容的步骤可以包括以下子步骤:
子步骤S61,所述全局进程获取待扩容的服务器的IP地址,并将所述IP 地址存储到预置的第三数据库;
子步骤S62,所述全局进程确定所述待扩容的服务器所部署有的接口进程,并将所述待扩容的服务器所部署有的接口进程添加到预置的接口进程列表。
步骤205,所述聊天进程将接收到的聊天信息发送到广播进程;
参照图11为本实施例中聊天进程将聊天信息发送到广播进程的示意图,所述聊天进程将接收到的聊天信息发送到广播进程的步骤可以包括以下子步骤:
子步骤S71,所述聊天进程确定所述聊天信息所对应的目标频道,以及确定所述目标频道所对应的目标接口进程;
子步骤S72,所述聊天进程将所述聊天信息,发送至任意一个广播进程。
聊天进程与广播进程没有一一对应的关系,聊天进程可以任意对接任何广播进程,并且广播进程能减少聊天进程的聊天信息发送的压力,在聊天信息发送过程中,如一个客户端需要群发一条聊天信息,则该聊天信息可能需要发送给多个玩家,那么对于发送信息的聊天进程来说,聊天信息发送的压力会很大。通过加入广播进程,聊天进程只需要把消息发送个任一一个广播进程,然后广播进程在把聊天信息发送给N个接入的接口进程。这样聊天就由原来的需要接受信息,发送N条信息,变为接受一条信息,发送一条信息。而发送信息的任务就交给了广播进程。而广播进程在部署过程中,可以是多个,这样可以避免因为发送压力过大,而给聊天进程对外服务的逻辑带来影响,从而减少了上一层聊天进程的压力。
步骤206,所述广播进程将接收到的聊天信息发送到相连接的接口进程;
广播进程在接收到聊天进程的发送的聊天信息后,可以发送到相连接的单一接口进程或多个接口进程,实现广播发送信息的功能。
步骤207,所述接口进程将聊天信息发送到目标客户端;
步骤208,目标客户端接收到聊天信息。
本实施例中,所述的第一数据库、第二数据库、第三数据库可以为同一个数据库,也可以为不同的数据块,本实施了对此不做限定。
通过本发明实施例,客户端从自己选择的接口进程接入服务器,通过接口进程将聊天信息发送出去,聊天信息经过广播进程到聊天进程,然后管理进程将聊天进程从聊天信息储存到数据库中,由全局进程将数据库中的聊天信息读取出来发送给相应的聊天进程,经过聊天进程的分配再发送给目标客户端,整个过程快速便捷。由于每台服务器上会运行一些进程,并且进程并不是运行在固定的服务器上,可以随意组合,也可以避免因某一个服务器的故障,而导致聊天服务终止,游戏中不同服务器上承载的玩家数量差异被磨平,不会因为某个服务器负载高就需要特别注意该服务器的运营情况,也避免了资源的浪费客户端。在发送聊天信息快速便捷,并且在客户端发送信息前,服务器能确保客户端是否登录,也记录了客户端的登录信息,即使玩家频繁的断线,也能根据玩家之前的登陆信息,重新引导玩家到之前已经登陆的聊天进程上,从而更快的响应玩家的服务。并且加了广播进程后,能大大减轻了聊天进程的压力,聊天进程只需要发送一条聊天信息给多个广播进程,由广播进程实现群发或多发的功能,而且在发送信息时,广播进程与聊天进程没有一一对应的关系,在聊天进程可以调用多个广播进程发送信息。
本发明还提出了一种通信装置,所述装置包括部署在服务器集群的至少一个管理进程模块、至少一个聊天进程模块、至少一个广播进程模块、至少一个接口进程模块、至少一个监控进程模块和至少一个全局进程模块:
所述接口进程模块用于接收客户端发送的聊天信息,并将所述聊天信息发送到广播进程模块;
所述广播进程模块用于将所述聊天信息发送到聊天进程模块;
所述管理进程模块将所述聊天进程模块接收到的聊天信息存储到第一数据库内;
所述全局进程模块用于从所述第一数据库中读取所述聊天信息,并将所述聊天信息发送到相对应的聊天进程模块;
所述聊天进程模块还用于将接收到的聊天信息发送到广播进程模块;
所述广播进程模块还用于将接收到的聊天信息发送到相连接的接口进程模块;
所述接口进程模块还用于将聊天信息发送到目标客户端;
所述监控进程模块用于监测第一数据库的数据变化和各个进程模块的心跳数据。
客户端通过接口进程模块进入服务器,将聊天信息从接口进程模块发送广播进程模块,然后由广播进程模块将聊天信息发送到聊天进程模块,管理进程模块将聊天信息存储到数据库中,接着全局进程模块从数据库读取聊天信息,将聊天信息发送到相对应的聊天进程模块,接着聊天进程模块将接收到的聊天信息发送到广播进程模块,由广播进程模块将接收到的聊天信息发送到相连接的接口进程模块,接口进程模块将聊天信息发送到目标客户端,整个过程由监控进程模块监控,可以通过监控各个进程模块的心跳数据,知道那个进程模块数据交换出现问题,并立刻告知其他进程模块。
在本发明实施例中,所述接口进程模块还用于接收所述客户端发送的登陆信息,并将所述登陆信息发送到聊天进程模块;
所述聊天进程模块还用于根据所述登陆信息,判断所述客户端是否初次登陆;若所述客户端是初次登陆,则对所述登陆信息进行校验;若校验成功,则将所述登陆信息存储到所述第一数据库。
在本发明实施例中,所述聊天进程模块还用于若所述客户端不是初次登陆,则确定所述客户端曾经登陆的其他聊天进程模块;将所述客户端配置到客户端上一次所登陆的其他聊天进程模块。
在本发明实施例中,所述聊天进程模块设有至少一种类型的频道;
所述聊天进程模块还用于将所述客户端分配到该聊天进程模块所设有的至少一个频道中。
在本发明实施例中,所述聊天进程模块还用于采用预设的分配器,确定自身设有的每一频道的人数;若一频道的人数达到预设人数阈值,则将该频道分裂为相同类型的多个频道。
在本发明实施例中,所述全局进程模块还用于接收客户端发送的频道查询请求,并查询所述频道查询请求指定的频道所对应的当前聊天进程模块;向所述客户端发送所述当前聊天进程模块的信息,以使所述客户端从当前聊天进程模块发起频道切换请求;根据所述频道切换请求,将所述客户端从所述当前聊天进程模块切换到所述频道切换请求指定的聊天频道。
在本发明实施例中,所述当前聊天进程模块用于确定所述频道切换请求所指定的聊天频道是否在所述当前聊天进程模块;若是,则将所述客户端从所述当前聊天进程模块切换到所述频道切换请求指定的聊天频道;若否,则向所述频道切换请求指定的聊天频道所对应的目标聊天进程模块,发送所述频道切换请求;
所述目标聊天进程模块用于根据所述频道切换请求,将所述客户端从所述当前聊天进程模块切换到所述频道切换请求指定的聊天频道。
在本发明实施例中,所述聊天进程模块用于确定所述聊天信息所对应的目标频道,以及确定所述目标频道所对应的目标接口进程模块;将所述聊天信息,发送至任意一个广播进程模块。
在本发明实施例中,所述接口进程模块用于确定与所述聊天信息对应的频道所对应的目标客户端;将聊天信息发送到目标客户端。
在本发明实施例中,所述管理进程模块用于接收客户端发送的聊天信息持久化请求;根据所述持久化请求,将该客户端的聊天信息持久化存储到所述第二数据库。
在本发明实施例中,所述全局进程模块用于测量所述第一数据库中聊天信息量是否满足预设的信息量阈值;若聊天信息量不满足预设的信息量阈值,则对服务器进行缩容;若聊天信息量超过预设的信息量阈值,则对服务器进行扩容。
在本发明实施例中,所述全局进程模块用于接收到需要缩容的服务器的 IP地址;查询所述IP地址所在服务器的在线状态和分配情况;若所述的IP 地址所对应的服务器具有在运行的聊天进程模块,且所述运行的聊天进程模块正在处理发送或接收聊天消息,则将所述运行的聊天进程模块所在的服务器标记为第一服务器,第一服务器为需要优先屏蔽的服务器;向所有聊天进程模块发送IP地址查询请求;
所述聊天进程模块用于根据所述IP地址查询请求,查询聊天进程模块所在服务器的IP地址;
所述全局进程模块用于若所述聊天进程模块所在服务器的IP地址与所述第一服务器的IP地址相同,则将该聊天进程模块标记为第一聊天进程模块,第一聊天进程模块为不再配置新的客户端的聊天进程模块;
所述聊天进程模块用于向所有的接口进程模块发送IP地址查询请求;
所述接口进程模块用于根据上述IP地址查询请求,查询接口进程模块所在服务器的IP地址;
所述全局进程模块用于若所述接口进程模块所在服务器的IP地址与所述第一服务器的IP地址相同,则将该接口进程模块标记为第一接口进程模块,第一接口进程模块为不再配置新的客户端的接口进程模块;并将所述第一接口进程模块从预设的可用接口进程模块列表中删除;当所述第一服务器上的第一聊天进程模块和第一接口进程模块都不具有聊天信息时,关闭所述第一服务器,并将所述第一接口进程模块从预置的接口列表中删除。
在本发明实施例中,所述全局进程模块用于获取待扩容的服务器的IP 地址,并将所述IP地址存储到预置的第三数据库;确定所述待扩容的服务器所部署有的接口进程模块,并将所述待扩容的服务器所部署有的接口进程模块添加到预置的接口进程模块列表。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明实施例还提供了一种装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行本发明实施例所述的方法。
本发明实施例还提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行本发明实施例所述的方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种通信方法和一种通信装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (27)
1.一种通信方法,其特征在于,应用于服务器集群,所述服务器集群部署有至少一个管理进程、至少一个聊天进程、至少一个广播进程、至少一个接口进程、至少一个监控进程和至少一个全局进程,所述方法包括:
用于接收客户端发送的聊天信息的第一接口进程接收客户端发送的聊天信息,所述第一接口进程将所述聊天信息发送到与所述第一接口进程连接的第一广播进程;
所述第一广播进程将所述聊天信息发送到与所述第一广播进程连接的第一聊天进程;
所述管理进程将所述第一聊天进程接收到的聊天信息存储到第一数据库内;
所述全局进程从所述第一数据库中读取所述聊天信息,并将所述聊天信息发送到与接收所述聊天信息的目标客户端相对应的第二聊天进程;
所述第二聊天进程将接收到的聊天信息发送到与所述第二聊天进程连接的第二广播进程;
所述第二广播进程将接收到的聊天信息发送到相连接的第二接口进程;
所述第二接口进程将聊天信息发送到目标客户端;
所述方法还包括:
所述第一接口进程接收所述客户端发送的登陆信息,并将所述登陆信息发送到所述第一聊天进程;
所述第一聊天进程将所述登陆信息存储到所述第一数据库内;
所述全局进程从所述第一数据库中读取所述登陆信息,根据所述登陆信息判断所述客户端是否初次登陆;
若所述客户端不是初次登陆,则所述全局进程确定所述客户端上一次登陆的聊天进程;
所述全局进程将所述客户端配置到客户端上一次所登陆的聊天进程。
2.根据权利要求1所述的方法,其特征在于,还包括:
若所述客户端是初次登陆,则所述第一聊天进程对所述登陆信息进行校验;
若校验成功,则所述第一聊天进程将所述登陆信息存储到所述第一数据库。
3.根据权利要求1所述的方法,其特征在于,所述第一聊天进程设有至少一种类型的频道模块,所述方法还包括:
所述第一聊天进程将所述客户端分配到该聊天进程所设有的至少一个频道模块中。
4.根据权利要求3所述的方法,其特征在于,还包括:
所述第一聊天进程采用预设的分配器,确定自身设有的每一频道模块的人数;
若一频道模块的人数达到预设人数阈值,则所述第一聊天进程将该频道分裂为相同类型的多个频道。
5.根据权利要求3所述的方法,其特征在于,还包括:
所述全局进程接收客户端发送的频道查询请求,并查询所述频道查询请求指定的频道所对应的当前聊天进程;
所述全局进程向所述客户端发送所述当前聊天进程的信息,以使所述客户端从当前聊天进程发起频道切换请求;
所述当前聊天进程根据所述频道切换请求,将所述客户端从所述当前聊天进程切换到所述频道切换请求指定的聊天频道。
6.根据权利要求5所述的方法,其特征在于,所述当前聊天进程根据所述频道切换请求,将所述客户端从所述当前聊天进程切换到所述频道切换请求指定的聊天频道,包括:
所述当前聊天进程确定所述频道切换请求所指定的聊天频道是否在所述当前聊天进程;
若是,则所述当前聊天进程将所述客户端从所述当前聊天进程切换到所述频道切换请求指定的聊天频道;
若否,则所述当前聊天进程向所述频道切换请求指定的聊天频道所对应的目标聊天进程,发送所述频道切换请求;
所述目标聊天进程根据所述频道切换请求,将所述客户端从所述当前聊天进程切换到所述频道切换请求指定的聊天频道。
7.根据权利要求1所述的方法,其特征在于,所述第二聊天进程将接收到的聊天信息发送到与所述第二聊天进程连接的第二广播进程,包括:
所述第二聊天进程确定所述聊天信息所对应的目标频道,以及确定所述目标频道所对应的目标接口进程;
所述第二聊天进程将所述聊天信息,发送至与所述第二聊天进程连接的任意一个广播进程。
8.根据权利要求7所述的方法,其特征在于,所述第二接口进程将聊天信息发送到目标客户端,包括:
所述第二接口进程确定与所述聊天信息对应的频道所对应的目标客户端;
所述第二接口进程将聊天信息发送到目标客户端。
9.根据权利要求1所述的方法,其特征在于,所述管理进程将所述第一聊天进程接收到的聊天信息存储到第一数据库内,还包括:
所述管理进程接收客户端发送的聊天信息持久化请求;
所述管理进程根据所述持久化请求,将该客户端的聊天信息持久化存储到所述第二数据库。
10.根据权利要求1所述的方法,其特征在于,还包括:
所述全局进程测量所述第一数据库中聊天信息量是否满足预设的信息量阈值;
若聊天信息量不满足预设的信息量阈值,则全局进程对服务器进行缩容;
若聊天信息量超过预设的信息量阈值,则全局进程对服务器进行扩容。
11.根据权利要求10所述的方法,其特征在于,所述全局进程对服务器的缩容,包括:
全局进程接收到需要缩容的服务器的IP地址;
所述全局进程查询ip地址所在服务器的在线状态和分配情况;
若所述的IP地址所对应的服务器具有在运行的聊天进程,且所述运行的聊天进程正在处理发送或接收聊天消息,则所述全局进程将所述运行的聊天进程所在的服务器标记为第一服务器,第一服务器为需要优先屏蔽的服务器;
所述全局进程向所有聊天进程发送IP地址查询请求;
所述聊天进程根据所述IP地址查询请求,查询聊天进程所在服务器的IP地址;
若所述聊天进程所在服务器的IP地址与所述第一服务器的IP地址相同,则所述全局进程将该聊天进程标记为第一聊天进程,第一聊天进程为不再配置新的客户端的聊天进程;
所述聊天进程向所有的接口进程发送IP地址查询请求;
所述接口进程根据上述IP地址查询请求,查询接口进程所在服务器的IP地址;
若所述接口进程所在服务器的IP地址与所述第一服务器的IP地址相同,则所述全局进程将该接口进程标记为第一接口进程,第一接口进程为不再配置新的客户端的接口进程;
所述全局进程将所述第一接口进程从预设的可用接口进程列表中删除;
当所述第一服务器上的第一聊天进程和第一接口进程都不具有聊天信息时,所述全局进程关闭所述第一服务器,并将所述第一接口进程从预置的接口列表中删除。
12.根据权利要求10所述的方法,其特征在于,全局进程对服务器进行扩容还包括:
所述全局进程获取待扩容的服务器的IP地址,并将所述IP地址存储到预置的第三数据库;
所述全局进程确定所述待扩容的服务器所部署有的接口进程,并将所述待扩容的服务器所部署有的接口进程添加到预置的接口进程列表。
13.根据权利要求1所述的方法,其特征在于,所述监控进程监测第一数据库的数据变化和各个进程的心跳数据。
14.一种通信装置,其特征在于,包括部署在服务器集群的至少一个管理进程模块、至少一个聊天进程模块、至少一个广播进程模块、至少一个接口进程模块、至少一个监控进程模块和至少一个全局进程模块;
第一接口进程模块用于接收客户端发送的聊天信息,并将所述聊天信息发送到与所述第一接口进程连接的第一广播进程模块;
所述第一广播进程模块用于将所述聊天信息发送到与所述第一广播进程模块连接的第一聊天进程模块;
所述管理进程模块将所述第一聊天进程模块接收到的聊天信息存储到第一数据库内;
所述全局进程模块用于从所述第一数据库中读取所述聊天信息,并将所述聊天信息发送到与接收所述聊天信息的目标客户端相对应的第二聊天进程模块;
所述聊天进程模块还用于将接收到的聊天信息发送到与所述第二聊天进程模块连接的第二广播进程模块;
所述第二广播进程模块还用于将接收到的聊天信息发送到相连接的第二接口进程模块;
所述第二接口进程模块还用于将聊天信息发送到目标客户端;
所述监控进程模块用于监测第一数据库的数据变化和各个进程模块的心跳数据;
所述第一接口进程模块还用于接收所述客户端发送的登陆信息,并将所述登陆信息发送到所述第一聊天进程模块;
所述第一聊天进程模块将所述登陆信息存储到所述第一数据库内;
所述全局进程模块用于从所述第一数据库中读取所述登陆信息,根据所述登陆信息,判断所述客户端是否初次登陆;若所述客户端不是初次登陆,则确定所述客户端上一次登陆的聊天进程模块;将所述客户端配置到客户端上一次所登陆的聊天进程模块。
15.根据权利要求14所述的装置,其特征在于,
所述第一聊天进程模块还用于若所述客户端是初次登陆,则对所述登陆信息进行校验;若校验成功,则将所述登陆信息存储到所述第一数据库。
16.根据权利要求14所述的装置,其特征在于,所述第一聊天进程模块设有至少一种类型的频道;
所述第一聊天进程模块还用于将所述客户端分配到该聊天进程模块所设有的至少一个频道中。
17.根据权利要求16所述的装置,其特征在于,
所述第一聊天进程模块还用于采用预设的分配器,确定自身设有的每一频道的人数;若一频道的人数达到预设人数阈值,则将该频道分裂为相同类型的多个频道。
18.根据权利要求16所述的装置,其特征在于,
所述全局进程模块还用于接收客户端发送的频道查询请求,并查询所述频道查询请求指定的频道所对应的当前聊天进程模块;向所述客户端发送所述当前聊天进程模块的信息,以使所述客户端从当前聊天进程模块发起频道切换请求;根据所述频道切换请求,将所述客户端从所述当前聊天进程模块切换到所述频道切换请求指定的聊天频道。
19.根据权利要求18所述的装置,其特征在于,
所述当前聊天进程模块用于确定所述频道切换请求所指定的聊天频道是否在所述当前聊天进程模块;若是,则将所述客户端从所述当前聊天进程模块切换到所述频道切换请求指定的聊天频道;若否,则向所述频道切换请求指定的聊天频道所对应的目标聊天进程模块,发送所述频道切换请求;
所述目标聊天进程模块用于根据所述频道切换请求,将所述客户端从所述当前聊天进程模块切换到所述频道切换请求指定的聊天频道。
20.根据权利要求14所述的装置,其特征在于,
所述第二聊天进程模块用于确定所述聊天信息所对应的目标频道,以及确定所述目标频道所对应的目标接口进程模块;将所述聊天信息,发送至与所述第二聊天进程连接的任意一个广播进程模块。
21.根据权利要求20所述的装置,其特征在于,
所述第二接口进程模块用于确定与所述聊天信息对应的频道所对应的目标客户端;将聊天信息发送到目标客户端。
22.根据权利要求14所述的装置,其特征在于,
所述管理进程模块用于接收客户端发送的聊天信息持久化请求;根据所述持久化请求,将该客户端的聊天信息持久化存储到所述第二数据库。
23.根据权利要求14所述的装置,其特征在于,
所述全局进程模块用于测量所述第一数据库中聊天信息量是否满足预设的信息量阈值;若聊天信息量不满足预设的信息量阈值,则对服务器进行缩容;若聊天信息量超过预设的信息量阈值,则对服务器进行扩容。
24.根据权利要求23所述的装置,其特征在于,
所述全局进程模块用于接收到需要缩容的服务器的IP地址;查询所述IP地址所在服务器的在线状态和分配情况;若所述的IP地址所对应的服务器具有在运行的聊天进程模块,且所述运行的聊天进程模块正在处理发送或接收聊天消息,则将所述运行的聊天进程模块所在的服务器标记为第一服务器,第一服务器为需要优先屏蔽的服务器;向所有聊天进程模块发送IP地址查询请求;
所述聊天进程模块用于根据所述IP地址查询请求,查询聊天进程模块所在服务器的IP地址;
所述全局进程模块用于若所述聊天进程模块所在服务器的IP地址与所述第一服务器的IP地址相同,则将该聊天进程模块标记为第一聊天进程模块,第一聊天进程模块为不再配置新的客户端的聊天进程模块;
所述聊天进程模块用于向所有的接口进程模块发送IP地址查询请求;
所述接口进程模块用于根据上述IP地址查询请求,查询接口进程模块所在服务器的IP地址;
所述全局进程模块用于若所述接口进程模块所在服务器的IP地址与所述第一服务器的IP地址相同,则将该接口进程模块标记为第一接口进程模块,第一接口进程模块为不再配置新的客户端的接口进程模块;并将所述第一接口进程模块从预设的可用接口进程模块列表中删除;当所述第一服务器上的第一聊天进程模块和第一接口进程模块都不具有聊天信息时,关闭所述第一服务器,并将所述第一接口进程模块从预置的接口列表中删除。
25.根据权利要求23所述的装置,其特征在于,
所述全局进程模块用于获取待扩容的服务器的IP地址,并将所述IP地址存储到预置的第三数据库;确定所述待扩容的服务器所部署有的接口进程模块,并将所述待扩容的服务器所部署有的接口进程模块添加到预置的接口进程模块列表。
26.一种装置,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如权利要求1-13所述的一个或多个的方法。
27.一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-13所述的一个或多个的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910017359.2A CN109688225B (zh) | 2019-01-08 | 2019-01-08 | 一种通信方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910017359.2A CN109688225B (zh) | 2019-01-08 | 2019-01-08 | 一种通信方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109688225A CN109688225A (zh) | 2019-04-26 |
CN109688225B true CN109688225B (zh) | 2021-11-16 |
Family
ID=66192693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910017359.2A Active CN109688225B (zh) | 2019-01-08 | 2019-01-08 | 一种通信方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109688225B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110430174A (zh) * | 2019-07-19 | 2019-11-08 | 上海易点时空网络有限公司 | 多方通信方法及装置 |
CN111228824A (zh) * | 2020-01-10 | 2020-06-05 | 腾讯科技(深圳)有限公司 | 游戏观战方法、装置、计算机可读介质及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185862A (zh) * | 2011-05-13 | 2011-09-14 | 北京朗玛数联科技有限公司 | 网络游戏系统的通信方法、装置及系统 |
CN104202375A (zh) * | 2014-08-22 | 2014-12-10 | 广州华多网络科技有限公司 | 同步数据的方法及系统 |
CN107404514A (zh) * | 2017-06-08 | 2017-11-28 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置 |
CN107491355A (zh) * | 2017-08-17 | 2017-12-19 | 山东浪潮商用系统有限公司 | 一种基于共享内存的进程间功能调用方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7266686B1 (en) * | 1996-05-09 | 2007-09-04 | Two-Way Media Llc | Multicasting method and apparatus |
CN103312594B (zh) * | 2013-06-08 | 2016-06-01 | 腾讯科技(深圳)有限公司 | 一种进入聊天房间的方法及装置 |
US8843835B1 (en) * | 2014-03-04 | 2014-09-23 | Banter Chat, Inc. | Platforms, systems, and media for providing multi-room chat stream with hierarchical navigation |
KR102628037B1 (ko) * | 2016-11-15 | 2024-01-22 | 삼성전자주식회사 | 제품의 판매 정보를 제공하는 방법 및 장치 |
-
2019
- 2019-01-08 CN CN201910017359.2A patent/CN109688225B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185862A (zh) * | 2011-05-13 | 2011-09-14 | 北京朗玛数联科技有限公司 | 网络游戏系统的通信方法、装置及系统 |
CN104202375A (zh) * | 2014-08-22 | 2014-12-10 | 广州华多网络科技有限公司 | 同步数据的方法及系统 |
CN107404514A (zh) * | 2017-06-08 | 2017-11-28 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置 |
CN107491355A (zh) * | 2017-08-17 | 2017-12-19 | 山东浪潮商用系统有限公司 | 一种基于共享内存的进程间功能调用方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109688225A (zh) | 2019-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2016061898A1 (zh) | 直播间的频道访问方法和系统 | |
CN101605108B (zh) | 一种即时通信的方法、系统及装置 | |
CN105635180B (zh) | 消息推送方法及装置 | |
CN112016030B (zh) | 消息推送的方法、装置、服务器和计算机存储介质 | |
CN109173270B (zh) | 一种游戏服务系统和实现方法 | |
CN108540450B (zh) | 数据发送、接收方法及装置 | |
CN108449612B (zh) | 发放资源的方法、装置、系统、存储介质和计算机设备 | |
CN106878769A (zh) | 直播视频质量监测方法和装置 | |
CN109688225B (zh) | 一种通信方法及装置 | |
CN113518247A (zh) | 视频播放方法、相关设备及计算机可读存储介质 | |
CN110327621A (zh) | 用于网络游戏客户端匹配的方法及设备 | |
CN112121413A (zh) | 功能服务的响应方法、系统、装置、终端及介质 | |
CN111641845A (zh) | 流媒体集群控制系统和方法 | |
US20070265976A1 (en) | License distribution in a packet data network | |
CN106790610B (zh) | 一种云系统消息分发方法,装置和系统 | |
CN107205173B (zh) | 一种网络直播中的弹幕互动的方法和装置 | |
CN103581197A (zh) | 跨服务器实现团队数据处理的方法和系统 | |
CN114745413B (zh) | 服务端的访问控制方法、装置、计算机设备及存储介质 | |
CN104580520A (zh) | 一种运行互动业务的方法及装置 | |
CN115664989A (zh) | 一种云桌面的监控系统及方法 | |
CN111905362B (zh) | 游戏公会的加载方法和服务器 | |
CN111249747B (zh) | 一种游戏中的信息处理方法及装置 | |
CN105634932B (zh) | 一种消息推送方法、装置、系统和计算机可读存储介质 | |
CN108322787A (zh) | 视频流分发方法、装置及电子设备 | |
CN111800491A (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 |