网络长连接服务集群化部署系统及控制流程的制作方法

文档序号:25992226发布日期:2021-07-23 21:04阅读:271来源:国知局
网络长连接服务集群化部署系统及控制流程的制作方法

本发明涉及网络通讯技术领域,尤其涉及网络长连接服务集群化部署系统及控制流程。



背景技术:

网络直播吸取和延续了互联网的优势,利用视讯方式进行网上现场直播,可以将产品展示、相关会议、背景介绍、方案测评、网上调查、对话访谈、在线培训等内容现场发布到互联网上,利用互联网的直观、快速,表现形式好、内容丰富、交互性强、地域不受限制、受众可划分等特点,加强活动现场的推广效果。而互联网直播经济兴起又逐渐成为网络直播的重要市场。而网络直播不可或缺的就是直播交流和互动,需要依靠即时消息通讯来解决。

当直播场次较多,且直播间任务较多时,意味着处理即时消息的服务需要应对大规模、高并发、连接数巨大的实际场景。



技术实现要素:

1.要解决的技术问题

本发明的目的是为了解决现有技术中直播间任务较多时,意味着处理即时消息的服务需要应对大规模、高并发、连接数巨大实际场景的的问题,而提出的网络长连接服务集群化部署系统及控制流程。

2.技术方案

为了实现上述目的,本发明采用了如下技术方案:

网络长连接服务集群化部署系统,包括服务代理系统、服务注册与发现系统、消息分发和汇聚系统、分布式信息存储系统、分布式消息路由系统、消息记录保存系统和控制中心leader系统,服务代理系统使用slb代理cim服务的tcp/ip,websocket端口,实现节点负载均衡,为保证客户端海量长连接可以稳定建立,利用前置slb均衡各个消息分发子节点服务器压力,并调节整个集群可以对外提供的基于websocket和tcp/ip稳定长连接的承载量,并起到监控整个服务可用状态的一个作用;

服务注册与发现系统使用zookeeper作为集群的注册发现中心,实现各个节点之间的感知,同时实现集群leader选举控制中心,在cim节点服务中自动选举产生leader;

消息分发和汇聚系统中使用kafka的topic实现消息分发到所有的cim服务节点上来实现消息的传输,通过kafka的批量拉取功能实现消息的短时汇聚,提高消息系统的并发处理能力,kafka的反压特性可以很好的起到削峰填谷的作用,避免消息发送集群各节点压力过大导致整体服务雪崩,提高cim集群的高可用性,

分布式信息存储系统中采用redis作为分布式节点信息的载体,为控制中心leader提供汇总的的节点信息,为负载均衡,消息路由,协调任务提供有力的依据,

分布式消息路由系统通过redis把消息传输到所有的节点上;

消息记录保存系统通过同步监听消费kafka分发的消息,通过独立的服务模式运行,与长连接服务解耦,较少cim节点的压力,通过kafka的消息批处理可以更好的批量写入数据存储服务;

控制中心leader系统中leader节点通过zookeeper来协调集群的整体状态,集群信息协调管理,执行相关节点上下线的事件处理,控制中心leader通过连接zookeeper了解各个节点的服务能力和状态还起到整个服务的调度作用,当消息分发子节点上下线时,需要做出相关的处理动作,保证整个集群状态健康,提供有效服务,另外,控制中心也暂时提供数据查询的接口,例如直播间实时在线人数统计功能。

优选地,服务代理系统中通过调用cim的http接口获取可用连接点信息,这里会根据给节点的实际连接数进行负载均衡,这里可以自定义扩展不同到路由规则,支持独立部署节点管理服务,减少长连接服务压力。

优选地,服务注册与发现系统中当leader所在节点发生故障时,重新触发leader选举,由新的leader完成协调集群的功能。

优选地,分布式消息路由系统中通过分布式缓存信息获取目标链接所在的节点,通过redis把消息传输到指定节点上。

