一种基于服务器间通信的多协议分布式消息服务系统的制作方法

文档序号:17627386发布日期:2019-05-10 23:48阅读:191来源:国知局
一种基于服务器间通信的多协议分布式消息服务系统的制作方法

本发明涉及iptv技术领域,尤其是涉及一种基于服务器间通信的多协议分布式消息服务系统。



背景技术:

iptv,是以电视机、电脑及移动终端(例如手机)等设备为显示终端,将机顶盒、计算机或移动终端(例如手机)设备接入到互联网络,通过互联网络,特别是宽带网络,向tv、pc、移动终端等多种用户提供各种实时、非实时的多媒体业务。

现有iptv消息集群系统用来实现跨终端与机顶盒实时通信,使得用户可以使用语音遥控器、微信小程序、手机app等设备替代机顶盒原有遥控器,以实现语音操控、节目预约、多屏互动等交互功能。

现有系统存在的问题:

1、一半以上的机顶盒系统无法兼容websocket协议,使得微信小程序、手机应用等互动应用无法接入iptv系统。

2、原有的消息系统用户在线信息保存在中心节点,所有机顶盒到消息服务器的连接通过中心服务器调度。中心服务器为整个系统的性能瓶颈,不易扩展,并且原有的消息服务集群需按照用户最大容量搭建,服务器资源消耗巨大。

3、不支持跨屏幕跨多终端通信、不支持动态扩容缩减以及新增扩容子节点无法确保自身代码最新。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于服务器间通信的多协议分布式消息服务系统。

本发明的目的可以通过以下技术方案来实现:

一种基于服务器间通信的多协议分布式消息服务系统,其特征在于,包括统一api接口、负载均衡器、公共存储模块和至少1个子节点服务器,所述统一api接口通过多协议连接不同终端,所述子节点服务器通过负载均衡器与所述统一api接口连接,所述公共存储模块分别连接多个子节点服务器,其中,

所述子节点服务器接收由所述负载均衡器随机分配的前端用户请求并响应;

所述公共存储模块维护有各子节点服务器与前端用户的连接信息。

进一步地,所述多协议包括http协议、https和websocket协议。

进一步地,所述公共存储模块中连接信息的更新方式为:

前端用户通过长连接定时发送心跳消息,接收该心跳消息的子节点服务器与前端用户实现连接,并将连接信息发送给公共存储模块,实现更新。

进一步地,所述子节点服务器响应前端用户请求的具体过程是:

根据所述连接信息,判断该前端用户请求对应的前端用户与该子节点服务器连接,若是,则直接处理所述前端用户请求并反馈通知消息,若否,则查找所述连接信息,将对所述前端用户请求的处理结果转发给前端用户请求实际连接的另一子节点服务器,由该另一子节点服务器向前端用户发送通知消息。

进一步地,在不同协议下,所述统一api接口向终端发送的消息内容相同。

进一步地,该系统还包括压力检测模块,该压力检测模块实时检测系统当前负载,判断系统当前负载是否满足扩容条件或缩减条件,若是,则执行相应的子节点服务器扩容操作或子节点服务器缩减关闭操作,若否,则不动作。

进一步地,所述扩容条件为系统当前负载超过第一指定数值;

所述缩减条件为系统当前负载低于第二指定数值。

进一步地,该系统还包括代码更新模块,在子节点服务器启动时,所述代码更新模块由git服务器中拉取git代码至所述子节点服务器的本地服务目录。

进一步地,该系统还包括监测检查模块,该监测检查模块实时判断各子节点服务器的协议服务端口通信是否正常,并将判断结果为否的子节点服务器关闭。

进一步地,所述终端包括手机端设备、电视机顶盒设备、内置智能操作系统的电视设备或pc端设备。

与现有技术相比,本发明具有以如下有益效果:

1、基于http、websocket协议为iptv机顶盒提供实时消息通信服务,无论机顶盒使用哪个协议接入,响应的消息内容相同,大幅降低了开发成本,同时可以兼容所有机顶盒,解决了机顶盒因为系统兼容性原因,无法接入socket方案实现实时通信的问题。

2、无中心节点,支持跨屏幕跨终端通信方法,支持自动扩容缩减子节点,扩容子节点自更新代码,缩减子节点不造成业务中断的分布式系统。

3、实现了服务器环境自动部署、代码自动更新、自动检查健康状态后加入服务集群,可根据集群整体负载情况自动伸缩,无需人工干预。

4、子节点服务器启动后,会先拉取git代码到本地服务目录,确保自身服务所使用的代码是最新的,保证新增子节点服务器也不会因为原始镜像代码老旧造成服务异常。

5、具备服务器监控检查机制,只有服务器对应协议服务端口通信正常,才会将服务器加入到集群的服务列表中对外提供服务,确保了集群的服务稳定性。

附图说明

图1为本发明无中心分布式工作流程的示意图;

图2为本发明基于压力检测的自动扩容缩减子节点的流程示意图。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。

