[发明专利]一种基于长连接的消息处理方法和消息处理装置在审
申请号: | 201310425410.6 | 申请日: | 2013-09-17 |
公开(公告)号: | CN103457841A | 公开(公告)日: | 2013-12-18 |
发明(设计)人: | 李睿 | 申请(专利权)人: | 北京京东尚科信息技术有限公司 |
主分类号: | H04L12/58 | 分类号: | H04L12/58;H04L29/08;G06F17/30 |
代理公司: | 中原信达知识产权代理有限责任公司 11219 | 代理人: | 刘光明;陆锦华 |
地址: | 100080 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 连接 消息 处理 方法 装置 | ||
技术领域
本发明涉及一种基于长连接的消息处理方法和消息处理装置。
背景技术
随着互联网技术的发展,各类应用系统中往往需要频繁地将消息发送到客户端,例如在电子商务领域中,很多应用譬如监控、库存变化、即时报价系统都需要将后台发生的变化实时传送到客户端,传统的一种模式是客户发送轮训请求,不停的从服务器获取数据,这种方式同时增加了客户端与服务器的工作量,因此出现了长连接技术以改进客户端获取消息的方式。长连接推送实现客户端请求服务器,服务器一直保持此连接。服务器从消息源(mq或者其他消息来源)获取消息,进行分拣(过滤掉一些不重要的字段),最后发送给指定的客户端。相比传统做法,无须客户端不停地刷新、发送请求,这样服务器的压力就会变小,并且可以实时的获取最新数据。再加上使用nio,并发连接数目很多的场景下对于降低服务器的资源负载非常有效。
目前关于长连接推送技术主要都是基于浏览器+ajax长轮询实现的。一个比较成型的框架是Pushlet。但是随着系统的不断扩张,终端数目的日益增加、终端所使用的浏览器的种类的不断出新,Pushlet也暴露出以下不足之处:
Pushlet需要使用能工作在任何平台、所有浏览器版本的DHTML库。也就是说针对不同的浏览器,需要准备不同的DHTML库,存在对浏览器的依赖性;当数目稍大(例如100个以上)的客户端通过Pushlet连接到服务器时,服务器上的线程和套接字资源都将出现紧张,也就是说。Pushlet对客户端的容量有限。
发明内容
有鉴于此,本发明提供一种基于长连接的消息处理方法和消息处理装置,在基于长连接的消息处理中能够实现跨浏览器平台处理,并且对客户端的容量较大。
为实现上述目的,根据本发明的一个方面,提供了一种基于长连接的消息处理方法。
本发明的基于长连接的消息处理方法包括:对于服务器集群中的各个服务器,该服务器使用一个或多个线程管理与自身与客户端的长连接,每个所述线程用于维持预设数目个所述长连接;所述服务器获取来自于消息源的消息,然后将该消息提供给订阅该消息的客户端。
可选地,所述将该消息提供给订阅该消息的客户端的步骤包括:所述服务器从自身连接的消息源获取消息,确认订阅该消息的客户端与所述服务器连接,然后将该消息发送给该客户端。
可选地,所述将该消息提供给订阅该消息的客户端的步骤包括:所述服务器从自身连接的消息源获取消息,确认订阅该消息的客户端与所述服务器集群中的另一服务器连接,然后将该消息发送给该另一服务器,以供该另一服务器将该消息发送给订阅该消息的客户端。
可选地,所述将该消息提供给订阅该消息的客户端的步骤之前,还包括:所述服务器根据所述客户端的配置信息对该客户端订阅的消息进行过滤。
可选地,所述将该消息提供给订阅该消息的客户端的步骤之后,还包括:所述服务器确认该消息发送失败,然后记录发送失败的时间;所述服务器确认与该客户端的长连接恢复,然后向该客户端发送包含所述发送失败的时间的丢包消息,以供所述客户端根据所述丢包消息查询所述发送失败的消息。
根据本发明的另一方面,提供了一种基于长连接的消息处理装置。
本发明的基于长连接的消息处理装置设置在服务器集群中的各个服务器中,该消息处理装置包括:长连接管理模块,用于使用一个或多个线程管理所述服务器与客户端的长连接,每个所述线程用于维持预设数目个所述长连接;获取发送模块,用于获取来自于消息源的消息,然后将该消息提供给订阅该消息的客户端。
可选地,所述获取发送模块还用于:从所述服务器连接的消息源获取消息,确认订阅该消息的客户端与所述服务器连接,然后将该消息发送给该客户端。
可选地,所述获取发送模块还用于:所述服务器从自身连接的消息源获取消息,确认订阅该消息的客户端与所述服务器集群中的另一服务器连接,然后将该消息发送给该另一服务器;以及,接收另一服务器发送的消息,然后将该消息发送给自身连接的订阅该消息的客户端。
可选地,所述获取发送模块还用于对获取的所述客户端订阅的消息根据所述客户端的配置信息对该客户端订阅的消息进行过滤。
可选地,还包括失败处理模块,用于在所述获取发送模块将客户端订阅的消息发送给该客户端之后,确认该消息发送失败,然后记录发送失败的时间,以及确认与该客户端的长连接恢复,然后向该客户端发送包含所述发送失败的时间的丢包消息,以供所述客户端根据所述丢包消息查询所述发送失败的消息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司,未经北京京东尚科信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310425410.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:用于分布式系统的负载均衡及高可用性子系统及方法
- 下一篇:一种凉水塔