一种在家庭网关中有效的服务管理方法

文档序号:6429121阅读:209来源:国知局
专利名称:一种在家庭网关中有效的服务管理方法
技术领域
本发明主要涉及家庭网关,尤其涉及一种在诸如家庭网关这样的有限的内存环境中,管理应用服务的有效方法。
背景技术
随着宽带大量的走进家庭,因特网(Internet)在家庭中也日益普及。Internet不仅用于与计算设备相连接,同时也用于接入诸如电视机、DVD、洗衣机等家电设备。在不久的将来,可以期望家庭中的许多家电设备都将连接到Internet。对这些家电进行远程诊断与设置只是用户在从Internet连通中得到的众多好处中的一种。供电公司也可以对家庭网络化保持一定关注,因为这将使他们能够提供一些增值服务,比如能量管理、远程测量、以及更好的电力平衡来避免断电的可能。
有很多关于家庭环境中网络的规范和协议被主动提出,包括OSGi、HAVi、UPnP、Jini以及HomeRF,都命名了一些。预期这些家庭组网将是通过家庭网关来进行交互操作。家庭网关作为家庭与互联网相互连接的单一点。各种服务可以利用从互联网上分别下载并在网关中加以执行的软件包实现。
对于应该将家庭网关整合入现有的家电设备中,还是将其分散在几个的家电色设备中、抑或是集中于一个独立的计算设备上,在业界中尚未达成共识。无论怎样,家庭网关将更有可能受到有限资源,特别是主内存资源的限制。
通常的内存管理技术不适用于家庭网关。例如,在常规的计算环境中的内存单元是磁盘页(disk page)。并且在通常的内存管理技术中一般都假定磁盘页是独立的。
与此对比的是,在家庭网关中的服务可能并不是独立的,而更可能是互相依存。换句话说,终止一个服务将实际上终止依赖于该服务的所有服务。由于这种服务的依存性,传统的内存管理技术不适合于所述的网关环境。
因此,人们迫切希望能够提供一种在如家庭网关这样有限的内存环境中,管理应用服务的有效方法。

发明内容
本发明提供了一种在服务网关环境中管理内存资源的方法。该方法包括接收一个服务请求,该服务请求中包含有超出所述网关环境所能提供的全部内存空间的内存空间需求;为每个服务实例确定多个依赖服务实例;为每个服务实例确定累计的内存空间需求;确定一个服务实例子集,该子集的内存空间需求超过该服务的内存空间需求,该子集包含最少数量的服务实例;对相关的确定服务实例子集进行内存资源管理。
为了能够有更完整的理解本发明及其目标和优点,将结合下面的说明和附图进行详细说明。


