面向业务对象的计算资源动态分配方法

2017-09-23 03:03
计算机应用与软件 2017年9期
关键词:计算资源中间件队列

尚 海 鹰

(上海久誉软件系统有限公司 上海 200233)

面向业务对象的计算资源动态分配方法

尚 海 鹰

(上海久誉软件系统有限公司 上海 200233)

概述计算机系统基础架构的发展趋势。针对当前互联网+时代事务处理系统的业务场景,分析研究了计算资源分配与负载均衡的基本方法。为满足事务处理系统对业务对象的差异化服务需求,并充分发挥事务处理系统的整体处理能力,提出面向业务对象的计算资源动态分配方法。方法根据实际应用系统平台的处理性能基准值,确定各业务对象的计算资源分配计划及动态调整策略。通过城市一卡通实际清算业务大数据量的测试达到预期效果。

事务处理 中间件 计算资源 服务进程 服务等级协议 负载均衡

0 引 言

随着信息技术的飞速发展,互联网+时代的业务不断创新,计算机系统需要处理的事务量大幅度增长。在摩尔定律巅峰时期,一切相对简单,计算机系统可以期待处理器指数级的性能提升。随着摩尔定律的终结,计算机性能提升很难直接通过升级硬件获得,信息系统已变得越来越复杂[1]。网格化、云计算、大数据处理等技术应势而生,网络虚拟化、服务器分区、平台虚拟化、Java虚拟机、应用程序框架一层复一层,末端应用程序已完全感知不到系统硬件的存在。

为满足大事务量、大数据量处理,计算机系统日益庞大,曾经的机架式服务器整合为刀片服务器,空间计算密度达到新的高度,数据中心机房的机柜一排排扩展,计算机系统日益成为能耗大户。

但事实上,合理的应用框架下,传统的计算机系统仍然可以满足大事务量的处理,众多UNIX服务器依托高效率的C/C++环境下的应用软件中间件,继续承担着关键事务处理系统的核心后台。在服务器处理单元多核化的趋势下,应用系统如何利用与发挥计算机系统的综合处理能力,依然值得研究。

1 计算资源的载体

计算机系统底层是个二进制的世界,事务处理系统中的应用程序无法也没有必要直接调用或支配系统中的各个硬件处理单元(如CPU、内存、存储等)。长期以来,主流操作系统承担着计算机基本资源的调度和管理,无论是UNIX、Linux亦或是云计算系统[7],对于计算资源管理的核心方法几无变化。

进程通过操作系统接口对CPU、内存、存储等计算机处理资源的综合利用而成为系统计算资源的载体。更多活动的进程则代表对系统计算资源更多的利用。活动的服务进程并非单一地使用本机的计算资源,通过网络的连接与访问,应用层的服务进程直接调动了后台数据库系统的服务进程,间接覆盖了数据库系统各类资源的利用。在给定的系统平台下,服务程序及相应的数据资源(表、索引等)的具体设计决定了服务进程对系统整体资源的利用率。

由此,事务处理系统中一个活动的服务进程可以定义为系统计算资源的综合分配单位。本文论述的计算资源动态分配即指对服务进程的数量配置、服务进程组的配置管理、服务优先级的配置等内容。

在Windows平台,最小调度单位是线程,进程切换会比线程切换带上更多的上下文。而在服务器主流操作系统Linux或Unix平台下,进程和线程处同一等级,切换操作区别不大。鉴于目前各型服务器配置的内存数量足够高,切换进程而导致大量的换页操作情形已不用费心纠结。本文中描述的服务程序不再区分线程或进程,简称服务进程。

2 事务处理的层次与负载分配

一个较大规模的事务处理系统由若干处理层次组成,通常在网络计算层及事务处理中间层实施负载均衡及资源分配,如表1所示。

表1 事务处理系统的层次

