用于在集群架构模式下端到端的消息推送的方法和服务器技术

技术编号:23349303 阅读:18 留言:0更新日期:2020-02-15 05:56
本发明专利技术公开了用于在集群架构模式下端到端的消息推送的方法和服务器,涉及计算机技术领域。该方法的一具体实施方式包括:消息缓存步骤:当会话判断步骤确定服务器所接收到的消息的消息消费者没有与本服务器建立连接会话时,本服务器将所接收到的消息缓存到服务器集群的Key‑Value存储系统;消息获取步骤:本服务器定时地查询所述Key‑Value存储系统,并从Key‑Value存储系统上获取满足下述条件的消息:即,所获取的消息的消息消费者已与本服务器建立连接会话。该实施方式因为服务器集群采用Key‑Value存储系统,所以克服了WebSocket通讯的方式在集群架构模式下需要不同的服务器有不同的消息消费者的局限,进而达到服务器集群中的服务器的弹性伸缩以及消息精准快速到达消费端的技术效果。

Method and server for end-to-end message push in cluster architecture mode

【技术实现步骤摘要】
用于在集群架构模式下端到端的消息推送的方法和服务器
本专利技术涉及计算机
,尤其涉及一种用于在集群架构模式下端到端的消息推送的方法和服务器。
技术介绍
当服务器需要给客户端页面(例如,HTML5页面)推送消息时候,一般有两种方式,一种是页面采用定时轮询方式通过服务器提供的接口获取消息,也称作Client-Pull(客户端拉取);另一种是采用WebSocket通讯方式,WebSocket通讯方式是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动把消息推送给页面,也称作Server-Push(服务器推送)。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:对于上述第一种方式,即,采用页面定时轮训的方式,其缺点是消息时效性差,不能及时回复消息给客户端页面,而且当客户端数量非常庞大时候,服务器压力也很大,如果服务器长时间没有消息时候,客户端每次的轮询都是无效的调用。对于上述第二种方式,即,采用WebSocket通讯的方式,在集群架构模式下,当从消息生产者接收到消息的服务器不是与该消息所对应的客户端页面通过WebSocket已建立了连接会话的服务器时,接收到消息的服务器无法把其接收到的消息传输给该消息所对应的客户端页面。如果是消费MQ(MessageQueue)消息时,让所有服务器接收MQ消息,这种情况需要不同的服务器有不同的消息消费者,不利于服务器的弹性伸缩,不能让消息精准快速到达消费端。
技术实现思路
>有鉴于此,本专利技术实施例提供一种用于在集群架构模式下端到端的消息推送的方法和服务器,能够解决当服务器与客户端页面HTML5通过WebSocket长连接,在服务器集群架构模式下,服务器主动推送消息到指定客户端页面HTML5的方案,实现一种集群架构模式下WebSocket端到端通讯方法。为实现上述目的,根据本专利技术实施例的一个方面,提供了一种用于在集群架构模式下端到端的消息推送的方法,所述方法用于在服务器集群中工作的服务器,所述方法包括:消息接收步骤:所述服务器从消息生产者接收消息;会话判断步骤:所述服务器判断所接收到的消息的消息消费者是否已与所述服务器建立连接会话;消息缓存步骤:当所述会话判断步骤确定所接收到的消息的消息消费者没有与所述服务器建立连接会话时,所述服务器将所接收到的消息缓存到所述服务器集群的Key-Value存储系统;消息获取步骤:所述服务器定时地查询所述Key-Value存储系统,并从所述Key-Value存储系统上获取满足下述条件的消息:即,所获取的消息的消息消费者已与所述服务器建立连接会话;消息发送步骤:a).当所述会话判断步骤确定所述服务器所接收到的消息的消息消费者已与所述服务器建立连接会话时,所述服务器将所接收到的消息发送到所接收到的消息的消息消费者,并且b).当所述消息获取步骤从所述Key-Value存储系统上获取到消息时,所述服务器将所获取到的消息发送到所获取到的消息的消息消费者。根据本专利技术实施例的另一方面,提供了一种用于在集群架构模式下端到端的消息推送的服务器,所述服务器用于在服务器集群中工作,所述服务器包括:消息接收模块,从消息生产者接收消息;会话判断模块,判断所接收到的消息的消息消费者是否已与所述服务器建立连接会话;消息缓存模块,当所述会话判断模块确定所接收到的消息的消息消费者没有与所述服务器建立连接会话时,将所接收到的消息缓存到所述服务器集群的Key-Value存储系统;消息获取模块,定时地查询所述Key-Value存储系统,并从所述Key-Value存储系统上获取满足下述条件的消息:即,所获取的消息的消息消费者已与所述服务器建立连接会话;消息发送模块,a).当所述会话判断模块确定所述消息接收模块所接收到的消息的消息消费者已与所述服务器建立连接会话时,所述消息发送模块将所接收到的消息发送到所接收到的消息的消息消费者,并且b).当所述消息获取模块从所述Key-Value存储系统上获取到消息时,所述消息发送模块将所获取到的消息发送到所获取到的消息的消息消费者。根据本专利技术实施例的又一方面,提供了一种用于在集群架构模式下端到端的消息推送的服务器集群,所述服务器集群包括:多个如上所述的服务器;和所述Key-Value存储系统。根据本专利技术实施例的又一方面,提供了一种电子设备其特征在于,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的方法。根据本专利技术实施例的又一方面,提供了一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如上所述的方法。上述专利技术中的一个实施例具有如下优点或有益效果:因为服务器集群采用Key-Value存储系统的技术手段,所以克服了现有技术中WebSocket通讯的方式在集群架构模式下需要不同的服务器有不同的消息消费者的局限,进而达到服务器集群中的服务器的弹性伸缩以及消息精准快速到达消费端的技术效果。根据本专利技术实施例的技术方案,消息发送模块独立,由独立线程完成消息发送,确保消息Worker不阻塞。消息不能直接发送给客户端时候,以服务器上存储的会话Key作为消息存储Key存储消息,作为服务实例精准查找消息依据。在集群架构模式下,多服务实例采用同一消息消费者,消息精准快速推送给消费。在集群架构模式下,多服务实例采用同一消息消费者,做到服务器弹性伸缩。在集群架构模式下,以服务器上存储的会话Key作为消息存储Key,消息可以精准的推送给消费端。在集群架构模式下,消息发送独立于消息Worker,消息可以0秒级到达消费端。上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明附图用于更好地理解本专利技术,不构成对本专利技术的不当限定。其中:图1A和图1B是本专利技术实施例可以应用于其中的示例性系统架构图,图1A示出了接收到消息的服务器已与消息的消息消费者建立了连接会话的情况,图1B示出了接收到消息的服务器没有与消息消费者建立连接会话的情况;图2是根据本专利技术实施例的框图,示出了本专利技术的服务器集群中的服务器A的构造;图3是根据本专利技术的流程图,示出了本专利技术的用于在集群架构模式下端到端的消息推送的方法;图4是本专利技术实施例可以应用于其中的示例性系统架构图;图5是适于用来实现本专利技术实施例的终端设备或服务器的计算机系统的结构示意图。具体实施方式以下结合附图对本专利技术的示范性实施例做出说明,其中包括本专利技术实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本专利技术的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。图1A和图1B示出了本专利技术实施例可以应用于其中的示例性系统架构图,分别对应两种消息收发情形。如图1A和图1B所本文档来自技高网...

【技术保护点】
1.一种用于在集群架构模式下端到端的消息推送的方法,所述方法用于在服务器集群中工作的服务器,所述方法包括:/n消息接收步骤:所述服务器从消息生产者接收消息;/n会话判断步骤:所述服务器判断所接收到的消息的消息消费者是否已与所述服务器建立连接会话;/n消息缓存步骤:当所述会话判断步骤确定所接收到的消息的消息消费者没有与所述服务器建立连接会话时,所述服务器将所接收到的消息缓存到所述服务器集群的Key-Value存储系统;/n消息获取步骤:所述服务器定时地查询所述Key-Value存储系统,并从所述Key-Value存储系统上获取满足下述条件的消息:即,所获取的消息的消息消费者已与所述服务器建立连接会话;/n消息发送步骤:/na).当所述会话判断步骤确定所述服务器所接收到的消息的消息消费者已与所述服务器建立连接会话时,所述服务器将所接收到的消息发送到所接收到的消息的消息消费者,并且/nb).当所述消息获取步骤从所述Key-Value存储系统上获取到消息时,所述服务器将所获取到的消息发送到所获取到的消息的消息消费者。/n

【技术特征摘要】
1.一种用于在集群架构模式下端到端的消息推送的方法,所述方法用于在服务器集群中工作的服务器,所述方法包括:
消息接收步骤:所述服务器从消息生产者接收消息;
会话判断步骤:所述服务器判断所接收到的消息的消息消费者是否已与所述服务器建立连接会话;
消息缓存步骤:当所述会话判断步骤确定所接收到的消息的消息消费者没有与所述服务器建立连接会话时,所述服务器将所接收到的消息缓存到所述服务器集群的Key-Value存储系统;
消息获取步骤:所述服务器定时地查询所述Key-Value存储系统,并从所述Key-Value存储系统上获取满足下述条件的消息:即,所获取的消息的消息消费者已与所述服务器建立连接会话;
消息发送步骤:
a).当所述会话判断步骤确定所述服务器所接收到的消息的消息消费者已与所述服务器建立连接会话时,所述服务器将所接收到的消息发送到所接收到的消息的消息消费者,并且
b).当所述消息获取步骤从所述Key-Value存储系统上获取到消息时,所述服务器将所获取到的消息发送到所获取到的消息的消息消费者。


2.如权利要求1所述的方法,
其中,所述消息包括:用户标识符和消息本体;
其中,当所接收到的消息被缓存到所述服务器集群的Key-Value存储系统中时,将所接收到的消息的用户标识符作为Key,将所接收到的消息的消息本体作为Value。


3.如权利要求1所述的方法,
其中,所述Key-Value存储系统是Redis存储系统。


4.如权利要求1所述的方法,
其中,在所述消息发送步骤将所获取到的消息成功地发送到消息消费者后,从所述Key-Value存储系统删除相应的消息。


5.如权利要求1所述的方法,
其中,所述消息消费者是HTML5页面,并且在所述消息消费者与所述服务器建立连接时,所述服务器向所述消息消费者返回用户标识符,并向所述消息消费者所关联的所述消息生产者通知所述消息消费者的所述用户标识符,所述用户标识符唯一标识所述消息消费者;并且在所述服务器本地以Key-Value形式存储WebSocket会话作为所述连接会话,所述用户标识符作为所述连接会话的Key,所述WebSocket会话作为所述连接会话的Value。


6.如权利要求5所述的方法,<...

【专利技术属性】
技术研发人员:杨俊涛黄浩魏斌
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1