优选地,消息记录保存系统中采用查询性能在大数据量上更佳的elasticsearch进行消息存储,在消息统计和全文搜索方面有更好的处理方案。

优选地,控制中心leader系统中控制中心在实时监控本服务中承担并发压力最大、最核心的消息审核和消息分发服务运行状态时,还需要动态根据实际服务压力情况和合适的调度算法及时邮件通知运维人员和及时弹性水平扩展集群规模,保证一定程度上的服务弹性伸缩,既保证了服务的高可用,也有效的节省了服务的资源消耗和成本。

优选地,控制中心leader系统中如果服务器资源充分,可以将控制中心提供的对外接口服务单独模块化部署,既保证不影响控制中心核心功能的控制能力,也可以提供集群化能力保证服务高可用,避免单机故障。

本发明中还提出了网络长连接服务集群化部署系统的控制流程,包括以下步骤:

步骤1:通过zookeeper作为注册中心,在节点注册时将节点的链接信息通过元信息的形式注册到zookeeper的临时节点中;

步骤2:使用sofa-rpc作为节点间的通信技术,sofa-rpc是一款基于java实现的rpc服务框架,为应用之间提供远程服务调用能力;

步骤3:在每一个cim服务启动时,会通过sofa-rpc启动rpc服务端,在服务端上会注册相关的服务接口,同时会通过zookeeper注册元信息共享给其他节点,其他节点可以通过节点id获取到节点的ip和端口,从而构建rpc客户端;

步骤4:使用caffenie缓存池,通过节点标识维护客户端接口的维护,在通过节点标识获取客户端时,如果不存在会创建对应节点的客户端,caffenie维护了创建的线程安全。

优选地,步骤1中其他节点就可以通过节点标识获取元信息,从而可以通过rpc访问指定节点的信息。

优选地,步骤4中在客户端在一定时间内未访问后会自动清理掉对应的客户端,在节点标识在获取元信息失败后也会清理缓存。

3.有益效果

相比于现有技术,本发明的优点在于:

(1)本发明解决了长连接消息推送服务在分布式环境下的问题,同时基于tcp/ip协议实现了andriod和ios同服务端的长连接,基于websocket协议实现了web和服务端的长连接,服务端采用netty来实现长连接的服务。

(2)本发明适用于直播间弹幕消息,聊天室单聊群聊消息,系统消息推送等场景,同时支持历史消息存储,聊天群组房间在线人数实时统计,上下线消息聚合推送。

附图说明

图1为本发明提出的网络长连接服务集群化部署系统的控制流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

实施例1:

参照图1,网络长连接服务集群化部署系统包括包括服务代理系统、服务注册与发现系统、消息分发和汇聚系统、分布式信息存储系统、分布式消息路由系统、消息记录保存系统和控制中心leader系统;

本发明中,其中服务代理系统使用slb代理cim服务的tcp/ip,websocket端口,实现节点负载均衡,为保证客户端海量长连接可以稳定建立,利用前置slb(参考附图说明中图1中的slb1)均衡各个消息分发子节点服务器压力,并调节整个集群可以对外提供的基于websocket和tcp/ip稳定长连接的承载量。并起到监控整个服务可用状态的一个作用。

本发明中,服务代理系统通过调用cim的http接口获取可用连接点信息,这里会根据给节点的实际连接数进行负载均衡,这里可以自定义扩展不同到路由规则。支持独立部署节点管理服务,减少长连接服务压力。

本发明中,服务注册与发现方案系统使用zookeeper作为集群的注册发现中心,实现各个节点之间的感知。同时实现集群leader选举控制中心,在cim节点服务中自动选举产生leader,当leader所在节点发生故障时,重新触发leader选举,由新的leader完成协调集群的功能。