网络计算层以各大厂商的负载均衡设备为主流解决方案。来自网络的应用请求或页面访问通过负载均衡设备分发到后台服务资源,各服务资源通常对应物理层面的服务器。为了充分利用现代高性能服务器的处理能力,一方面可以在同一台服务器上启用多个服务侦听进程,每个服务侦听进程对应一组服务端口及相应的服务进程;另一方面,物理服务器也可以通过虚拟化技术将计算资源划分到各逻辑服务器。各服务器亦可跨网络、跨区域部署。如此,负载均衡设备只需要通过网络协议层的服务转发即可实现系统整体资源的分配利用。

事务处理中间层以Oracle、IBM等软件大厂相关应用软件中间件产品为主流解决方案。来自网络的应用请求或页面访问通过其软件中间件平台,分发到平台中的服务进程队列中,并由相应的服务进程组完成后台事务处理任务。配置足够多的服务进程,事务处理系统中的计算资源得以充分利用。通常软件中间件系统也可跨服务器平台进行消息传递,进一步实现跨网络的负载均衡[4]。

数据库层实质上与应用系统服务组密切挂钩,是前后台的调用关系,而操作系统更是对进程调度、资源访问的基本管理。应用程序的调用覆盖了数据库层及操作系统层对资源的利用。因此,系统计算资源的分配主要控制在网络计算层及事务处理中间层。

3 面向业务对象的服务需求

网络计算层对应用程序开发几乎透明。负载均衡设备或者通用的软件中间件平台,并不关心事务处理交易的具体内容,简单地,例如客户交易额、客户权属等,在处理繁忙时段,所有交易只能在服务器系统的交易队列中统一排队。除非像银行柜面(线下服务)一样,在排队机上领取VIP号,或者在页面(线上服务)上开辟专门的VIP客户登录入口使其对应特定的服务进程,即便如此,各个业务对象的交易数据也只是在队列中统一等待处理。在实际事务处理系统中,如各类票务系统、电子商务系统常会碰到这样的问题。比如,在商品热销竞购中,在一段时间内大量交易先来后到在系统后台服务队列里等待处理,后台事务处理的队列可能在数分钟或更长时间内才能处理完全部订单,一般应用系统并不区分客户的特殊性而实施差异化的事务处理。

事务处理系统不仅仅在个体业务对象上面临优先级服务的需求,进一步的,在大数据量业务处理上也存在各种优先级服务(如签订服务级别协议SLA)的场景[2],如海量可变数据印刷(VDP)业务或账单清算业务中,对不同的客户或行业,承诺不同的处理时间是基本的要求。在整体处理资源统一调配下,部分业务作业需要在指定时间完成[8]。这种情形下,简单利用软件中间件平台或硬件负载均衡设备均难以实现业务属性敏感的SLA服务。

应用系统通过对交易数据业务层面的解读,建立面向特定业务对象的交易队列,确定计算资源的配置计划,并实施计算资源的动态分配是本文研究的方法。

4 计算资源动态分配的实现

4.1 事务处理的队列

面向业务对象的计算资源动态分配方法,分为二个层面实现:第一层,细分服务队列。针对业务对象,根据其业务属性分别添加到不同的服务队列或队列组;第二层,针对服务队列,根据其业务对象的SLA指标分配相对应的计算资源,并动态调整其他服务队列的计算资源,在满足业务对象SLA服务目标的前提下,确保系统整体计算资源的充分利用。

第一层,通常情况下,业务对象以交易报文或服务请求的形式,被事务处理系统的前端进程(或称前置系统)捕获,前置系统解读业务对象的业务属性,根据业务属性的类别,将业务对象的服务请求添加到相应的服务队列[3,5]。

对于联机事务处理,为了优先满足特定业务对象的响应时间,维持一个动态可插入的队列是可选的技术手段,为了提高前置系统的处理速度,针对SLA服务对象的业务属性,其相应的权重值可以预先计算。综合评估业务对象的价值系数,为每个业务对象确立一个合理的权重数值,在实时处理中可快速利用该数值调整服务队列中的位置。