一种基于服务器间通信的多协议分布式消息服务系统,其特征在于,包括统一api接口、负载均衡器、公共存储模块和至少1个子节点服务器,统一api接口通过多协议连接不同终端,子节点服务器通过负载均衡器与统一api接口连接,公共存储模块分别连接多个子节点服务器,其中,子节点服务器接收由负载均衡器随机分配的前端用户请求并响应,用户当前请求由所述子节点服务器全权处理,成为受控用户;公共存储模块维护有各子节点服务器与前端用户的连接信息。

多协议包括http(hypertexttransferprotocol,超文件传输协议)协议、https(全称:hypertexttransferprotocoloversecuresocketlayer)以及websocket协议,其中websocket协议具有支持双向通信、更灵活、更高效、可扩展性更好等优点。上述三种协议,涵盖了各种终端通信请求所使用的协议

公共存储模块中连接信息的更新方式为:前端用户通过长连接定时发送心跳消息,接收该心跳消息的子节点服务器与前端用户实现连接,并将连接信息发送给公共存储模块,实现更新。

如图1所示,子节点服务器响应前端用户请求的具体过程是:根据连接信息,判断该前端用户请求对应的前端用户与该子节点服务器连接,若是,则直接处理前端用户请求并反馈通知消息,若否,则查找连接信息,将对前端用户请求的处理结果转发给前端用户请求实际连接的另一子节点服务器,由该另一子节点服务器向前端用户发送通知消息。当其他子节点服务器需要发送通信给非自身连接的用户,则其他子节点服务器通过公共存储模块,获取目标用户所在子节点服务器信息,其他子节点服务器根据最新子节点服务器信息,转发通信到目标用户连接所在子节点服务器,目标用户连接所在子节点服务器接到信息后,发送通信给自身连接中的目标用户。

集群中子节点服务器各自负责各自连接的用户,不存在中心节点,非websocket协议的通知将由任意服务器响应,websocket协议如当前服务器不存在对应用户连接,则通过内网转发请求到对应服务器实现相同数据通知对应用户。

终端包括但不限于:手机端设备、电视机顶盒设备、内置智能操作系统的电视设备或pc端设备等。基于上述多协议分布式消息服务系统可实现包含但不限于:手机端设备通知电视机顶盒设备、pc端设备通知电视机顶盒设备,pc端设备通知智能电视端设备等等的复杂通信,支持跨屏幕跨终端通信。

在不同协议下,统一api接口向终端发送的消息内容相同,即该消息服务系统定义了一多屏互动的消息协议。以频道通知为例,当服务器需要通知机顶盒端频道跳转时,机顶盒端可以通过两种协议获取。如采用http协议,http请求将取得返回json内容:

{"action":"remoter","params":{"value":"53","key":"key_5"}}

如机顶盒以websocket协议连接至服务器,则会得到服务器主动推送内容:

{"action":"remoter","params":{"value":"53","key":"key_5"}}

同理,服务器通知机顶盒端搜索操作时,http和websocket协议,得到的通知内容也一样为:

{"action":"search","params":{"type":"title","kw":"战狼"}}

无论使用http协议还是websocket协议,终端收到的通知内容都是完全相同的。基于此消息协议,多屏互动得以实现。

以图1为例,机顶盒根据自身选择协议接入统一api接口,实现与分布式消息服务系统的连接,负载均衡器elb将请求转发给子节点服务器,websocket协议将会写入当前连接服务器信息到公共存储模块redis,方便其他服务器发送通知给当前连接服务器。http协议将直接获取上一次的遥控结果,websocket协议将直接接到遥控结果,二者数据完全一致。

在某些实施例中,该系统还包括压力检测模块,该压力检测模块实时检测系统当前负载,判断系统当前负载是否满足扩容条件或缩减条件,若是,则执行相应的子节点服务器扩容操作或子节点服务器缩减关闭操作,若否,则不动作,如图2所示。扩容条件为系统当前负载超过第一指定数值;缩减条件为系统当前负载低于第二指定数值。在扩容子节点服务器hostx时,随机启动shell,并启动web服务,将子节点服务器hostx加入服务列表,同时从git服务器拉取最新代码和最新配置。基于分布式方式,扩容和缩减子节点服务器不中断业务逻辑。

在某些实施例中,该系统还包括代码更新模块,在子节点服务器启动时,代码更新模块由git服务器中拉取git代码至子节点服务器的本地服务目录,保证新增子节点服务器也不会因为原始镜像代码老旧造成服务异常。

子节点服务器自更新代码,实现方法步骤包括:子节点服务器原始镜像包含随机启动的初始化脚本,脚本在开机启动时执行,脚本中设计方法逻辑如下:通过git协议,从默认代码仓库拉取最新代码到本机、修改相关服务代码目录和文件权限、启动相关web服务。子节点服务器配合初始化脚本,可实现扩容后启动自更新服务器代码并启动相关服务功能。

在某些实施例中,该系统还包括监测检查模块,该监测检查模块实时判断各子节点服务器的协议服务端口通信是否正常,并将判断结果为否的子节点服务器关闭。通过监测检查模块可实现服务器的健康状态监测,只有健康的子节点服务器才加入服务列表中对外提供服务,确保了集群的服务稳定性。

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

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