本发明中,消息分发和汇聚系统中kafka具有高吞吐量、内置分区、支持数据副本和容错的特性,适合在大规模消息处理场景中使用。使用kafka的topic实现消息分发到所有的cim服务节点上来实现消息的传输。通过kafka的批量拉取功能实现消息的短时汇聚,提高消息系统的并发处理能力。kafka的反压特性可以很好的起到削峰填谷的作用,避免消息发送集群各节点压力过大导致整体服务雪崩,提高cim集群的高可用性。

本发明中,分布式信息存储系统中在cim集群中存在很多需要各个节点共同维护和操作的信息,并且有较高的qps压力。采用redis作为分布式节点信息的载体,为控制中心leader提供汇总的的节点信息,为负载均衡,消息路由,协调任务提供有力的依据。

本发明中,分布式消息路由系统中在cim集群中消息的推送必须推送到到相关长连接所在的节点,分布式消息路由系统中消息广播,通过redis把消息传输到所有的节点上,该方案适用于链接负载均衡时的方案,因为分组中的链接基本均匀分布在集群节点上,采用方案二也会弱化为本方案。但在链接节点有路由规则时,采用方案二配合使用更佳。

本发明中,分布式消息路由系统通过分布式缓存信息获取目标链接所在的节点,通过redis把消息传输到指定节点上。

本发明中,消息记录保存系统通过同步监听消费kafka分发的消息,通过独立的服务模式运行,与长连接服务解耦,较少cim节点的压力。通过kafka的消息批处理可以更好的批量写入数据存储服务,这里采用查询性能在大数据量上更佳的elasticsearch进行消息存储,在消息统计和全文搜索方面有更好的处理方案。

本发明中,控制中心leader系统中leader节点通过zookeeper来协调集群的整体状态,集群信息协调管理,执行相关节点上下线的事件处理。控制中心leader通过连接zookeeper了解各个节点的服务能力和状态还起到整个服务的调度作用,当消息分发子节点上下线时,需要做出相关的处理动作,保证整个集群状态健康,提供有效服务。另外,控制中心也暂时提供数据查询的接口,例如直播间实时在线人数统计功能。

本发明中,控制中心在实时监控本服务中承担并发压力最大、最核心的消息审核和消息分发服务运行状态时,还需要动态根据实际服务压力情况和合适的调度算法及时邮件通知运维人员和及时弹性水平扩展集群规模,保证一定程度上的服务弹性伸缩,既保证了服务的高可用,也有效的节省了服务的资源消耗和成本。

本发明中,优化设计中,如果服务器资源充分,可以将控制中心提供的对外接口服务单独模块化部署,既保证不影响控制中心核心功能的控制能力,也可以提供集群化能力保证服务高可用,避免单机故障。

本发明中,网络长连接服务集群化部署系统的控制流程,包括以下步骤:

步骤1:通过zookeeper作为注册中心,在节点注册时将节点的链接信息通过元信息的形式注册到zookeeper的临时节点中,其他节点就可以通过节点标识获取元信息,从而可以通过rpc访问指定节点的信息;

步骤2:使用sofa-rpc作为节点间的通信技术,sofa-rpc是一款基于java实现的rpc服务框架,为应用之间提供远程服务调用能力;

步骤3:在每一个cim服务启动时,会通过sofa-rpc启动rpc服务端,在服务端上会注册相关的服务接口,同时会通过zookeeper注册元信息共享给其他节点,其他节点可以通过节点id获取到节点的ip和端口,从而构建rpc客户端;

步骤4:使用caffenie缓存池,通过节点标识维护客户端接口的维护,在通过节点标识获取客户端时,如果不存在会创建对应节点的客户端,caffenie维护了创建的线程安全,在客户端在一定时间内未访问后会自动清理掉对应的客户端,在节点标识在获取元信息失败后也会清理缓存。

本发明中,解决了长连接消息推送服务在分布式环境下的问题,同时基于tcp/ip协议实现了andriod和ios同服务端的长连接,基于websocket协议实现了web和服务端的长连接,服务端采用netty来实现长连接的服务。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1