第二层,不同的服务队列由不同的服务进程组处理。根据SLA指标,对应的服务组分配恰好达成目标的服务进程数量[6]。多业务高负载事务处理系统中,服务进程资源的配置与计算机资源(如CPU核心、内存、存储IO)的均衡利用密切相关,单纯的增加某种业务处理的服务进程数量,将使其他业务获得的计算资源明显减少,从而造成全局计算资源等得不到充分利用,服务器总体处理效率必定下降。当某类业务处理在SLA目标完成后,服务管理进程自动将该业务的服务进程组关闭,将释放的进程数配额赋予其他业务的服务进程组。

4.2 计算资源分配计划与动态调整

计算资源分配方案通过事先计划与事中调整相结合的方式实现,具体可分为四个步骤。

第一步,根据给定的系统平台及应用系统,通过压力测试评估服务进程的总有效数值。总体上,配置低于该值的服务进程数,则系统资源的并发利用度不足,无法发挥系统最高处理能力;配置高于该值的服务进程数,则系统的主要处理单元(如CPU或IO等)已处于瓶颈,实际业务处理量并不会随着服务进程配置数量的增加而提高,甚至因系统中进程切换开销增大,有效处理能力反而下降。

第二步,根据最优化的服务进程数及系统总体业务处理能力,推导出单位时间单个服务进程业务处理量等关键技术指标,为系统长期高效运行获得基准性能参数。

第三步,根据服务对象的SLA指标,服务对象的预期业务量,及系统的基准性能参数,计算并分配相应业务对象的服务进程数,并确定整体处理周期内的资源分配计划。

第四步,根据整体处理周期内的资源分配计划,监控相关服务对象的实际完成状态并适时调整计算资源的分配。

4.3 计算方法

计算资源动态分配的算法表述如下:

定义:

m为承诺SLA业务对象的总数。

Qi(i=1,2,…,m),为各SLA业务对象承诺用时,用时短则表明处理优先级高。

Pmax为系统服务进程总有效数。

e为单个服务进程单位时间内处理的业务量。

针对实际事务处理应用系统,Pmax及相应的e值通常由系统压力测试(或称基准测试)评估所得。

Mi(i=1,2,…,m),为各SLA业务对象预期交易量。

Pi(i=1,2,…,m),为各SLA业务对象预期分配的服务进程数量。

则SLA业务对象计算资源的分配计划:

(1)

设:Tk为SLA业务对象实际处理用时,其中Tk≤Tk+1,k=1,2,…,m。

那么,Tk至Tk-1周期内,其余服务进程的动态调整数等于:

(2)

5 实验与分析

针对一个日均交易量在千万级的城市一卡通清算系统,利用上述方法进行测试。业务场景概括为:IC芯片支付卡业务,支持脱机消费(线下)业务,也支持联机充值业务(线上),消费业务涵盖公交、出租、轮渡、停车场、高速公路、轨道交通、便利店、加油站等各行业。实际系统中,交易数据通过广域网上传到中央清算系统。SLA目标为:部分行业对象的交易数据需要在己方系统日切后优先提交结算文件,对方获得该文件后再继续其日终批处理任务,这些行业对象对结算时间有特定要求。

测试环境由二台数据库服务器、二台应用服务器、一套高性能SAN磁盘阵列、二台金融数据加密机等组成,服务器均为UNIX系统,处理器与内存高配。测试数据取自生产库实际交易数据。交易数据分布在11个行业。为了节省文章的篇幅,我们对交易量统计低于万笔的行业数据进行了归并(行业代码虚设为99),全局交易量统计见表2。

表2 交易量的行业分布

通过几轮均布负载压力测试(各行业交易报文均布整个测试周期),观察并统计相关数据,确认服务进程配置最有效个数为25(Pmax),该配置情形下,系统单位时间(秒)交易处理能力达800笔左右,单服务进程单位时间(秒)内处理量推算为32笔(e)。

