CN102497419B - 一种面向大规模请求的esb任务调度方法及调度系统 - Google Patents
一种面向大规模请求的esb任务调度方法及调度系统 Download PDFInfo
- Publication number
- CN102497419B CN102497419B CN201110408109.5A CN201110408109A CN102497419B CN 102497419 B CN102497419 B CN 102497419B CN 201110408109 A CN201110408109 A CN 201110408109A CN 102497419 B CN102497419 B CN 102497419B
- Authority
- CN
- China
- Prior art keywords
- resource
- esb
- component
- district
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明公开了一种面向大规模请求的ESB任务调度方法及调度系统。所述的方法具体为:若资源缓冲区中存有相关的资源组件,则直接调用资源缓冲区的服务组件给web前端;若资源缓冲区中没有相关的资源组件,则直接从ESB总线上获取服务资源,同时把ESB总线上的相关的资源组件复制拷贝一个镜像,置换到资源缓冲区,优化资源缓冲区中的资源组合。所述的系统包括报文解析器、语义标签库、内存队列、报文响应器、资源缓冲区和缓存资源置换器。本发明的方法和系统通过预评估从当前一端时间到以后一端时间内的HTTP请求所要求的资源,并对资源缓冲区中的资源进行优化配置,避免总是从ESB总线上读取资源,提高了web服务访问效率,缩短系统负载及响应时间。
Description
技术领域
本发明属于计算机信息分析与数据处理领域,具体涉及一种ESB任务调度方法及调度系统。
背景技术
企业服务总线(Enterprise Service Bus,ESB)是传统中间件技术与XML、Web服务等技术结合的产物,其提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信和整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。
传统的ESB伸缩性方案是在ESB上重复发布相同的服务,形成服务镜像。当请求到来时,压力稍小的服务会首先处理消息,从而起到平衡系统负载的作用。但是,由于ESB系统本身较之传统技术存在更大的性能开销,所以两者之间在性能上还存在一定差距。传统的负载平衡系统是一个完整应用系统的镜像行为,而ESB则可以针对每个服务环节的具体负载,制定不同的平衡策略,这大大提高了系统实现伸缩的灵活度。ESB技术从EAI衍生而来,并伴随SOA的发展走过了相当长的路程,但它仍然面临一系列挑战,比如性能。SOA由服务集成发展到软件服务化,又进一步发展到基于服务的高级开发,使软件系统增加了很多环节,软件内部形成了很多消耗。而随着SOA应用规模的扩大,这些消耗将带来潜在的市场风险,如何将这些消耗降低到最小,是一个很重要的问题。
发明内容
本发明的目的是为了解决现有的ESB总线在面对大规模请求时负载过重,响应缓慢的问题,提出了一种面向大规模请求的ESB任务调度方法。
本发明的技术方案是:一种面向大规模请求的ESB任务调度方法,包括如下步骤:
S1.初始化一个资源缓冲区用于存储ESB总线中部分服务所提供的资源镜像;
S2.接受web服务器发送过来的HTTP请求,解析HTTP请求中URL信息并为报文分配优先级;
S3.把解析后的HTTP请求存入内存队列;
S4.从内存队列中异步读取HTTP请求并响应;
S5.根据响应分析得到的资源ID,从资源缓冲区中搜寻对应相关的资源组件;
S6.提取当前HTTP请求的语义信息:若资源缓冲区中存有相关的资源组件,则直接调用资源缓冲区的服务组件给web前端;若资源缓冲区中没有相关的资源组件,则直接从ESB总线上获取服务资源,同时把ESB总线上的相关的资源组件复制拷贝一个镜像,然后置换到资源缓冲区,优化资源缓冲区中的资源组合。
本发明还提出了一种面向大规模请求的ESB任务调度系统,具体包括:
报文解析器:用于解析HTTP请求中URL信息并为报文分配优先级,并在内存中创建该报文的镜像,之后让报文镜像入内存队列;
语义标签库:用于存储全部HTTP请求所对应的语义信息;
内存队列:用于缓存报文镜像并按照一定的顺序排列报文镜像并按照队列中的报文的优先级顺序进行动态排序同时调整报文位置;
报文响应器:用于从内存队列中读取高优先级的报文所请求的资源;
资源缓冲区:用于存储ESB总线中部分服务所提供的资源镜像,并向报文响应器提供相应报文请求的资源;
缓存资源置换器:用于实现资源缓冲区和ESB总线之间的交互,并优化资源缓冲区中的资源类别。
进一步的,上述HTTP请求是基于Rest架构的。
本发明的有益效果:本发明的方法和系统通过预评估从当前一端时间到以后一端时间内的HTTP请求所要求的资源,并对资源缓冲区中的资源进行优化配置,避免总是从ESB总线上读取资源,提高了web服务访问效率,缩短系统负载及响应时间。
附图说明
图1为本发明的ESB任务调度系统结构构图。
图2为本发明实施例的SQ排队算法过程示意图。
图3为本发明实施例的总线机制实现综合排队算法的技术框图。
图4为本发明实施例的解析器与报文响应器的异步工作示意图。
具体实施方式
下面结合附图和具体的实施方式对本发明作进一步的阐述。
本发明的面向大规模请求的ESB任务调度方法,具体包括如下步骤:
S1.初始化一个资源缓冲区用于存储ESB总线中部分服务所提供的资源镜像;
S2.接受web服务器发送过来的HTTP请求,解析HTTP请求中URL信息并为报文分配优先级。可以采用如下的具体过程:
S21.按照先来先服务的原则对HTTP请求进行预排序,服务请求到达的顺序位置值为:
假设缓存时,已有p个请求在等待,则这p个请求的到达顺序位置值按照先后顺序分别为: 其中,第(p+1)个SQ的到达顺序位置为这里用SQ表示HTTP请求。
S22.获取HTTP请求中的URL地址信息并创建该报文的镜像。
S23.与S21同时,搜寻当前URL地址所对应的语义信息(该语义信息包括请求主机,请求的类别,请求的服务优先级标签)。
S24.在报文镜像中添加当前报文的优先级顺序(优先级顺序由数字标示,其中优先级越高的请求所得到的数字越低)。
S3.把解析后的HTTP请求存入内存队列。可以采用如下具体过程如下:
1)初始化:
将被排序的记录数组R[1,...,n]排列,记为无序区;
2)第一趟扫描:
从无序区底部向上一次比较相邻的两个数组的优先级,若发现优先级数字高的在队列前(靠近对头),优先级数字低的在队列末尾,则交换两者的位置。即一次比较(R[n],R[n-1]),(R[n-1],R[n-2]),......,(R[2],R[1]);对于每对组合(R[j+1],R[j]),若R[j+1].key<R[j].key,则交换R[j+1]和R[j]的内容。
第一趟扫描完毕时,优先数字最低(优先级越高)的请求就到该队列的头部。
3)第二趟扫描:
扫描R[2,...,n],扫描完毕时,优先级数字第二低的请求就到R[2]的位置上......最后,经过n-1趟扫描可得到由序区R[1,...,n]。
S4.从内存队列中异步读取HTTP请求并响应,可以采用如下的具体过程:
1)为资源缓冲区设值临界量(简称S),临界量S代表资源缓冲区中的资源数量(这里描述的资源具体代指“报文”)
2)设临界区的访问信号量为mutex,mutex只可能取0或1,交由报文提供者和报文消费者异步修改muxtex,提供者和消费者每次访问内存队列时都要先检查mutex,若mutex为负则阻塞自己,等待对方释放资源。举例如下:若资源生产者获得内存队列的访问权限,则把mutex设为0,此时若资源消费者请求访问内存队列,检查mutex值时mutex值为0,则表示生产者正在访问内存队列,为保持数据的一致性,资源消费者阻塞自己之后等待消费者释放内存队列的访问权限。若资源生产方完成对内存队列的访问,则将mutext设置为1,之后资源消费者才能访问。
3)设缓冲区的最大长度为M,每次资源生产者向资源缓冲区中存入资源前都要检查当前资源缓冲区的S值是否小于M值,若S值等于M值,则表示缓冲区已满,此时不管mutex是否为1都阻塞资源生产者的调用,同时分配资源缓冲区的访问权给资源消费者。
4)资源生产者向资源缓冲区中插入资源后使S值自增一,而资源消费者从资源缓冲区取出资源就使S值自减一,若资源缓冲区中的S值为负,则表示资源缓冲区中缺少资源并有|S|个的进程请求等待该资源,此时阻塞资源消费者,控制权交由资源生产者。
S5.根据响应分析得到的资源ID,从资源缓冲区中搜寻对应相关的资源组件。具体可以采用如下过程:
S51.从请求队列中取得一条请求,分析得到所要请求的服务组件ID;
S52.搜寻符合当前ID的资源组件;
S53.如存在资源组件映射,则直接调用该资源;如缓冲区中不存在资源镜像,则进入步骤S54进行ESB总线和资源缓冲区的资源置换。
S54.首先为资源缓冲区中的资源组件初始化一个资源调用频率表;资源调用频率表中每项记录资源缓冲区中资源组件及其调用次数,如果该组件被报文响应器调用则将其调用次数加一;
报文响应器每调用一次资源缓冲区中的资源,置换器就遍历一次资源缓冲区,同时将ESB总线上的资源复制一个资源镜像,放到资源缓冲区中调用次数最少的那个资源组件的位置上。这里假设调用次数最少的在以后的一段时间内被调用的概率也较小,此过程可以看成一个预评估过程。
这里,具体将资源组件初始化如下四类:
第0类:没有被访问,没有被修改;
第1类:没有被访问,已被修改;
第2类:已被访问,没有被修改;
第3类:被访问,被修改。
S6.提取当前HTTP请求的语义信息:若资源缓冲区中存有相关的资源组件,则直接调用资源缓冲区的服务组件给web前端;若资源缓冲区中没有相关的资源组件,则直接从ESB总线上获取服务资源,同时把ESB总线上的相关的资源组件复制拷贝一个镜像,然后置换到资源缓冲区,优化资源缓冲区中的资源组合。
这里,优化资源缓冲区中的资源组合的过程具体采用K-means算法。具体描述为:接受输入量k;然后将n个数据划分为k个聚类一遍使得所获得的聚类满足:统一聚类中的对象相似度较高;而不同聚类中的对象相似度较少。聚类相似度是利用每个聚类对象的均值所获得一个“中心对象”(引力中心)来进行计算的。
具体实现过程如下:
S61.初始最近一段时间响应的一些SQ的语义信息区(这里是指和优先级信息并列的语义信息)。这里的最近一段时间可以预先人工设置。
S62.从语义信息区中的n个请求对象任意选择K个对象作为初始聚类中心。
S63.根据每个聚类对象的均值(中心对象)计算每个对象与这些中心对象的距离,并根据最小距离重新对相应对象进行划分。
S64.重新计算每个(有变化)聚类的均值(中心对象)。
S65.循环S63到S64直到每个聚类不再发生变化为止。
本发明的面向大规模请求的ESB任务调度系统如图1所示,具体包括:
解析器:用于解析HTTP请求中URL信息并为报文分配优先级,并在内存中创建该报文的镜像,之后让报文镜像入内存队列;
语义标签库:用于存储全部HTTP请求所对应的语义信息;
内存队列:用于缓存报文镜像并按照一定的顺序排列报文镜像并按照队列中的报文的优先级顺序进行动态排序同时调整报文位置;
报文响应器:用于从内存队列中读取高优先级的报文所请求的资源;
资源缓冲区:用于存储ESB总线中部分服务所提供的资源镜像,并向报文响应器提供相应报文请求的资源;
缓存资源置换器:用于实现资源缓冲区和ESB总线之间的交互,并优化资源缓冲区中的资源类别。
上述HTTP请求是基于Rest架构的。任务调度系统的具体工作过程如下:
解析器初始化一段内存用于缓存当前时刻到达的HTTP请求;本系统的web前端部分采取Rest架构,其HTTP请求报文中包含带有对应不同服务的URL。
1.解析器把当前时间得到的所有请求按照FCFS(First Come First Served)原则入队并服务,这里可以依据马尔科夫链原理进行;然后接受web服务器发送过来的HTTP请求并提取出URL地址;具体可采用如图2所示的一种实现方式(基于语义匹配的SQ排队过程示意图),具体过程可描述如下:
获取一条新的服务请求消息,读取消息头的语义信息分词,与服务提供者的语义标签库对比,根据匹配度插入等候的请求队列。
2.解析器再从语义标签库中搜寻当前URL地址所对应的语义信息和优先级数字,在复制得到HTTP请求镜像后在镜像的数据结构中添加刚获得的语义信息和优先级数字(优先级数字越低,优先级越高);具体可采用如图3所示的一种实现方式(总线机制实现综合排队算法技术框图),具体过程描述如下:
服务提供者(代指解析器)在内存中初始化一段等待队列,而服务请求者(代指web服务器)接受一个报文请求,并把请求报文装入等待队列中。服务提供者再从等待队列中读取报文并赋予优先级。其中的进站服务指代入队前的马尔科夫链顺序计算过程,出站服务指代装入内存队列。
3.解析器再把HTTP请求镜像指向内存队列的末尾;
4.内存队列根据队列中各请求信息的优先级自行动态调整请求排列顺序;
5.服务器按照生产者-消费者原则互斥地从内存队列中取出数据,并分析所要求的资源解析器入队和报文响应器出对按照生产者-消费者原则异步工作的。
具体互斥步骤描述如下:假定在解析器和报文响应器之间的内存队列中,缓冲队列的数量为M,这是利用互斥信号量mutex实现诸进程对缓冲队列的互斥使用;利用信号量semaphoreEmpty和semaphoreFull分别表示缓冲区中空缓冲区和满缓冲区的数量。又假定这些生产者和消费者相互等效,只要缓冲队列未满,生产者便可将消息送入缓冲区;只要缓冲队列未空,消费者便可从缓冲区中取走一个请求消息。生产者、消费者共用一个互斥信号量mutex,即生产者进程间、消费者进程间和生产者、消费者进程均互斥,同一时间仅能有一个进程访问缓冲队列。详细流程如图4(解析器和响应器的工作模型)所示。
6.根据分析得到的资源ID,报文响应器从资源缓冲区中搜寻对应相关的资源组件;
7.报文响应器把当前请求所述的语义信息发送给资源置换器,由缓存资源置换器利用K-means算法优化资源缓冲区中的资源组合;
8.若资源缓冲区中存有相关的资源组件,则报文响应器直接调用资源缓冲区的服务组件给web前端,同时通知资源置换器把该资源所述类别的计数加一;
9.如资源缓冲区中没有相关的资源组件,则报文响应器直接从ESB总线上获取服务资源,同时通知资源置换器调用资源置换算法把ESB总线上的相关的资源组件复制拷贝一个镜像,然后置换到资源缓冲区,并通过聚类算法优化缓冲区中资源配置。
本发明的方法和系统通过预评估从当前一端时间到以后一端时间内的HTTP请求所要求的资源,并对资源缓冲区中的资源进行优化配置,避免总是从ESB总线上读取资源,提高了web服务访问效率,缩短系统负载及响应时间。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
Claims (2)
1.一种面向大规模请求的ESB任务调度方法,包括如下步骤:
S1.初始化一个资源缓冲区用于存储ESB总线中部分服务所提供的资源镜像;
S2.接受web服务器发送过来的HTTP请求,解析HTTP请求中URL信息并为报文分配优先级;
S3.把解析后的HTTP请求存入内存队列;
S4.从内存队列中异步读取HTTP请求并响应;
S5.根据响应分析得到的资源ID,从资源缓冲区中搜寻对应相关的资源组件;
S6.提取当前HTTP请求的语义信息:若资源缓冲区中存有相关的资源组件,则直接调用资源缓冲区的服务组件给web前端;若资源缓冲区中没有相关的资源组件,则直接从ESB总线上获取服务资源,同时把ESB总线上的相关的资源组件复制拷贝一个镜像,然后置换到资源缓冲区,优化资源缓冲区中的资源组合;
步骤S5具体通过如下过程实现:
S51.从请求队列中取得一条请求,分析得到所要请求的服务组件ID;
S52.搜寻符合当前ID的资源组件;
S53.如存在资源组件映射,则直接调用该资源;如缓冲区中不存在资源镜像,则进入步骤S54进行ESB总线和资源缓冲区的资源置换;
S54.首先为资源缓冲区中的资源组件初始化一个资源调用频率表;资源调用频率表中每项记录资源缓冲区中资源组件及其调用次数,如果该组件被报文响应器调用则将其调用次数加一;报文响应器每调用一次资源缓冲区中的资源,置换器就遍历一次资源缓冲区,同时将ESB总线上的资源复制一个资源镜像,放到资源缓冲区中调用次数最少的那个资源组件的位置上;
步骤S54进行资源组件初始化时具体将资源组件初始化为如下四类:
第0类:没有被访问,没有被修改;
第1类:没有被访问,已被修改;
第2类:已被访问,没有被修改;
第3类:被访问,被修改。
2.根据权利要求1所述的ESB任务调度方法,其特征在于,优化资源缓冲区中的资源组合的过程具体采用K-means算法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110408109.5A CN102497419B (zh) | 2011-12-09 | 2011-12-09 | 一种面向大规模请求的esb任务调度方法及调度系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110408109.5A CN102497419B (zh) | 2011-12-09 | 2011-12-09 | 一种面向大规模请求的esb任务调度方法及调度系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102497419A CN102497419A (zh) | 2012-06-13 |
CN102497419B true CN102497419B (zh) | 2014-10-15 |
Family
ID=46189204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110408109.5A Active CN102497419B (zh) | 2011-12-09 | 2011-12-09 | 一种面向大规模请求的esb任务调度方法及调度系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102497419B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104360843A (zh) * | 2014-10-23 | 2015-02-18 | 桂林电子科技大学 | Soa系统中基于优先级的jms消息调度方法 |
CN105610814B (zh) * | 2015-12-25 | 2018-09-21 | 盛科网络(苏州)有限公司 | 降低报文转发延时的方法及系统 |
CN107291523B (zh) * | 2017-08-01 | 2020-06-09 | 北京亚鸿世纪科技发展有限公司 | 一种Web前端消息总线系统 |
CN110233865A (zh) * | 2018-03-06 | 2019-09-13 | 阿里巴巴集团控股有限公司 | 跨区域服务调用方法、装置和系统 |
CN109298950A (zh) * | 2018-08-15 | 2019-02-01 | 深圳壹账通智能科技有限公司 | 企业服务总线系统、数据处理方法、终端及存储介质 |
CN113938430B (zh) * | 2021-09-15 | 2023-06-30 | 山东有人物联网股份有限公司 | 一种流量控制方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7536182B2 (en) * | 2001-09-18 | 2009-05-19 | Nec Corporation | Method and system for extending the capabilities of handheld devices using local resources |
CN101699823A (zh) * | 2009-10-30 | 2010-04-28 | 深圳创维数字技术股份有限公司 | 一种在curl库中实现资源缓存的方法 |
CN101719083A (zh) * | 2009-12-18 | 2010-06-02 | 东南大学 | 结构化网构软件系统中任务执行的资源缓存方法 |
-
2011
- 2011-12-09 CN CN201110408109.5A patent/CN102497419B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7536182B2 (en) * | 2001-09-18 | 2009-05-19 | Nec Corporation | Method and system for extending the capabilities of handheld devices using local resources |
CN101699823A (zh) * | 2009-10-30 | 2010-04-28 | 深圳创维数字技术股份有限公司 | 一种在curl库中实现资源缓存的方法 |
CN101719083A (zh) * | 2009-12-18 | 2010-06-02 | 东南大学 | 结构化网构软件系统中任务执行的资源缓存方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102497419A (zh) | 2012-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102497419B (zh) | 一种面向大规模请求的esb任务调度方法及调度系统 | |
Khriji et al. | Design and implementation of a cloud-based event-driven architecture for real-time data processing in wireless sensor networks | |
CN100531055C (zh) | 数据同步系统及其方法 | |
CN102236581B (zh) | 用于数据中心的映射化简方法和系统 | |
CN100556024C (zh) | 用于网络场通信控制的方法和网络场 | |
CN101827302B (zh) | 多业务统一处理方法及统一业务平台 | |
Zhang et al. | Toward transcoding as a service: energy-efficient offloading policy for green mobile cloud | |
CN109951463A (zh) | 一种基于流计算和新型列式存储的物联网大数据分析方法 | |
CN104092767A (zh) | 一种增加消息队列模型的发布/订阅系统及其工作方法 | |
CN103207920A (zh) | 一种元数据并行采集系统 | |
CN109189835A (zh) | 实时生成数据宽表的方法和装置 | |
CN101609415B (zh) | 基于中间件的通用服务调用系统及方法 | |
CN103106249A (zh) | 一种基于Cassandra的数据并行处理系统 | |
CN106919654A (zh) | 一种基于Nginx的高可用MySQL数据库的实现方法 | |
Xia et al. | Efficient data placement and replication for QoS-aware approximate query evaluation of big data analytics | |
CN105677763A (zh) | 一种基于Hadoop的图像质量评估系统 | |
CN1520568A (zh) | 用于集成的多渠道零售的方法和装置 | |
CN112328569A (zh) | 基于Flume分布式数据收集架构的构建方法 | |
CN116431349B (zh) | 分布式配电网云边端数据协同方法及其系统 | |
CN105550351A (zh) | 旅客行程数据即席查询系统及方法 | |
Janet et al. | Optimizing data movement within cloud environment using efficient compression techniques | |
CN101651656A (zh) | 一种电视台全台网系统集成中消息转换的方法及系统 | |
CN108900593B (zh) | 一种储物柜数据的分布式处理方法 | |
CN101739463A (zh) | 互联网服务查找优化方法 | |
CN101540884B (zh) | 一种基于跳图的对等化VoD系统构建方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |