一种业务对象的信息加载方法和装置与流程

文档序号:11949962阅读:132来源:国知局
本申请涉及计算机处理
技术领域
:,特别是涉及一种业务对象的信息加载方法和一种业务对象的信息加载装置。
背景技术
::随着网络科技的快速发展,各种应用服务、网络业务,如即时通讯、搜索等,得到了快速的发展。为了对各种应用服务、网络业务进行监控,往往需要按照时间在操作系统内核中按照资源占用情况等对所有进程进行排序(top),如统计系统的连接情况(netstat),以及内存占用情况(slabtop)等等。在高性能的计算机中,百万级别甚至更多的统计对象越来越普遍。例如,在诸如即时通讯、搜索等大流量的业务以及云计算基础服务(IaaS)中,常常出现单计算机达到百万级别甚至更多的连接数的情形。这种百万级别的统计对象的情形下,通常需要对百万级别的统计对象进行实时的统计,比如,从百万级别的连接中,统计流量最高的一百个连接。目前统计的方式有很多,和单位时间相关的统计常常基于定时器。以流量统计为例,为了追踪每个连接在一秒钟内的流量情况,可能需要在每个连接建立的时候启动定时器,并设置超时时间为1秒钟,这样,每过1秒定时器超时的时候,就计算上一秒的流量,再进行排序。这种基于定时器进行统计的方式,在统计对象较少的情况下尚可接受,但是,由于基于定时器的方式需要中断上下文进行遍历,在百万级别甚至更多的统计对象时执行如此多的定时器超时操作,而且定时时间一般很短,这种定时操作会非常频繁,很可能同时多个连接的定时器发生超时,此时计算机的性能消耗十分巨大,甚至无法承受导致宕机。并且,目前的统计方式分散在内核各个角落的统计,当系统负载加大,统计模块自身的损耗也会更多,非自律抢占过多的资源,减少正常的业务模块的资源消耗,导致正常的业务模块的性能低下。此外,目前的统计方式一般都是根据特定的场景(如流量、存储、内存等)单独进行统计,无法适用与其他的业务场景。还有,目前的统计方式在业务模块热升级时,之前的统计信息可能会丢失,重新初始化统计逻辑本身,也是非常耗时的。技术实现要素:鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种业务对象的信息加载方法和相应的一种业务对象的信息加载装置。本申请实施例公开了一种业务对象的信息加载方法,包括:获取一个或多个业务对象对应的一个或多个资源占用数据;针对每个资源占用数据,在所述业务对象对应的统计时间段内,将所述资源占用数据累积至预设的存储对象中;在所述业务对象对应的更新时间段内,对在所述存储对象中已累积的资源占用数据进行排序;加载排序后的一个或多个资源占用数据。优选地,在一个时间轴上包括一个或多个连续的统计时间段,每个统计时间段包括连续的N个子统计时间段,所述存储对象具有N个子存储对象,一个子存储对象存储一个子统计时间段内的资源占用数据,N为正整数。优选地,所述在所述业务对象对应的统计时间段内,将所述资源占用数据累积至预设的存储对象中的步骤包括:判断所述资源占用数据所属的子统计时间段;当所述资源占用数据属于当前子统计时间段时,将所述资源占用数据累加至所述子统计时间段对应的子存储对象中。优选地,所述在所述业务对象对应的统计时间段内,将所述资源占用数据累积至预设的存储对象中还包括:当所述资源占用数据属于下一子统计时间段时,为所述子统计时间段分配子存储对象;将所述资源占用数据更新至所述子存储对象中。优选地,所述资源占用数据具有关联的推送时间戳,所述子存储对象中具有关联的统计时间戳;所述判断所述资源占用数据所属的子统计时间段的步骤包括:计算所述推送时间戳与最新的统计时间戳之间的第一时间差;判断所述第一时间是否大于与所述子统计时间段值相等的统计时间阈值;若是,则确认所述资源占用数据属于下一子统计时间段;若否,则确认所述资源占用数据属于当前子统计时间段。优选地,所述在所述业务对象对应的统计时间段内,将所述资源占用数据累积至预设的存储对象中的步骤还包括:将所述资源占用数据关联的推送时间戳设置为统计时间戳。优选地,所述在所述业务对象对应的更新时间段内,对在所述存储对象中已累积的资源占用数据进行排序的步骤包括:判断所述资源占用数据所属的更新时间段;当所述资源占用数据属于下一更新时间段时,将在所述业务对象对应的更新时间段内内,所述存储对象中已累积的资源占用数据写入所述资源占用数据对应的业务统计表中;在所述业务统计表中获得排序在前的一个或多个资源占用数据。优选地,所述资源占用数据具有关联的推送时间戳,所述存储对象具有关联的更新时间戳;所述判断所述资源占用数据所属的更新时间段的步骤包括:计算所述推送时间戳与最新的更新时间戳之间的第二时间差;判断所述第二时间差是否大于与所述更新时间段值相等的更新时间阈值;若是,则确认所述资源占用数据属于下一更新时间段;若否,则确认所述资源占用数据属于当前更新时间段。优选地,所述将在所述业务对象对应的更新时间段内内,所述存储对象 中已累积的资源占用数据写入所述资源占用数据对应的业务统计表中的步骤包括:计算属于所述业务对象对应的更新时间段的子统计时间段,所对应的子存储对象中已累积的资源占用数据之和;将所述已累积的资源占用数据之和写入所述资源占用数据对应的业务统计表中。优选地,所述在所述业务对象对应的更新时间段内,对在所述存储对象中已累积的资源占用数据进行排序的步骤还包括:将所述资源占用数据关联的推送时间设置为更新时间戳。优选地,在内核层中存储有样品对象,所述样品对象包括一个或多个业务统计表,所述业务统计表记载有排序的结果;所述加载排序后的一个或多个资源占用数据的步骤包括:在应用层中通过预设的接口,读取位于内核层中的样品对象,以获得一个或多个业务统计表;显示在所述一个或多个业务统计表中,排序在前的一个或多个资源占用数据。优选地,该方法还包括:在热升级时,将所述存储对象驻留在内存中;注销所述业务对象对应的样品对象和所述样品对象包括的一个或多个业务统计表,其中,所述业务统计表记载有排序的结果。本申请实施例还公开了一种业务对象的信息加载装置,包括:数据获取模块,用于获取一个或多个业务对象对应的一个或多个资源占用数据;数据累积模块,用于针对每个资源占用数据,在所述业务对象对应的统计时间段内,将所述资源占用数据累积至预设的存储对象中;数据排序模块,用于在所述业务对象对应的更新时间段内,对在所述存储对象中已累积的资源占用数据进行排序;数据加载模块,用于加载排序后的一个或多个资源占用数据。优选地,在一个时间轴上包括一个或多个连续的统计时间段,每个统计时间段包括连续的N个子统计时间段,所述存储对象具有N个子存储对象,一个子存储对象存储一个子统计时间段内的资源占用数据,N为正整数。优选地,所述数据累积模块包括:子统计时间段判断子模块,用于判断所述资源占用数据所属的子统计时间段;数据累加子模块,用于在所述资源占用数据属于当前子统计时间段时,将所述资源占用数据累加至所述子统计时间段对应的子存储对象中。优选地,所述数据累积模块还包括:子存储对象分配子模块,用于在所述资源占用数据属于下一子统计时间段时,为所述子统计时间段分配子存储对象;数据更新子模块,用于将所述资源占用数据更新至所述子存储对象中。优选地,所述资源占用数据具有关联的推送时间戳,所述子存储对象中具有关联的统计时间戳;所述子统计时间段判断子模块包括:第一时间差计算子模块,用于计算所述推送时间戳与最新的统计时间戳之间的第一时间差;统计时间阈值判断子模块,用于判断所述第一时间是否大于与所述子统计时间段值相等的统计时间阈值;若是,则调用第一确认子模块,若否,则调用第二确认子模块;第一确认子模块,用于确认所述资源占用数据属于下一子统计时间段;第二确认子模块,用于确认所述资源占用数据属于当前子统计时间段。优选地,所述数据累积模块还包括:统计时间戳设置子模块,用于将所述资源占用数据关联的推送时间戳设置为统计时间戳。优选地,所述数据排序模块包括:更新时间段判断子模块,用于判断所述资源占用数据所属的更新时间 段;业务统计表写入子模块,用于在所述资源占用数据属于下一更新时间段时,将在所述业务对象对应的更新时间段内内,所述存储对象中已累积的资源占用数据写入所述资源占用数据对应的业务统计表中;排序获得子模块,用于在所述业务统计表中获得排序在前的一个或多个资源占用数据。优选地,所述资源占用数据具有关联的推送时间戳,所述存储对象具有关联的更新时间戳;所述更新时间段判断子模块包括:第二时间差计算子模块,用于计算所述推送时间戳与最新的更新时间戳之间的第二时间差;更新时间阈值判断子模块,用于判断所述第二时间差是否大于与所述更新时间段值相等的更新时间阈值;若是,则调用第三确认子模块,若否,则调用第四确认子模块;第三确认子模块,用于确认所述资源占用数据属于下一更新时间段;第四确认子模块,用于确认所述资源占用数据属于当前更新时间段。优选地,所述业务统计表写入子模块包括:和计算子模块,用于计算属于所述业务对象对应的更新时间段的子统计时间段,所对应的子存储对象中已累积的资源占用数据之和;和写入子模块,用于将所述已累积的资源占用数据之和写入所述资源占用数据对应的业务统计表中。优选地,所述数据排序模块还包括:更新时间戳设置子模块,用于将所述资源占用数据关联的推送时间设置为更新时间戳。优选地,在内核层中存储有样品对象,所述样品对象包括一个或多个业务统计表,所述业务统计表记载有排序的结果;所述数据加载模块包括:样品对象读取子模块,用于在应用层中通过预设的接口,读取位于内核 层中的样品对象,以获得一个或多个业务统计表;排序结果显示子模块,用于显示在所述一个或多个业务统计表中,排序在前的一个或多个资源占用数据。优选地,该装置还包括:驻留模块,用于在热升级时,将所述存储对象驻留在内存中;注销模块,用于注销所述业务对象对应的样品对象和所述样品对象包括的一个或多个业务统计表,其中,所述业务统计表记载有排序的结果。本申请实施例包括以下优点:本申请实施例对业务对象的资源占用数据,在相应的统计时间段内累积,在相应的更新时间段,对已累积的资源占用数据进行排序。其一、不存在定时器,不需要中断上下文进行遍历,大大降低了性能消耗;其二、业务对象上下文基于无锁的方式推送资源占用数据,资源占用数据的排序也是针对单个处理器的,也是无锁的结构,而锁是影响性能的关键因素,无所的统计也大大降低了性能消耗;其三、可以按照业务需求调节存储时间段和更新时间段等值,即统计效率可调节,统计的弹性高,可以适配多种业务类型,同时使得整体性能损耗高度可控,避免非自律抢占过多的资源,保证正常的业务模块的资源消耗,保证正常的业务模块的性能;其四、支持并发对业务对象的资源占用数据进行统计;基于上述四点,本申请实施例在大量数据、高并发、高压力的情况下,适用与时间相关的统计。本申请实施例在热升级时,驻留存储对象、注销样品对象和业务统计表,避免了统计信息的丢失、避免初始化统计逻辑本身,减少了热升级耗时。附图说明图1是本申请的一种业务对象的信息加载方法实施例的步骤流程图;图2是本申请的一种系统的层次架构示意图;图3A和图3B是本申请的一种时间轴的示例图;图4是本申请的一种业务对象的信息加载装置实施例的结构框图。具体实施方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。参照图1,示出了本申请的一种业务对象的信息加载方法实施例的步骤流程图,具体可以包括如下步骤:步骤101,获取一个或多个业务对象对应的一个或多个资源占用数据;如图2所示,本申请实施例可以应用分层架构,即内核层(Kernel)和应用层(User)。其中,内核层(Kernel)可以为不同操作系统的内核,例如,*nux(如linux)、*bsd等等,本申请实施例对此不加以限制。在内核层(Kernel)中,统计模块(Topstat)可以用于对业务对象(如连接、进程等)按照业务需求(如内存、流量、CPU资源等)进行统计,并支持并发操作(即并发执行步骤101、步骤102、步骤103)。在统计模块(Topstat)中,动态统计模块(Dynamic)是DR算法的载体,可以用于进行与时间相关的统计,即在本申请实施例中,可以在内核层(Kernel)中基于DR(DynamicRecall,动态回溯)算法进行实时统计。静态统计模块(Static)可以用于进行与时间无关的统计,例如,接收到的总的包数。在本申请实施例中,可以通过业务对象在应用时所涉及的观察组件(Observer)获取资源占用数据,该资源占用数据,可以为业务对象在应用时、与其占用的设备资源(如流量、CPU、内存等)相关的数据。观察组件(Observer),如Observer1、Observer2,是携带被统计的业务对象的子系统(子模块),可以是内核子系统,也可以是内核层(Kernel)中的其他使用统计模块(Topstat)的业务模块。例如,在统计连接的流量时,观察组件(Observer)相当于内核层(Kernel) 中一个网络子模块,如TCP(TransmissionControlProtocol,传输控制协议)协议栈,里面包含连接相关的管理和信息,所推送(push)的资源占用数据可以为接收到的数据包的数量(delta),也可以为包的体积大小,还可以为延时的大小等等。又例如,对于CPU资源,该资源占用数据可以为磁盘I/O,对于内存,该资源占用数据可以为读/写速度,等等。观察组件(Observer)在安装时通过注册(Register)接入统计模块(Topstat),并向统计模块(Topstat)推送(push)资源占用数据,在卸载时通过注销(Unregister)撤出统计模块(Topstat)。需要说明的是,本领域技术人员可以根据实际需求设定资源占用数据的推送频率,通过资源占用数据的推送频率对统计速度进行调节,即可以通过加大资源占用数据的推送频率提高统计的速度,也可以通过减小资源占用数据的推送频率降低统计的速度。例如,当一个连接收到数据包的时候,观察组件(Observer)就可以推送(push)数量为1的资源占用数据,也可以累加收到一个阀值才推送(push),如推送(push)数量为100的资源占用数据。一般情况下,业务对象一直在应用,其对应的资源占用数据是持续的,则在本申请实施例中,可以并发多个获取业务对象的资源占用数据,持续获取一个业务对象的多个资源占用数据。步骤102,针对每个资源占用数据,在所述业务对象对应的统计时间段内,将所述资源占用数据累积至预设的存储对象中;如图2所示,本申请实施例可以在观察组件(Observer)加载时,在内核层(Kernel)中为该观察组件(Observer)注册存储对象(Object)。在存储对象(Object)中可以保存每个业务对象的历史信息、统计时间戳、累加值等上下文。在本申请实施例中,为了适应不同的业务需求,可以为每种业务的统计设定统计时间段(Period),在该统计时间段(Period)内累积资源占用数据至存储对象(Object)中。统计时间段(Period)是逻辑意义上的计量单位,其可以为任意的时间点之间的时间范围,在一个时间轴(TimeLine)上,可以包括一个或多个连续的统计时间段(Period)。如图3A所示,在时间轴300上,包括连续的统计时间段(Period)301、统计时间段(Period)302。在实际应用中,每个统计时间段(Period)可以包括连续的N个子统计时间段(Sub),所述存储对象(Object)可以具有N个子存储对象,一个子存储对象可以存储一个子统计时间段(Sub)内的资源占用数据,N为正整数。需要说明的是,存储对象(Object)可以采用bitmap等数组实现类似环形队列,循环存储子统计时间段(Sub)所存储的资源占用数据。即存储对象(Object)中的子统计时间段(Sub)所存储的资源占用数据可以属于同一个统计时间段(Period),也可以属于不同的统计时间段(Period),本申请实施例对此不加以限制。例如,如图3B所示,统计时间段(Period)301包括连续的子统计时间段(Sub)3011和子统计时间段(Sub)3012,统计时间段(Period)302包括连续的子统计时间段(Sub)3021和子统计时间段(Sub)3022。存储对象(Object)305包括子存储对象3051和子存储对象3052,子存储对象3051可以存储子统计时间段(Sub)3011、子统计时间段(Sub)3012、子统计时间段(Sub)3021和子统计时间段(Sub)3022中任一时间段的资源占用数据,子存储对象3052也可以存储子统计时间段(Sub)3011、子统计时间段(Sub)3012、子统计时间段(Sub)3021和子统计时间段(Sub)3022中任一时间段的资源占用数据。此外,本领域技术人员可以根据实际需要,对存储对象(Object)中的子存储对象数量进行调整,以适应不同业务的统计精度的需要。在本申请的一种优选实施例中,步骤102可以包括如下子步骤:子步骤S11,判断所述资源占用数据所属的子统计时间段;在本申请实施例中,以更细尺度的子统计时间段(Sub)累积资源占用 数据,可以平滑累积的资源占用数据,提高统计的准确率,避免随着统计的窗口滑动会出现数据突然升高或者降低的情况。在本申请实施例的一种优选示例中,所述资源占用数据可以具有关联的推送时间戳,所述子存储对象中可以具有关联的统计时间戳;其中,该推送时间戳可以在推送该资源占用数据时打上,即推送该资源占用数据的时间,也可以在接收该资源占用数据时打上,即接收该资源占用数据的时间;该统计时间戳可以在首次将资源占用数据写入该子存储对象时打上,即表征上一子统计时间段(Sub)的结束时间、当前子统计时间段(Sub)的初始时间。则在本示例中,子步骤S11可以包括如下子步骤:子步骤S111,计算所述推送时间戳与最新的统计时间戳之间的第一时间差;子步骤S112,判断所述第一时间是否大于与所述子统计时间段值相等的统计时间阈值;若是,则执行子步骤S113,若否,则执行子步骤S114;子步骤S113,确认所述资源占用数据属于下一子统计时间段;子步骤S114,确认所述资源占用数据属于当前子统计时间段。以Linux系统为例,可以以jiffies(全局变量)计算时间戳,时钟中断处理会更新jiffies(全局变量)。假设,对于1ms,jiffies(全局变量)可以增加1,统计时间戳可以转换成jiffies,子统计时间段(Sub)的jiffies相当于10,即统计时间阈值为10ms,那么判断的时候,可以比较最新的统计时间戳和当前推送时间戳的差值是不是小于或等于10,小于或等于10就表示还在最新统计时间戳所对应的子统计时间段(Sub),即当前子统计时间段(Sub)内,否则,可以认为在当前子统计时间段(Sub)相邻的子统计时间段(Sub),即下一子统计时间段(Sub)内。例如,如图3B所示,若子统计时间段(Sub)3011关联最新统计时间戳,该最新统计时间戳与当前资源占用数据的推送时间戳之差大于统计时间 阈值,则当前资源占用数据属于子统计时间段(Sub)3012,否则,当前资源占用数据属于子统计时间段(Sub)3011。子步骤S12,当所述资源占用数据属于当前子统计时间段时,将所述资源占用数据累加至所述子统计时间段对应的子存储对象中。若资源占用数据属于当前子统计时间段,则可以直接将其继续在该子统计时间段对应的子存储对象中累加。本申请实施例所指“累加”,是累积的方式之一,可以为该子存储对象在先已经存储资源占用数据,当前资源占用数据可以在在先存储的资源占用数据的基础上累加。例如,如图3B所示,子存储对象3051已经存储有子统计时间段(Sub)3011内的资源占用数据,若当前资源占用数据属于子统计时间段(Sub)3011,则可以在子存储对象3051存储的资源占用数据的基础上进行累加。在本申请的一种优选实施例中,步骤102还可以包括如下子步骤:子步骤S13,当所述资源占用数据属于下一子统计时间段时,为所述子统计时间段分配子存储对象;子步骤S14,将所述资源占用数据更新至所述子存储对象中。若资源占用数据属于下一子统计时间段,则可以为下一子统计时间段分配子存储对象。在本申请实施例中,分配的情形主要有两种:其中一种情形,分配新的子存储对象,即该子存储对象中在先没有存储资源占用数据;在这种情形中,“更新”是累积的方式之一,可以指当前资源占用数据可以直接写入分配的子存储对象中。例如,如图3B所示,子存储对象3051已经存储有子统计时间段(Sub)3011内的资源占用数据,子存储对象3052没有存储资源占用数据,若当前资源占用数据属于子统计时间段(Sub)3012,则可以为子统计时间段(Sub)3012分配子存储对象3052,作为初始的资源占用数据直接写入子存储对象3052中。另外一种情形,分配旧的子存储对象,即该子存储对象中在先存储有资源占用数据;其中,该旧的子存储对象可以为(统计时间戳)最旧的子存储对象,即在上一统计时间段(Period)中,排序小于等于下一子统计时间段(Sub)的子统计时间段(Sub)。在这种情形中,“更新”是累积的方式之一,可以指删除子存储对象在先累积的资源占用数据并写入当前资源占用数据,或者,当前资源占用数据可以写入子存储对象中替换在先累积的资源占用数据。例如,如图3B所示,子存储对象3051已经存储有子统计时间段(Sub)3011内的资源占用数据,子存储对象3052已经存储有子统计时间段(Sub)3012内的资源占用数据;若当前资源占用数据属于子统计时间段(Sub)3021,则可以为子统计时间段(Sub)3021分配子存储对象3051,将当前资源占用数据更新至存储对象3051中,替换子统计时间段(Sub)3011内的资源占用数据;再者,若当前资源占用数据属于子统计时间段(Sub)3022,则可以为子统计时间段(Sub)3022分配子存储对象3052,将当前资源占用数据更新至存储对象3052中,替换子统计时间段(Sub)3012内的资源占用数据。在本申请的一种优选实施例中,步骤102还可以包括如下子步骤:子步骤S15,将所述资源占用数据关联的推送时间戳设置为统计时间戳。在本申请实施例中,若为子统计时间段(Sub)分配子存储对象,则当前资源占用数据的推送时间戳可以设置为统计时间戳,用于后续的资源占用数据所属的子统计时间段的判断。当然,上述存储对象(Object)的类似环形队列只是作为示例,在实施本申请实施例时,可以根据实际情况设置其他存储方式,以保存子统计时间段(Sub)中的资源占用数据,本申请实施例对此不加以限制。另外,除了上述存储方式外,本领域技术人员还可以根据实际需要采用其它其他存储方式,以保存子统计时间段(Sub)中的资源占用数据,本申请实施例对此也不加以限制。步骤103,在所述业务对象对应的更新时间段内,对在所述存储对象中已累积的资源占用数据进行排序;在本申请实施例中,为了适应不同的业务需求,可以为每种业务的统计设定更新时间段(Delay)。更新时间段(Delay)是逻辑意义上的更新单位,其可以为任意的时间点之间的时间范围,在一个时间轴(TimeLine)上,可以包括一个或多个连续的更新时间段(Delay)。需要说明的是,统计时间段(Period)一般大于或等于更新时间段(Delay),两者可以是相交的关系。如图3A所示,在时间轴300上,包括连续的统计时间段(Period)301、统计时间段(Period)302,也包括连续的更新时间段(Delay)303、更新时间段(Delay)304。将资源占用数据累积至存储对象(Object)的上下文一般是覆盖几个字段即可,操作量少,占用资源也少;而对已累积的资源占用数据进行排序需要排序、遍历、插入、删除等操作,比资源占用数据的累积复杂的多,占用资源也较多。因此,设置了更新时间段(Delay)之后,通过调节(如加大)更新时间段(Delay)可以大大减少操作量,大大降低资源消耗。例如,有时候连接的流量大,通过加大更新时间段(Delay),基本上也不会影响统计的精确度。当然,有些业务对象,可能没有这么大的流量,那甚至设置更新时间段(Delay)为0,即每次都不仅仅更新存储对象(Object),也可以进行排序,本申请实施例对此不加以限制。在本申请的一种优选实施例中,步骤103可以包括如下子步骤:子步骤S21,判断所述资源占用数据所属的更新时间段;每一个更新时间段(Delay)表征一个更新周期,在当前更新周期内,则继续累积,不进行排序,若当前更新周期已结束,则进行排序。在本申请实施例的一种优选示例中,所述资源占用数据可以具有关联的推送时间戳,所述存储对象(Object)中可以具有关联的更新时间戳;其中,该更新时间戳可以在对存储对象(Object)中的资源占用数据进行排序时打上,即表征上一更新时间段(Delay)的结束时间、当前更新时 间段(Delay)的初始时间。则在本示例中,子步骤S21可以包括如下子步骤:子步骤S211,计算所述推送时间戳与最新的更新时间戳之间的第二时间差;子步骤S212,判断所述第二时间差是否大于与所述更新时间段值相等的更新时间阈值;若是,则执行子步骤S213,若否,则执行子步骤S214;子步骤S213,确认所述资源占用数据属于下一更新时间段;子步骤S214,确认所述资源占用数据属于当前更新时间段。以Linux系统为例,可以以jiffies(全局变量)计算时间戳,时钟中断处理会更新jiffies(全局变量)。假设,对于1ms,jiffies(全局变量)可以增加1,更新时间戳可以转换成jiffies,更新时间段(Delay)的jiffies相当于100,即更新时间阈值为100ms,那么在判断的时候,可以比较最新的统计时间戳和当前推送时间戳的差值是不是小于或等于100,小于或等于100就表示还在最新的更新时间戳所对应的更新时间段(Delay),否则,可以认为在当前更新时间段(Delay)相邻的更新时间段(Delay),即下一更新时间段(Delay)内。若当前资源占用数据在当前更新时间段(Delay)中,则可以表示在当前更新周期内,若当前资源占用数据在下一更新时间段(Delay)中,即当前更新周期已结束。子步骤S22,当所述资源占用数据属于下一更新时间段时,将在所述业务对象对应的更新时间段内内,所述存储对象中已累积的资源占用数据写入所述资源占用数据对应的业务统计表中;子步骤S23,在所述业务统计表中获得排序在前的一个或多个资源占用数据。如图2所示,在内核层中,样品对象(Sample)对应统计的一整套的业务对象,例如,某个虚拟机到另外一个虚拟机的流量排序。业务统计表(Table),在概念上从属于Sample(样品对象),即,一个样品对象(Sample)可以包括一个或多个业务统计表(Table),例如,某个 业务统计表(Table)是基于每秒的包数的排序,某个业务统计表(Table)是基于每秒的字节数的排序等等。每个业务统计表(Table)都可以按照其统计的业务需求,设置更新时间段(Delay)。在实际应用中,业务统计表(Table)可以是一个红黑树,或者,其他的统计友好的数据结构,本申请实施例对此不加以限制。在本申请实施例中,Observer在调用推送(push)接口推送资源占用数据时,该推送(push)接口中包括了该Observer在创建的时候的业务统计表(Table)的ID(如指针),具体更新到对应的业务统计表(Table)中进行排序。一般情况下,业务统计表(Table)的数量是有限的,如对百万级别的连接进行流量统计,可以将其中一百个连接的流量统计写入业务统计表(Table)中。将存储对象(Object)中已累积的资源占用数据写入资源占用数据对应的业务统计表(Table)中,可以指将存储对象(Object)里存储的一些字段更新到业务统计表(Table),若此次更新的已累积的资源占用数据的值比业务统计表(Table)表里面的最小值大,则在合适的位置,把新的值更新到业务统计表(Table)表里,同时把存储对象(Object)其他的字段信息也更新到表里,比如,描述、存储对象(Object)、更新时间戳等等。需要说明的是,本申请实施例所指“排序”,可以为顺序排序,也可以为倒序排序,例如,统计百万级别的连接中流量最高的前100个连接,或者,统计百万级别的连接中流量最低的前100个连接,本申请实施例对此不加以限制。在本申请的一种优选实施例中,子步骤S22可以包括如下子步骤:子步骤S221,计算属于所述业务对象对应的更新时间段的子统计时间段,所对应的子存储对象中已累积的资源占用数据之和;子步骤S222,将所述已累积的资源占用数据之和写入所述资源占用数据对应的业务统计表中。在本申请实施例中,若应用统计时间段(Period)细分子统计时间段(Sub)的方式,则可以将属于更新时间段(Delay)内的子统计时间段(Sub)所累积的资源占用数据,对业务统计表(Table)进行更新。例如,如图3A和图3B所示,若更新时间段(Delay)303包括子统计时间段(Sub)3012和子统计时间段(Sub)3021,则在更新时间段(Delay)303内进行更新时,可以将子统计时间段(Sub)3012和子统计时间段(Sub)3021内已累积的资源占用数据之和(sum),将该资源占用数据之和(sum)写入业务统计表中。在本申请的一种优选实施例中,步骤203还可以包括如下子步骤:子步骤S24,将所述资源占用数据关联的推送时间设置为更新时间戳。在本申请实施例中,若对业务统计表(Table)进行了更新,则可以将当前资源占用数据的推送时间戳设置为更新时间戳,用于后续的资源占用数据判断是否更新业务统计表(Table)。步骤104,加载排序后的一个或多个资源占用数据。在具体实现中,可以加载排序后的资源占用数据,以用于监控、检测等各种用途。在本申请的一种优选实施例中,在内核层中存储有样品对象,所述样品对象包括一个或多个业务统计表,所述业务统计表记载有排序的结果;则在本申请实施例中,步骤104可以包括如下子步骤:子步骤S31,在应用层中通过预设的接口,读取位于内核层中的样品对象,以获得一个或多个业务统计表;子步骤S32,显示在所述一个或多个业务统计表中,排序在前的一个或多个资源占用数据。如图2所示,在应用层(User)可以配置监控子系统(Monitor)、采集器(Collector)等各种应用模块。导出文件系统(Exportfilesystem,Exportf-s)是统计数据导出的统一接口,内核一般可以通过,在本申请实施例中,sysfs接口或者proc接口统一暴露给上层监控子系统(Monitor)。进一步而言,业务统计表(Table)里面包含proc接口红黑树,具体的存储对象(Object)的信息、其他参数(更新时间段(Delay)等)信息。proc接口是业务统计表(Table)对外导出统计数据的接口,监控子系统可以实时读取这个文件来呈现当前table的统计信息。在应用层(User)中,应用模块可以通过直接读取Topstat的导出文件系统(Exportf-s),如sysfs/proc等,中相应的文件来获得统计数据,这个过程被称为快照(Snapshot),读取文件会触发内核线程来扫描每个CPU上的统计结果并合并最终的统计数据(即排序后的结果)。样品对象(Sample)和业务统计表(Table)都会在导出文件系统(Exportf-s)中有对应的目录或者文件,即,Topstat针对Observer注册的样品对象(Sample)中包含的每个业务统计表(Table),都可以有一个文件系统(Exportf-s)下的文件,读取这个文件即刻获取了统计数据。例如,每条连接的信息(如源IP端口,目的IP端口),以及该连接的pps值(packetspersecond,每秒数据包)。通常,业务统计表(Table)是样品对象(Sample)的子目录。而且,样品对象(Sample)可以通过快照(Snapshot)暴露给上层的监控子系统(Monitor)最终的需要读取的最终的统计数据(即排序后的结果)的文件。需要说明的是,本申请实施例可以基于内核层(Kernel)进行统计,即在内核层中执行步骤101、步骤102和步骤103,也可以基于应用层(User)进行统计,即在内核层中执行步骤101、步骤102和步骤103,本申请实施例对此不加以限制。在本申请的一种优选实施例中,该方法还可以包括如下步骤:步骤205,在热升级时,将所述存储对象驻留在内存中;步骤206,注销所述业务对象对应的样品对象和所述样品对象包括的一个或多个业务统计表,其中,所述业务统计表记载有排序的结果。由于产品的功能一般是在不断的丰富,为了不中断服务,一般会对业务模块进行热升级,即不停机升级。在热升级中,存储对象(Object)中包含统计需要的上下文信息将跟随业务对象的生命周期。由于本申请实施例将统计与业务逻辑主体分离开来,主业务逻辑也可以将被统计对象隔离开来,这样在升级的时候,存储对象(Object)可以驻留在内存空间。具体而言,每个Observer加载的时候会注册相应的样品对象(Sample)、业务统计表(Table)、存储对象(Object)等。在热升级中,存储对象(Object)可以从Topstat的主体移出(unplug),并注销相应的样品对象(Sample)和业务统计表(Table),此时存储对象(Object)的上下文仍然是存在的,内存也不会被释放。其中,注销可以指调用接口,通知Topstat删除相应的样品对象(Sample)和业务统计表(Table)的数据结构,并清理掉内存。升级后的业务模块可以通过类似塞(plug)的方式拿到存储对象(Object)的信息,并获取统计需要的上下文信息,如统计时间段(Period)、子统计时间段(Sub)、sum(Sub的和)、统计时间戳、更新时间段(Delay)、count(资源占用数据的推送次数)、描述信息(描述这个Object的字符串)等等,推送资源占用数据。需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。参照图4,示出了本申请的一种业务对象的信息加载装置实施例的结构框图,具体可以包括如下模块:数据获取模块401,用于获取一个或多个业务对象对应的一个或多个资源占用数据;数据累积模块402,用于针对每个资源占用数据,在所述业务对象对应的统计时间段内,将所述资源占用数据累积至预设的存储对象中;数据排序模块403,用于在所述业务对象对应的更新时间段内,对在所述存储对象中已累积的资源占用数据进行排序;数据加载模块404,用于加载排序后的一个或多个资源占用数据。在具体实现中,在一个时间轴上可以包括一个或多个连续的统计时间段,每个统计时间段可以包括连续的N个子统计时间段,所述存储对象可以具有N个子存储对象,一个子存储对象可以存储一个子统计时间段内的资源占用数据,N为正整数。在本申请的一种优选实施例中,所述数据累积模块402可以包括如下子模块:子统计时间段判断子模块,用于判断所述资源占用数据所属的子统计时间段;数据累加子模块,用于在所述资源占用数据属于当前子统计时间段时,将所述资源占用数据累加至所述子统计时间段对应的子存储对象中。在本申请的一种优选实施例中,所述数据累积模块402还可以包括如下子模块:子存储对象分配子模块,用于在所述资源占用数据属于下一子统计时间段时,为所述子统计时间段分配子存储对象;数据更新子模块,用于将所述资源占用数据更新至所述子存储对象中。在本申请实施例的一种优选示例中,所述资源占用数据可以具有关联的推送时间戳,所述子存储对象中可以具有关联的统计时间戳;所述子统计时间段判断子模块可以包括如下子模块:第一时间差计算子模块,用于计算所述推送时间戳与最新的统计时间戳之间的第一时间差;统计时间阈值判断子模块,用于判断所述第一时间是否大于与所述子统计时间段值相等的统计时间阈值;若是,则调用第一确认子模块,若否,则调用第二确认子模块;第一确认子模块,用于确认所述资源占用数据属于下一子统计时间段;第二确认子模块,用于确认所述资源占用数据属于当前子统计时间段。在本申请的一种优选实施例中,所述数据累积模块402还可以包括如下子模块:统计时间戳设置子模块,用于将所述资源占用数据关联的推送时间戳设置为统计时间戳。在本申请的一种优选实施例中,所述数据排序模块403可以包括如下子模块:更新时间段判断子模块,用于判断所述资源占用数据所属的更新时间段;业务统计表写入子模块,用于在所述资源占用数据属于下一更新时间段时,将在所述业务对象对应的更新时间段内内,所述存储对象中已累积的资源占用数据写入所述资源占用数据对应的业务统计表中;排序获得子模块,用于在所述业务统计表中获得排序在前的一个或多个资源占用数据。在本申请实施例的一种优选示例中,所述资源占用数据可以具有关联的推送时间戳,所述存储对象可以具有关联的更新时间戳;所述更新时间段判断子模块可以包括如下子模块:第二时间差计算子模块,用于计算所述推送时间戳与最新的更新时间戳之间的第二时间差;更新时间阈值判断子模块,用于判断所述第二时间差是否大于与所述更新时间段值相等的更新时间阈值;若是,则调用第三确认子模块,若否,则调用第四确认子模块;第三确认子模块,用于确认所述资源占用数据属于下一更新时间段;第四确认子模块,用于确认所述资源占用数据属于当前更新时间段。在本申请的一种优选实施例中,所述业务统计表写入子模块可以包括如下子模块:和计算子模块,用于计算属于所述业务对象对应的更新时间段的子统计 时间段,所对应的子存储对象中已累积的资源占用数据之和;和写入子模块,用于将所述已累积的资源占用数据之和写入所述资源占用数据对应的业务统计表中。在本申请的一种优选实施例中,所述数据排序模块403还可以包括如下模块:更新时间戳设置子模块,用于将所述资源占用数据关联的推送时间设置为更新时间戳。在本申请的一种优选实施例中,在内核层中可以存储有样品对象,所述样品对象可以包括一个或多个业务统计表,所述业务统计表可以记载有排序的结果;所述数据加载模块404可以包括如下子模块:样品对象读取子模块,用于在应用层中通过预设的接口,读取位于内核层中的样品对象,以获得一个或多个业务统计表;排序结果显示子模块,用于显示在所述一个或多个业务统计表中,排序在前的一个或多个资源占用数据。在本申请的一种优选实施例中,该装置还可以包括如下模块:驻留模块,用于在热升级时,将所述存储对象驻留在内存中;注销模块,用于注销所述业务对象对应的样品对象和所述样品对象包括的一个或多个业务统计表,其中,所述业务统计表记载有排序的结果。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全 软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitorymedia),如调制的数据信号和载波。本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理 终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。以上对本申请所提供的一种业务对象的信息加载方法和一种业务对象的信息加载装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1