本申请涉及即时通讯,具体涉及一种无人数上限的聊天室系统。
背景技术:
1、聊天室作为一个服务器端的应用程序,需要处理和管理用户之间的消息传递、数据存储等操作。现有的聊天室大部分采用集中式的聊天室用户管理,当聊天室中的人数超过一定限制时,服务器可能无法承受更多的负载,导致性能下降或崩溃,所以传统的聊天室通常会对聊天人数上限进行控制,当聊天室达到人数上限后,其他用户将无法加入聊天室。
2、从功能设计层面来讲,集中式的聊天室用户管理方式限制了功能设计者对聊天室相关功能的规划,一些设计无法完全实现,从而不得不采取妥协的方案进行设计;从用户层面来讲,由于聊天室存在人数上限,可能无法进入一些感兴趣的聊天室,或者在加入了聊天室之后由于网络原因退出聊天室后,聊天室人数已经达到上限,无法返回聊天室,无论那种情况都会影响用户对聊天室功能的体验。
3、中国专利文献cn108173917a公开了一种分布式无上限的网络聊天室消息转发系统,但是该分布式无上限的网络聊天室消息转发系统是在收到消息后才存储用户的基本信息,用来实现转发逻辑。这种方式可能存在用户重新登录之后已存储的信息已经失效,从而出现消息转发失败的情况,且该专利文献用于查询数据的模块无法横向扩展,一旦该模块出现故障则业务完全无法使用,该专利文献也法获取聊天室中的用户。
技术实现思路
1、为此,本申请提供一种无人数上限的聊天室系统,以解决现有技术存在的分布式聊天室会出现消息转发失败的问题。
2、为了实现上述目的,本申请提供如下技术方案:
3、一种无人数上限的聊天室系统,包括网关服务器、消息转发服务器、用户在线信息服务器和聊天室信息服务器;
4、所述网关服务器,所述网关服务器与客户端连接,用于维护用户的网络连接信息和用户已加入的聊天室列表,并定时向所述用户在线信息服务器和所述聊天室信息服务器上报聊天室相关信息以及定时向所述消息转发服务器同步用户在线状态;
5、所述消息转发服务器,用于接收所述客户端通过所述网关服务器发送的用户聊天信息,并向所述用户在线信息服务器同步用户上下线变化信息和用户在线状态;
6、所述用户在线信息服务器,用于维护所有用户的在线状态信息以及聊天室与所述网关服务器的对应关系;
7、所述聊天室信息服务器,用于所述客户端查询聊天室内人数和用户列表。
8、进一步的,所述消息转发服务器采用一致性哈希分布。
9、进一步的,所述消息转发服务器每隔100毫秒向所述用户在线信息服务器同步一次用户上下线变化信息,每隔1秒向所述用户在线信息服务器同步一次用户在线状态。
10、进一步的,用户登录所述无人数上限的聊天室系统时包括:
11、所述网关服务器接收用户通过所述客户端发送的登录请求;
12、所述网关服务器验证所述登录请求,若验证失败,则通知所述客户端登录失败;若验证通过,则通知所述客户端登录成功,并将登录用户同步至所述消息转发服务器;
13、所述消息转发服务器保存登录用户和所述网关服务器的对应关系,并同步至所述用户在线信息服务器;
14、所述网关服务器定时向所述消息转发服务器同步所述网关服务器上所有用户的在线状态,超过设定时间未同步则视为用户已下线。
15、进一步的,用户加入所述无人数上限的聊天室系统时包括:
16、所述网关服务器接收用户通过所述客户端发送的加入聊天室请求;
17、所述网关服务器根据所述加入聊天室请求记录用户加入聊天室,并通知所述客户端加入聊天室成功;
18、所述网关服务器定时将用户加入聊天室记录或全量用户聊天室信息同步至所述用户在线信息服务器。
19、进一步的,用户退出所述无人数上限的聊天室系统时包括:
20、所述网关服务器接收用户通过所述客户端发送的退出聊天室请求;
21、所述网关服务器根据所述退出聊天室请求记录用户退出聊天室,并通知所述客户端退出聊天室成功;
22、所述网关服务器定时将全量用户聊天室信息同步至所述用户在线信息服务器。
23、进一步的,用户通过所述无人数上限的聊天室系统发送和接收聊天消息时包括:
24、所述网关服务器接收用户通过所述客户端发送的聊天消息;
25、所述网关服务器根据所述聊天消息判断用户是否在聊天室;若不在,则通知所述客户端发送失败;若在,则通知所述客户端发送成功,并根据一致性哈希原则,向所述消息转发服务器发送所述聊天消息;
26、所述消息转发服务器通过所述用户在线信息服务器查询聊天室所在网关服务器列表,并根据所述网关服务器列表将所述聊天消息通过对应的网关服务器推送至对应的客户端。
27、进一步的,用户通过所述无人数上限的聊天室系统查询聊天室用户列表时包括:
28、所述网关服务器接收用户通过所述客户端发送的查询聊天室用户列表请求;
29、所述网关服务器根据所述查询聊天室用户列表请求向所述聊天室信息服务器查询用户列表;
30、所述聊天室信息服务器查询本地服务数据,并将查询到的聊天室用户列表通过所述网关服务器返回至所述客户端。
31、相比现有技术,本申请至少具有以下有益效果:
32、本申请提供了一种无人数上限的聊天室系统,采用分布式的聊天室用户管理方法将聊天室服务器划分为网关服务器、消息转发服务器、用户在线信息服务器和聊天室信息服务器,其中,网关服务器用于维护用户的网络连接信息和用户已加入的聊天室列表,并定时向用户在线信息服务器和聊天室信息服务器上报聊天室相关信息以及定时向消息转发服务器同步用户在线状态;消息转发服务器用于接收客户端通过网关服务器发送的用户聊天信息,并向用户在线信息服务器同步用户上下线变化信息和用户在线状态;用户在线信息服务器用于维护所有用户的在线状态信息以及聊天室与网关服务器的对应关系;聊天室信息服务器用于客户端查询聊天室内人数和用户列表,解决了现有的分布式聊天室会出现消息转发失败的问题,且能够横向扩展,即使出现故障也能正常使用。
1.一种无人数上限的聊天室系统,其特征在于,包括网关服务器、消息转发服务器、用户在线信息服务器和聊天室信息服务器;
2.根据权利要求1所述的无人数上限的聊天室系统,其特征在于,所述消息转发服务器采用一致性哈希分布。
3.根据权利要求1所述的无人数上限的聊天室系统,其特征在于,所述消息转发服务器每隔100毫秒向所述用户在线信息服务器同步一次用户上下线变化信息,每隔1秒向所述用户在线信息服务器同步一次用户在线状态。
4.根据权利要求1所述的无人数上限的聊天室系统,其特征在于,用户登录所述无人数上限的聊天室系统时包括:
5.根据权利要求1所述的无人数上限的聊天室系统,其特征在于,用户加入所述无人数上限的聊天室系统时包括:
6.根据权利要求1所述的无人数上限的聊天室系统,其特征在于,用户退出所述无人数上限的聊天室系统时包括:
7.根据权利要求1所述的无人数上限的聊天室系统,其特征在于,用户通过所述无人数上限的聊天室系统发送和接收聊天消息时包括:
8.根据权利要求1所述的无人数上限的聊天室系统,其特征在于,用户通过所述无人数上限的聊天室系统查询聊天室用户列表时包括: