本发明关连于一种信息处理技术,特别是一种自动增减数据消费者的方法以及使用该方法的装置。
背景技术:
::为了即时处理巨量数据的大量信息,系统大多会配备信息队列(MessageQueue)来做为缓冲与暂存功能,再由信息消费者(MessageConsumers)来提取信息并逐一处理。传统的信息队列提取机制多使用多程序或多线程定期向信息队列询问,并且于必要时提取及处理信息。频繁地向信息队列询问将增加运算成本与信息队列的负担,以及信息提取速度无法跟上信息队列中缓存信息的剧烈变化等问题。因此,需要一种自动增减数据消费者的方法以及使用该方法的装置,用以解决以上所述的问题。技术实现要素:本发明的实施例提出一种自动增减数据消费者的方法,由数据消费者服务器中的处理单元执行,包含以下步骤。从多个数据消费者接收多个状态更新请求,其中,每一状态更新请求包含忙碌状态或闲置状态,而忙碌状态代表数据消费者从队列读取数据并进行处理。计算数据消费者的数目、忙碌状态的数目以及闲置状态的数目。依据数据消费者的数目、忙碌状态的数目以及闲置状态的数目估计增加数据消费者的数目,以及产生上述估计数目的数据消费者。本发明的实施例提出一种自动增减数据消费者的装置,至少包含处理单元。处理单元从多个数据消费者接收多个状态更新请求,其中,每一状态更新请求包含忙碌状态或闲置状态,而忙碌状态代表数据消费者从队列读取数据并进行处理。处理单元计算数据消费者的数目、忙碌状态的数目以及闲置状态的数目,依据数据消费者的数目、忙碌状态的数目以及闲置 状态的数目估计增加数据消费者的数目,以及产生上述估计数目的数据消费者。附图说明图1为依据本发明实施例的网络系统架构的示意图。图2为依据本发明实施例的服务器的系统架构图。图3为依据本发明实施例的软件架构示意图。图4为依据本发明实施例的自动增减数据消费者方法的流程图。图5为依据本发明实施例的数据消费者服务器的管理方法流程图。其中,附图标记说明如下:10网络架构;110队列服务器;120~150数据消费者服务器;160负载监看服务器;210处理单元;220显示单元;230输入装置;240储存装置;250存储器;260通讯接口;310队列;330_0_0~330_m_n数据消费者;350_0~350_m自动增减模块;370负载监看模块;S410~S477方法步骤;S510~S530方法步骤。具体实施方式以下说明是为完成发明的较佳实现方式,其目的在于描述本发明的基 本精神,但并不用以限定本发明。实际的
发明内容必须参考之后的权利要求范围。必须了解的是,使用于本说明书中的”包含”、”包括”等词,用以表示存在特定的技术特征、数值、方法步骤、作业处理、元件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、元件、组件,或以上的任意组合。于权利要求中使用如”第一”、"第二"、"第三"等词是用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序,先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。本发明实施例提出一种网络系统架构,包含使用在分散式运算环境的多部服务器。图1为依据本发明实施例的网络系统架构的示意图。服务器110(可称为队列服务器),用以提供一个队列,例如RabbitMQ,AWSSQS等。队列是一种数据结构,用以让一或多个数据生产者以非同步的方式传送数据给一或多个数据消费者。例如,一或多个数据生产者可将数据放置于队列,而一或多个数据消费者可非同步地消费(亦即是移除/读取)这些数据。队列以一个顺序缓存数据,以及使用单一许可来管理数据生产者及数据消费者的存取,使得一个时间只有一个数据生产者或消费者可存取队列。例如,为了新增数据至队列中,数据生产者可首先取得排除其他数据生产者及消费者的许可。如果队列中存在空间,数据生产者可接着新增数据于队列的尾端。否则,数据生产者可继续等待,直到一个数据消费者从队列的顶端移除或读取数据,从而创造空间。服务器120至150(亦可称为数据消费者服务器)形成一个集群(cluster),每部服务器包含一个自动增减模块(automaticscalingmodule),用以监督数据消费者的处理状态来自动增加或减少数据消费者。自动增减模块可实施于网页服务器(Webserver),并使用特定通讯协议(例如超文本传输通讯协议HTTP、超文本安全传输通讯协议HTTPS等)回应数据消费者的请求。数据消费者可实施于一个程序(processes)的不同线程(threads)。线程是可被操作系统调度的最小处理单位。相同程序中存在的线程(例如数据消费者)共享计算资源(例如存储器);不同程序间的线程则无法分享资源。理论上,一个程序中的线程可共享程 序代码(code)及上下文(context),上下文包含于任何时间可让不同线程参考的变数值。然而,数据消费者间因为不需要互相沟通,仅需要独立回报处理状态给自动增减模块,可不共享上下文,使得数据数据消费者间不具备相依性。数据消费者间的松耦合(looselycoupled)特性,使得自动增减模块可依据数据消费者的处理状态任意增加或减少数据消费者。服务器160(亦可称为负载监看服务器,load-monitoringserver)监控与分析正提供服务的数据消费者服务器,并根据分析结果将一部可提供服务的数据消费者服务器新增至服务器集群中或将一部数据消费者服务器从服务器集群移出。本领域技术人员了解,如上所述的信息队列服务器、数据消费者服务器、监督服务器所包含的功能亦可以虚拟机器(virtualmachines)实现,而以上功能的任意组合可实现于同一部实体电子装置中,本发明并不因此而受限。图2为依据本发明实施例的服务器的系统架构图。此系统架构可实施于信息队列服务器110、数据消费者服务器120至150以及监督服务器160中的任一者,至少包含处理单元210。处理单元210可使用多种方式实施,例如以专用硬件电路或通用硬件(例如,单一处理器、具平行处理能力的多处理器、图形处理器或其他具运算能力的处理器),并且在执行程序代码或软件时,提供之后所描述的功能。系统架构另包含存储器250用以储存执行过程中需要的数据,例如,变数、数据表(datatables)等,以及储存单元240,用以储存各式各样的电子文件,例如,网页、文件、音频文件、视频文件等。系统架构另包含通讯接口260,让处理单元110可借以跟其他电子装置进行沟通。通讯接口260可以是局域网(localareanetwork,LAN)通讯模块或无线局域网通讯模块(WLAN)。输入装置230可包含键盘、滑鼠、触控面板等。使用者可按压键盘上的硬键来输入字元,借由操作滑鼠来控制鼠标,或者是在触控面板制造手势来控制执行中的应用程序。手势可包含单击、双击、单指拖曳、多指拖曳等,但不限定于此。显示单元220可包含显示面板(例如,薄膜液晶显示面板、有机发光二极管面板或其他具显示能力的面板),用以显示输入的字元、数字、符号、拖曳鼠标的移动轨迹、绘制的图案或应用程序所提供的画面,提供给使用者观看。于一些实施方式中,一个软件模块(也可以是数据消费者)可周期性询 问队列310中缓存的数据数量,并且依据询问的结果增加或减少数据消费者的数目。然而,队列310频繁地回复询问将造成额外的计算负担,而形成系统的瓶颈。图3为依据本发明实施例的软件架构示意图。队列310以一个时间顺序缓存数据生产者提供的数据。数据消费者330_0_0至330_m_n中的任一者使用一部数据消费者服务器的处理单元210执行。一部数据消费者服务器的处理单元210载入并执行自动增减模块350_0至350_m中的任一者,用以掌握一或多个数据消费者的处理状态。当数据消费者成功地从队列310读取数据并进行处理时,使用通讯协议(超文本传输通讯协议HTTP、超文本安全传输通讯协议HTTPS等)传送忙碌状态(busystate)给管理的自动增减模块;反之,传送闲置状态(idlestate)给管理的自动增减模块。当自动增减模块(举例来说,自动增减模块350_0)接收到数据消费者330_0_0至330_0_n中的一者的状态时,更新代表忙碌状态及闲置状态的数目。负载监看服务器160的处理单元210周期性载入并执行负载监看模块370的程序代码,用以调查(poll)所有数据消费者服务器的自动增减模块350_0至350_m,了解它们目前提供服务的能力。当自动增减模块(举例来说,自动增减模块350_0)接收到负载监看模块370的调查时,执行自动增减估计,并依据估计结果判断数据消费者服务器是否超载,而无法产生更多的数据消费者来读取及处理队列310中缓存的数据。若是,则回复代表超载的信息;否则回复代表正常的信息。如果自动增减模块350_0至350_m中的任一者连续回复代表超载的信息,选择并组态一部可用的数据消费者服务器,用以加入至服务器集群并提供服务。图4为依据本发明实施例的自动增减数据消费者方法的流程图。举例来说,自动增减数据消费者方法由数据消费者服务器中的处理单元210于载入并执行自动增减模块350_0的程序代码时实施。于接收到一个请求(request)后(步骤S410),判断请求的类型为何(步骤S420)。此请求可使用超文本传输通讯协议(HTTP)或超文本安全传输通讯协议(HTTPS)传送。如果此请求为从数据消费者330_0_0至330_0_n中的一者接收的状态更新请求(state-updaterequest)(步骤S420的右边路径),执行状态更新程序(步骤S471至S477)。如果此请求为从负载监看模块370接收的监看查核请求(monitoring-checkrequest)(步骤S420的左边路径),执行自动增减程序(步 骤S451至S457)。于状态更新程序中,将当前执行中的数据消费者总数”current_total_process”加一(步骤S471),接着判断状态更新请求中的状态码为何(步骤S473)。若状态码代表忙碌状态(步骤S473的左边路径),将忙碌值”busy_process”加一(步骤S475)。若状态码代表闲置状态(步骤S473的右边路径),将闲置值”idle_process”加一(步骤S477)。当前执行中的数据消费者总数、忙碌值及闲置值将使用于之后所述的自动增减程序。于自动增减程序中,首先执行自动增减估计(步骤S451),接着依据估计结果判断服务器是否超载(over-loading)(步骤S453)。若是,则回复代表超载的自动增减状态码(步骤S457);否则,依据估计结果增加或减少数据消费者(步骤S455),并回复代表正常的自动增减状态码(步骤S457)。于步骤S451,自动增减估计参考如步骤S471至S477的状态更新结果计算数据消费者的估计产生数目,而不直接询问队列310缓存的数据数量。自动增减程序中执行的范例演算法如下所示:演算法中的参数说明如表1所示:表1详细来说,此演算法可计算出允许产生数据消费者的最大数目”thread_max”以及数据消费者的估计产生数目”thread_create_num”。如果数据消费者的估计产生数目”thread_create_num”为0,或者是当前执行中的数据消费者总数”current_total_thread”加上数据消费者的估计产生数目”thread_create_num”超过最大数据消费者的数目上限”thread_upper_limit”,代表数据消费者服务器极度忙碌,无法产生更多的数据消费者来读取及处理队列310中缓存的数据,并且回复代表超载的信息”HTTP503”。如果当前执行中的数据消费者总数”current_total_thread”加上数据消费者的估计产生数目”thread_create_num”不超过最大数据消费者的数目上限”thread_upper_limit”,代表数据消费者服务器还可以产生更多的数据消费者来读取及处理队列310中缓存的数据,并且回复代表正常的信息”HTTP200”。以下更以二个使用案例说明自动增减模块的运作。假设演算法参数设定如下:thread_max_default=5;thread_threshold=5;thread_max_increase=1; thread_max_decrease=1;thread_lower_limit=2;以及thread_upper_limit=80。于第一个使用案例中,数据消费者忙碌状态累计数目”busy_thread”为5、数据消费者闲置状态累计数目”idle_thread”为0、允许产生数据消费者的最大数目”thread_max”为79以及当前执行中的数据消费者总数”current_total_thread”为64。当busy_thread减掉idle_thread的值大于线程门限值”thread_threshold”时,计算出来的允许产生数据消费者的最大数目”thread_max”为80以及数据消费者的估计产生数目”thread_create_num”为16。接着,产生16个数据消费者,并回复”HTTP503”给负载监看模块370。于第二个使用案例中,数据消费者忙碌状态累计数目”busy_thread”为0、数据消费者闲置状态累计数目”idle_thread”为5、允许产生数据消费者的最大数目”thread_max”为20以及当前执行中的数据消费者总数”current_total_thread”为0。当busy_thread减掉idle_thread的值大于线程门限值”thread_threshold”时,计算出来的允许产生数据消费者的最大数目”thread_max”为19以及数据消费者的估计产生数目”thread_create_num”为3。接着,产生3个数据消费者,并回复”HTTP200”给负载监看模块370。图5为依据本发明实施例的数据消费者服务器的管理方法流程图。从一部数据消费者服务器的自动增减模块接收到信息后(步骤S510),判断是否需要增加可用的数据消费者服务器(步骤S520)。若是,则选择并组态一部可用的数据消费者服务器,用以加入至服务器集群并提供服务(步骤S530);否则,继续从此数据消费者服务器接收下一个信息(步骤S510)。于步骤S520,详细来说,当从此自动增减模块连续接收到一定数量代表超载的信息,例如5次,代表需要增加可用的数据消费者服务器。虽然图2中包含了以上描述的元件,但不排除在不违反发明的精神下,使用更多其他的附加元件,已达成更佳的技术效果。此外,虽然图4与图5的方法流程图采用特定的顺序来执行,但是在不违法发明精神的情况下,本领域技术人员可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限缩本发明。相反地,此发明涵盖了本领域技术人员显而易见的修 改与相似设置。所以,权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。当前第1页1 2 3 当前第1页1 2 3