图1为根据OSGi模型的典型的服务网关的软件结构框图;图2为本发明中内存资源问题的示意图。
图3为根据本发明对在一个服务网关环境中管理内存资源方法的流程示意图。
图4为根据本发明对在一个服务网关环境中管理内存资源的另一可选方法的流程示意图。
图5为根据本发明在命令后遍历一系列服务实例的流程示意图。
图6为根据本发明典型的动态规划表的流程示意图。
具体实施例方式
图1示出了根据OSGi模型的典型的服务网关的软件结构框图。OSGi规范定义了适合于多种不同应用的服务网关的通用实现应用程序接口(API)。虽然下面的说明是参照由OSGi模型得到的特殊软件体系结构提供的,但是,有理由认为在本发明的更广的外延中应包含其他软件体系结构和其他已知的网关规范。
在一个服务网关环境中,各种应用被设计为一系列服务,每个服务都完成整个功能的一部分。然后将这些服务以及其他扩展服务打包到被称为包(bundle)的软件容器(software container)中。在需要时,网关可以下载相应的包。主机(framework)处理基础包的管理功能。为了能够与其他包共享服务,一个包可以通过主机登录任何数量的服务。主机中包的执行路线指的是作为一种服务的实例。
为了提供一项新的服务,网关可能需要释放与该网关相关的部分内存空间。虽然执行一项服务所需的内存量是随着时间不断变化的,但是应用服务提供商(或者提供该包的作者)可以给出大概的预测值,比如在一个包中执行该服务所需的平均或最大内存量。此时,为了满足该内存需求,主机就不得不选择牺牲一个或者多个服务实例。可以预想,该牺牲的服务实例可能是所述正在请求的服务。
这种内存资源问题在图2所给出的实例中作了进一步的说明。此时,在一个服务网关环境中正在执行两个典型的应用。第一个应用是一个音频点播(Audio-on-Demand)服务20,该服务所需的内存为30个内存单位。该音频点播服务20依赖于音频播放器服务22,而该音频播放器服务22又依赖于用户数据报协议(UDP)服务24。音频播放器服务22和UDP服务24所需的内存分别为50和25内存单位。同时,该音频点播服务20还依赖于均衡器服务26,该均衡器服务26所占用的内存为105内存单位。第二个应用是Internet游戏服务27,其所占用的内存为65个内存单位。该Internet游戏服务27依赖于HTTP服务28,其所占内存为45内存单位。
现在,又发生了第三个服务请求。该服务请求是一个需要占用100个内存单位的家居安全服务29。假定该家居安全服务的内存需求量超过了与该网关环境相关的所有可以提供的内存空间。并进一步假设该家居安全服务比音频点播服务和游戏服务具有更高的优先级。因此,为了满足该家居安全服务的需求,所述服务中的至少一个就必须被终止。在本例中,均衡器服务26应该终止,这是由于该服务既满足了对内存空间需求,又使终止的服务实例数量最少。
对这一问题进行的规范的描述如下。当前在网关内存中的一组服务实例可以被定义为S={s1,...,sj}。可以用相关图表来对包之间的相依性进行建模,图表中的一个包输入由其它包提供的服务。例如,设G(S,E),是顶点为S、边为E的有向的非循环图表,它描述了服务实例之间的依存关系。如果并且只有如果si依赖于sj时,则存在一个有向边界(si,sj)∈E。由于可以非常自然地假设每个应用都例示了其自己的给定服务的副本,所以该相关图表将由很多有根的树组成的树林构成,在该树林中每棵树都代表由给定应用所示例的服务实例。对于G中的顶点v,让我们用T(v)表示扎根于v(包括v自己)的一组G的子集树的顶点,并且对于顶点的子集VS,让T(v)=Uv∈vT(v)。
一个给定的内存空间需求是M(s)新的服务实例s,需要被创建,则可能就需要终止一些现存的服务实例,来为该新的实例提供空间。假设这一操作的额外内存需求为Mt单位,其中Mt=M(s)-Mf,Mf为当前全部可提供的内存空间。当一个服务实例被终止时,所有依赖于该服务实例的实例也将随之被终止。因此,目标是应尽可能减少被终止的服务实例的数量。更精确地说,就是希望找到具有最小相依性数量的子集VS,使其在发生终止时,连同一道终止的服务,在最小的Mt单位下能够为新服务提供出整个内存空间。设对于任何S′S,M(S)=∑S∈S′M(s),则问题可以公式化为寻找函数min{|T(V)|VS,M(T(V))≥Mt}。换句话就是要确定一个涉及最小数目的服务实例,该服务实例的内存空间需求超过一个服务的内存空间需求。
如图3所示,本发明提供了一个在内存资源有限的环境中对该内存资源进行管理的方法,其中至少有一些服务实例依赖于其他服务实例。这种方法为上述问题提供了一个较佳的解决方案。一旦收到服务请求,该方法就会在步骤32开始,其中,该服务请求的内存容量需求超过与该网关环境相关的全部可提供的内存总容量。为了满足该服务的需求,该方法将寻找出一个或多个需要在该环境中终止的服务。
首先,在步骤34,为网关中每个服务实例确定一个累计内存空间需求量M(s*)。一个给定的服务实例的累计内存空间需求量占该特定服务实例以及依赖于该服务实例的每个服务实例的总内存需求量。因此,该累计内存空间是通过计算该给定服务实例以及依赖于该服务实例的每个服务实例内存空间的加和得到的。
第二,对于每一个服务实例,依赖性服务实例的数量s*是在步骤36中确定的。在一个实施例中,这个数目可以从与该环境相关的数据仓库中归纳获得。该数据仓库通常保存着当前存在于该网关环境中的每个服务实例的依赖性信息。对于每个服务实例,该数据仓库保存的信息包括对于给定服务实例的标识符;给定服务实例所需占用的内存空间;以及依赖于该给定服务实例的服务实例的数量。尽管该方法在目前是较佳的,但很明显,其他技术也可以用于确定累计内存空间需求量,以及每个服务的服务依赖者数量。
第三,在步骤38中为每个服务实例计算了比率。该比率进一步定义为给定服务的累计内存空间需求量除以依赖于该给定服务实例的其他服务实例的数量。最大化该比率,将会降低所需终止的服务实例的数量。
最后,在步骤39中执行对应于该具有最大比率的服务实例的内存资源管理操作。特别地,该服务实例具有最大的比率,并且依赖于该服务实例的每一个服务实例都被终止了。如果两种服务具有相同的比率,则具有最小依赖性的服务实例被选择终止。任何一个熟悉该领域的人员都会认识到储存每个服务实例的依赖性信息的数据仓库必须进行升级,为了上述被终止的服务实例。
在一些例子中,上述被终止服务实例(包括依赖于该服务的服务)的累计内存空间需求可能并不会超过所需要的内存空间。在这种情况下,就需要重复上述操作过程,从而终止额外的服务实例。另一方面,一旦总的可提供的内存空间等于或超过所述服务的内存空间需求,该服务的需求也就得到了满足。
上述的问题同样也有一个自然的概括。假设不同服务实例具有不同的重要性,并因此被赋予不同的优先级。在这种情况下,比较合理的做法就是为每个实例设置一个权重W(s)。具有较大权重的实例,被认为更加重要。当需要从内存中释放一些服务时,应该尽量减少终止高优先级实例的数量。因此,该问题现在就变成了寻找min{W(T(V))/VS,M(T(V))≥Mt}。
在没有依赖性的情况下,上述问题就与著名的Knapsack问题非常相近。该Knapsack问题承认在O(n2W)中运行一个伪多项式算法,其中,W是最大权重。即便是在服务实例中存在相依性的情况下,也会出现下面所示的相似结果。
根据上面所述的思想,提供了一种在诸如服务网关这样有限内存环境中,进行内存资源管理的另一替代方法。参见图4所示,该方法是在收到服务请求后,从步骤42开始。为了满足所述服务的需求,该方法确定了一个或多个将要从该环境中删除的服务实例。该过程一般采用动态规划。
在该网关环境中的每个服务实例,累计内存空间需求M(s*)首先是在步骤44中被确定。然后,在步骤46中为遍历该网关环境中各服务实例确定顺序。该服务实例在后序(post-order)中较佳地被循环地遍历。特别是,设S=Sn={s1,...,sn}是当前在后序遍历中列出的一组服务实例(亦即,从左至右循环地遍历子树(child),然后再遍历根树)。递增的考察数列S1={s1},S2={s1,s2},S3={s1,s2,s3},...,为每个数列计算在给定的相依数量下,通过删除一个服务实例子集,的最大内存数量。为了计算该最大值,计算每个节点Si,最大指数k∈{1,....i-1},此时Sk不是Si的子节点。设L(Si)代表该指数的函数。对于每一个i=1,2,...n,该过程给出一个给定森林(forest)和该需求的指数的后序遍历。
例如,下面对生根于v和整数k的相依森林G的给定子树的后序遍历典型过程进行说明。
1、如果|T(v)|=0 //树为空返回2、如果|T(v)|=1 //v为一个叶节点(leaf node)L(v)←k3、否则为每个v的子树utraverse(u,G,k);4、L(v)←L(leftmost(v));5、k←k+1;6、Sk←v该过程将产生T(v)的后序遍历的遍历数列{sk,sk+1,....s|T(v)|+k-1},以及指数数列{L(s)|s∈T(v)}.
如果森林G的连接组成为C1、C2,...,Cr,则为了计算G的后序遍历,将上述过程被调用r次1、找出G的连接组成C1、C2....Cr;2、k←0;3、对i=1到rtraverse(root(Ci),G,k)这样,该过程将产生G的后序遍{s1,s2....sn},以及指数序列{L(s)|s∈V(G)}。图5中对该过程进行了简要的说明。然而,很明显,其他的遍历顺序也应纳入到本发明的范围之内。
回到图4,在步骤48中建立了一个动态规划表,表中的项目代表了可以通过删除该服务实例子集获得的内存空间。接下来,如果节点u,v∈V(G)不是另一个的子节点,如v∉T(u)]]>和u∉T(v),]]>则该节点被认为是不相容的。注意,此处的n是可被任何解法实现的实例(或者权重)总数的上限。对于每一个i∈{1,..n}以及w∈{1,..n},设Si,w代表Si={s1,...,si}中不相容元素d一个子集,其总的权重正好为w,且其总内存被最大化。如果数列Si,w存在,则设A(i,w)=M(T(Si,w)),并且A(i,w)=-∞,否则 该动态规划表的组成方式为,表的每一行都对应于根据后序法排列的服务实例的一个子集,而其每一列都分别对应于需从该子集中删除的服务实例的数量。特别地,对于每一个W∈{1,...,n},A(1,w)是已知的;而A(i,w)的其他值可以通过下式逐项计算得到如果|T(Si+1)|<w,则A(i+1,w)=max{A(i,w),M(Si+1)+A(L(Si+1),W-|T(Si+1)|)},否则,A(i+1,w)=A(i,w)。这样,表中的每一个项目都代表着一个通过从与上述服务相依的该子集中删除相应数量的服务实例后可以获得的最大内存空间数量。一个典型的动态规划表参见图6所示。
最后,在步骤50中利用动态规划表一个或多个服务实例被确定了。特别是,上述服务是通过在该动态规划表底行从左至右进行评价后进行确认的。表中的第一个表项的值(比如内存空间)超过被挑选出来的该服务需求的内存空间,表中的该项目对应于欲被删除服务实例的子集。服务实例所对应的该子集在步骤52中被删除,如此以满足所述服务的要求。
对这一替代算法的更规范的描述如下1、对于每个节点s∈S,计算累计尺寸和内存c(s)←|T(s)|及M(s)←M(T(s))。
2、调用遍历森林(G)以获得G的后序遍历序列{s1,s2....sn};以及指数数列{L(s)|s∈V(G)}.
3、初始化对于所有i=1,...,n,A(i,0)=0;对于所有w=1,...,n,A(0,w)=0;A(1,1)=m(S1),且对于所有w=2,...,n,A(1,w)=-∞//建立动态规划表4、对i=1到n5、对w=1到n如果c(Si+1)<w如果ifA(i,w)≥m(Si+1)+A(L(Si+1),w-c(Si+1))A(i+1,w)←A(i,w);B(i+1,w)←0否则A(i+1,w)←m(Si+1)+A(L(Si+1),w-c(Si+1));B(i+1,w)←1否则A(i+1,w)←A(i,w)B(i+1,w)←0//计算最佳解6、S←φ;i←n;k←min{w∈[n]A(i,w)≥Mt}。
7、当i>08、如果B(i,k)=1S←SU{Si};i←L(Si);k←k-c(Si)否则i←i-19、对于每个s∈S,删除T(s)。
对于一个熟悉本领域的人来说,O(n2)时间和O(n2)空间对于根据上述替代算法解决该问题是必需的。
以述公开和描述的,仅为本发明的较佳实施例而已。任何熟悉该领域的人都可以根据以上讨论,以及附图或权利要求书所阐述的内容意识到,在不悖离本发明的思想和范围的情况下,可以进行各种变化、修改以及修订。
权利要求
1.一种在服务网关环境中管理内存资源的方法,其特征在于该服务网关环境包含一系列服务实例,其中至少有一个依赖于其他服务实例的服务实例,包括接收一个服务请求,该服务请求中包含有超出所述网关环境所能提供的全部内存空间的内存空间需求;为每个服务实例确定一系列相依的服务实例;为每个服务实例确定累计的内存空间需求,该累计的内存空间需求中包括依赖于给定服务实例的服务实例。确定一个内存空间需求超过该服务所要求的空间需求的服务的子集,该子集包含最少数量的服务实例;以及对确定的服务实例子集进行相关的内存资源管理操作。
2.根据权利要求1所述的方法,其特征在于,执行所述内存资源管理操作的过程进一步包括删除所述已确定的服务子集。
3.根据权利要求1所述的方法,其特征在于,所述确定服务实例子集的步骤进一步包括为每个服务实例确定比率,该比率是由所述累计内存空间需求除以相依的服务实例的数量进行定义的,并且选择具有最大比率的服务,和依赖于该具有最大比率服务的每个服务实例。
4.根据权利要求1所述的方法,其特征在于,所述确定服务实例子集的步骤进一步包括确定遍历该一系列服务的顺序;为该一系列服务实例建立动态规划表,以便使表中的项目代表着一个通过删除所述服务实例的子集后可以获得的内存空间;并确定需要使用动态规划表删除的一个或多个服务实例。
5.根据权利要求1所述的方法,其特征在于,所述确定一个累计内存空间的步骤进一步包括根据为每个依赖于给定激活服务实例的激活服务实例内存空间需求,为一个给定的活动服务实例求内存空间需求的和。
6.一种在服务网关环境中管理内存资源的方法,其特征在于该服务网关环境包含一系列服务实例,包括(a)接收一个服务请求,该服务请求中包含有超出所述网关环境所能提供的全部内存资源的内存空间需求;(b)为每个服务实例确定累计的内存空间需求;(c)为每个服务实例确定一系列相依的服务实例;(d)为每个服务实例确定比率,其中,该比率是由累计内存空间需求除以相依的服务实例的数量进行定义的;(e)对具有最大比例的服务实例进行相关的内存资源管理。
7.根据权利要求6所述的方法,其特征在于,所述的内存资源管理操作进一步包括删除具有最大比率的服务实例,以及每个依赖于该具有最大比率服务实例的其他服务实例。
8.根据权利要求7所述的方法,其特征在于,进一步包括在删除所述服务实例的步骤之后,确定于所述网关环境相关的全部可用内存空间;确定该服务请求的内存空间需求是否超过与该网关环境相关的全部可用内存空间;当该服务请求的内存空间需求超过与该网关环境相关的全部可用内存容量时,重复执行上述步骤(b)到(e)。
9.根据权利要求8所述的方法,其特征在于,该方法进一步包括当该服务请求的内存空间需求小于或等于与该网关环境相关的全部可用内存空间时,执行所述服务请求。
10.根据权利要求6所述的方法,其特征在于,所述确定累计内存空间需求的步骤进一步包括根据为每个依赖于给定服务实例的服务实例的内存空间需求,为一个给定的服务实例求内存空间的和。
11.根据权利要求6所述的方法,其特征在于,该方法进一步包括为所述一系列服务实例保持一个数据仓库,其中,该数据仓库中包含有针对一个给定服务的一个标识符,该特定服务实例的累计内存空间需求,以及与依赖于该给定服务实例的服务实例的数量。
12.一种在服务网关环境中管理内存资源的方法,其特征在于所述网关中包含一系列服务,包括接收一个服务请求,该服务请求中包含有超出所述网关环境所能提供的全部内存资源的内存空间需求;为该网关环境中的每个服务实例确定累计的内存空间需求;确定遍历所述一系列服务实例的顺序;为所述一系列服务实例建立一个动态规划表,以便使表中的各项目代表着一个能够通过删除该服务实例的一个子集获得的内存空间总量;确定一个或多个根据动态规划表需要被删除的服务实例。
13.根据权利要求12所述的方法,其特征在于,该方法进一步包括删除确定的服务实例,以便在该网关环境管理内存资源。
14.根据权利要求12所述的方法,其特征在于,所述确定累计内存空间需求的步骤进一步包括根据为每个依赖于给定服务实例的服务实例的内存空间需求,为一个给定的服务顺利求内存空间的和。
15.根据权利要求12所述的方法,其特征在于,所述确定遍历顺序的步骤进一步包括按照后序法循环遍历服务实例。
16.根据权利要求15所述的方法,其特征在于,所述创建动态规划表的步骤进一步包括按照后序定义所述表中的每一行对应于所述服务实例的一个子集,同时定义所述表中每一列对应于一系列需要从所述服务实例的子集中删除的服务实例,这样,表中的每一项都代表着一个最大的内存空间量,该内存空间量可通过从服务实例相应子集删除相应数量的服务实例获得。
17.根据权利要求12所述的方法,其特征在于,所述确定一个或多个需要删除的服务实例过程进一步包括从左至右评价在该动态规划表底部一列的项目,并且选择那些内存空间超过所述服务需求的内存空间需求的项目所对应的服务实例。
全文摘要
本发明公开了一种在服务网关环境中管理内存资源的方法。该方法包括接收一个服务请求(32),该服务请求包含着一个超出所述网关环境所能提供的全部内存空间的内存空间需求;为每个服务实例确定一系列相依的服务实例(36);为每个服务实例确定累计的内存空间需求(34);确定一个服务实例的子集,该子集中的内存空间需求超过该服务对空间的要求,该子集包含最少数量的服务实例;对涉及的所述定义服务实例子集进行的内存资源管理。
文档编号G06F9/46GK1568468SQ02820163
公开日2005年1月19日 申请日期2002年10月11日 优先权日2001年10月12日
发明者易勃拉姆·卡默, 哈里德·埃尔巴辛尼, 陈北忠 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1