[发明专利]拉取消息的方法、装置及系统在审
申请号: | 201610873366.9 | 申请日: | 2016-09-30 |
公开(公告)号: | CN107888637A | 公开(公告)日: | 2018-04-06 |
发明(设计)人: | 王小瑞;金晓军;强琦 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;G06F9/54 |
代理公司: | 北京市惠诚律师事务所11353 | 代理人: | 刘子敬 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 消息 方法 装置 系统 | ||
技术领域
本发明属于计算机领域,尤其涉及一种拉取消息的方法、装置及系统。
背景技术
消息中间件是用来发布/订阅消息的消息系统,该消息中间件通常提供两种消费消息的方式:推送(Push)和拉取(Pull)。消息中间件包括消息产生器(Producer)、消息消费端(Consumer)和消息服务器(Broker),其中,Producer通过Push方式将消息发布/推送到Broker上,Consumer通过Pull方式从Broker中拉取消息。
针对Pull方式,在大规范分布式系统下,Consumer需要向多个Broker轮询发起拉取请求。例如,在分布式系统下有100个Broker,一个Consumer要消息这100个Broker上的消息,此时,Consumer可以通过Pull方式从Broker拉取消息。
目前,Consumer通过Pull方式从Broker上拉取消息有以下两种方法:
(1)启动100个线程,每个线程对应于一个Broker,然后通过该线程发送pull(拉取)请求,然后Broker对该pull请求进行处理获取相应的应答消息,再利用线程接收返回给Consumer的应答消息,这样就完成Consumer从Broker上拉取消息的过程。
(2)仅启动一个线程,当需要从100个Broker上拉取消息时,Consumer只能通过该线程逐次轮询这100个Broker,Consumer首先利用该线程发送拉取请求到一个Broker,Broker接收到拉取请求后对该拉取请求进行处理,获取相应的应答消息,然后向Consumer返回一个应答消息,Consumer利用该线程接收返回的应答消息。Consumer通过Pull方法拉取Broker上的消息的过程:每个Broker都要花费发送拉取请求的时间T1,处理拉取请求的时间T2以及返回应答消息的时间为T3,共花费的时间为T=T1+T2+T3。在该方案中由于Consumer只能够使用一个线程,因此需要接收返回的应答消息之后,才能进行下一个消息的拉取,因此这样拉取100个Broker上的消息需要花费100倍的T。
第一种方式虽然实时性较好,但是需要使用100个线程,占用资源较多。第二种方式虽然占用资源较少,但是需要耗费时间较长,导致拉取消息的实时性和效率较差,上述两种Pull消息的方式,均无法同时兼顾拉取效率和资源利用率。
发明内容
本发明提供一种拉取消息的方法、装置及系统,用于解决现有Consumer从Broker上拉取消息的两种方式无法同时兼顾拉取效率和资源利用率的问题。
为了实现上述目的,本发明提供了一种拉取消息的系统,包括:消息消费端和消息服务器;
所述消息消费端,用于启动并初始化第一线程和第二线程,其中所述第一线程用于向所述消息服务器发送用于拉取消息的拉取请求;所述第二线程用于接收所述消息服务器返回的应答消息;
所述消息消费端,用于通过所述第一线程将所述拉取请求发送给对应的所述消息服务器,以及通过第二线程接收所述消息服务器发送的应答消息;
所述消息服务器,用于接收所述消息消费端发送的所述拉取请求,获取与所述拉取请求对应的所述应答消息并发送给所述消息消费端。
为了实现上述目的,本发明提供了一种拉取消息的方法,包括:
通过第一线程发送用于拉取消息的拉取请求给对应的消息服务器;
通过第二线程接收所述消息服务器返回的应答消息。
为了实现上述目的,本发明提供了一种拉取消息的装置,包括:
发送模块,用于通过第一线程发送用于拉取消息的拉取请求给对应的消息服务器;
接收模块,用于通过第二线程接收所述消息服务器返回的应答消息。
为了实现上述目的,本发明提供了一种拉取消息的系统,包括:消息消费端和至少一个消息服务器;
所述消息消费端,用于启动并初始化第一线程和第二线程,其中所述第一线程用于向所述消息服务器发送用于拉取消息的拉取请求;所述第二线程用于接收所述消息服务器返回的应答消息;
所述消息消费端,用于当拉取多个消息服务器上的消息时,将所有待发送的拉取请求进行排序,按照顺序通过所述第一线程将每个拉取请求发送给对应的消息服务器,以及通过所述第二线程逐次接收各消息服务器返回的应答消息;
所述消息服务器,用于接收所述消息消费端发送的所述拉取消息,获取与所述拉取请求对应的所述应答消息,以及将所述应答消息发送给所述消息消费端。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610873366.9/2.html,转载请声明来源钻瓜专利网。