设处理起始时间为T0,行业对象(代码2、5、6)分别期望在T0+20分钟、T0+60分钟、T0+40分钟时限内完成业务处理。

前端通信进程读取测试文件中的交易报文,并根据不同行业对象数据加入相应的服务队列,后端服务进程组则读取相对应的服务队列完成交易数据的入账及结算任务。整个应用系统基于事务处理中间件机制部署,对各SLA行业对象交易队列分配相对应的服务进程组,其余交易调用统一的服务进程组。服务进程组的管理与进程数的动态调整按照本文所述方法实现。测试运行结果如表3所示。

表3 各行业对象数据处理用时

表3中可以观察到优先级较高的行业对象数据能够在SLA指定时间内处理完成,而系统整体亦能够持续发挥总体计算能力,在预计的6小时内完成全部业务量的处理。

服务进程动态分配情况如表4所示。

表4 各行业服务进程数动态分配

6 结 语

本文面向业务对象的计算资源动态分配方法,在特定行业或业务对象的事务处理系统中具有较强的可操作性和一定的实用价值。文中方法也可作为一种需求促进应用软件中间件在业务感知方法与策略上的改进,推动行业细分技术的发展。

[1] Esmaeilzadeh H,Blem E,Amant R St,et al.Dark Silicon and the End of Multicore Scaling[C]//International Symposium on Computer Architecture.IEEE,2012:122-134.

[2] 于阳,赵欣,彭鑫,等.云计算背景下面向服务组合的SLA动态管理机制研究[J].计算机应用与软件,2014,31(9):22-27.

[3] 张政,侍守创.基于消息中间件的制造执行系统的设计与实现[J].计算机应用与软件,2016,33(10):118-121.

[4] 边耐政,刘玄.基于非阻塞的分布式事务提交协议的实现[J].计算机应用与软件,2014,31(7):89-92,104.

[5] 胡静,宋雪雁,孙济洲.航行通告分发服务中间件的研究与设计[J].计算机应用与软件,2016,33(2):7-11,41.

[6] 张爱科,谢翠兰.基于公平性和负载均衡的云计算任务调度算法[J].计算机应用与软件,2015,32(2):268-271.

[7] 方义秋,郑剑,葛君伟.一种云环境下基于QoS约束的资源分配策略[J].计算机应用与软件,2015,32(1):34-38.

[8] 李荣胜,赵文峰,徐惠民.基于价值密度和截止期的网格作业调度算法[J].计算机工程,2011,37(12):16-18.

DYNAMICALLOCATIONOFCOMPUTINGRESOURCESFORBUSINESS-ORIENTEDOBJECT

Shang Haiying

(ShanghaiJiuyuSoftwareSystemCo.,Ltd.,Shanghai200233,China)

This paper aims to summarize the development trend of computer system infrastructure. In view of the current era Internet plus information system business scenarios, we analyze the mainstream method of computing resources allocation and load balancing. Meanwhile, to further improve transaction processing efficiency and meet the demand of service level agreement flexibility, we introduce a dynamic allocation method of computing resources for business objects. According to the reference value of the processing performance of the actual application system, the computing resources allocation plan and dynamic adjustment strategy of each business object were obtained. The experiment achieved the desired effect through large amount of data in the actual clearing business of the city card.

Transaction processing Middleware Computing resources Service process SLA Load balance

TP3

A

10.3969/j.issn.1000-386x.2017.09.024

2017-05-09。尚海鹰,工程师,主研领域:计算机事务处理系统平台,计算机网络,系统集成。

猜你喜欢
计算资源中间件队列
基于模糊规划理论的云计算资源调度研究
队列队形体育教案
队列里的小秘密
我国自主可控中间件发展研究
浅谈信息产业新技术
基于多队列切换的SDN拥塞控制*
改进快速稀疏算法的云计算资源负载均衡
在队列里
RFID中间件技术及其应用研究
耦合分布式系统多任务动态调度算法