CN1138207C - 使用远程java对象分配程序的方法和装置 - Google Patents
使用远程java对象分配程序的方法和装置 Download PDFInfo
- Publication number
- CN1138207C CN1138207C CNB001226789A CN00122678A CN1138207C CN 1138207 C CN1138207 C CN 1138207C CN B001226789 A CNB001226789 A CN B001226789A CN 00122678 A CN00122678 A CN 00122678A CN 1138207 C CN1138207 C CN 1138207C
- Authority
- CN
- China
- Prior art keywords
- work
- workstations
- cluster
- starter
- router
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
一种用于管理分布式多机种网络节点以便定时地和有效地满足服务请求的要求的分布式Java虚拟机方法和系统。工作负荷管理器将收到的请求分类为特定类型的服务,将工作置于待执行的逻辑队列中。路由队列将工作置于许多可用节点中的一个节点上。根据统计数据、可用性和过去性能将工作分配给各节点。周期性地改变系统以满足对服务和/或保留资源的要求。本发明的JWLM不断地了解程序的需要而不需要系统管理器的干预。
Description
技术领域
本发明一般涉及计算机系统及具体地涉及一种用于管理计算机程序的执行的系统和对系统的相应接口。此外,它涉及一种用于实施该系统及其相关接口的方法。
背景技术
分布式处理涉及在多个计算机系统上完成计算机处理。在分布式处理中,每个系统完成一部分任务的处理。常规工作负荷管理系统对于分别处于一组合作的网络节点之间的大型程序的分配是有利的。这些方法不论系统中现有其他程序的性能如何而用于使每个单个应用程序的性能优化。此外,这些系统一般要求系统管理器的干预,用户的输入或对有关程序性能和/或资源需求的预先了解,均匀系统度量和/或同机种平台。因此,非常希望有一个能够避免所有前述要求的负荷管理系统。此外,非常希望有一个灵活和可适应的系统,用于分担多机种网络资源从而犹如计算机程序在单个工作站上单独运行那样地以分时方式执行这些计算机程序。
现有将工作站加以群集的分布式处理方法依赖于与硬件或操作系统有关的与调试相关信息,例如交换的用户数量,用户队列长度及页面管理集合。因此也非常希望有一种分布式处理系统,能够以一种不可知论的态度动态地生成与不同平台和操作系统的性能有关的统计数据。与此同时,也非常希望有能够动态地参与群集中的附加的平台和工作站。
当工作站网络增大时,重要的是能够利用网络中到处都有的未利用的中央处理单元(CPU)资源。例如,Java通过在其自己的Java虚拟机(JVM)中运行代码而有助于代码的可移植性,该虚拟机对应用程序隐藏平台细节。然而,当利用可移植代码时,通常无法利用具体系统和平台上的更有效的服务,因而在使用这类代码时通常使性能变坏。例如,开发以供在任何地方运行的Java代码可能无法利用一个具体平台的独一的硬件和/或软件特征。因此非常希望有一种方法和系统,用于允许在Java虚拟机中运行的对象独一地识别其位置,而同时仍然在名称和类型上与系统对象的其他分布式版本类似。也希望有一个工作单元,能够利用平台特征而仍然保持真正的系统不可知论。
进一步,其他现有方法要求系统编程员更新一个配置文件,分配软件读取该配置文件以便了解有关哪个工作站具有哪个具体硬件/软件特征。此外,这些现有方法要求不同版本的系统应用程序,例如一个在操作系统A上运行的版本,另一个在版本B上运行的版本,另一个用于检查硬件C是否可用的版本。因此,非常希望有一种方法和系统,能够完成分布式处理而不需要与具体工作站相关的具体配置信息。还非常希望有一种方法和系统,能够利用可用的具体配置信息。此外,也非常希望这一方法和系统能在任何平台/版本/操作系统上运行应用程序的相同副本。
发明内容
本发明旨在一种灵活的和可适应的系统,用于分担多机种网络资源从而犹如计算机程序在单个工作站上单独运行那样地以有效的分时方式执行这些计算机程序。本发明的方法和系统能够分配任何Java负荷。本发明提供一种Java负荷管理器(JWLM),它是一种用于管理分布式多机种网络节点以便满足对分时和有效的服务的请求的需要的模型。在收到一个对服务和位置的请求后,JWLM将该请求分类为一个具体类型的服务和在逻辑队列上进行工作的位置。路由队列将该工作置于网络中许多准备处理此类服务的可用节点中的一个之内。选择哪个节点放置该工作取决于所有感兴趣的节点的统计数据、可用性和过去的性能。周期地改变该系统以便满足对服务和/或保留的资源的需要。
本发明的JWLM能够了解过程中程序的需要,从而不需要系统管理器的干预。此外,本发明的方法和系统不需要依赖于系统的具体量度,当然在选代实施例中也可能使用性能量度。
本发明还允许将对象分配并在分布式工作站上运行它们,犹如它们当初就在它们运行的机器上就地启动一样。对象通常是用于完成某些很具体的任务的小段程序码。例如,可以将对象组合而成为一个复杂应用程序。每个对象是一个独立代码段,它可利用一个或多个与该对象通信的接口与其他对象组合。对象可以分配至不同计算机并使用一个或多个与对象的接口在网络上彼此通信。可以通过工作站群集分配本发明的工作。所有送至不同工作站的工作具有相同类名。在一个具体工作站上,类路径可能保持对象的不同实施。因此,在动态编译期间,如一个平台具有更有效的线程包或能够利用更有效的存储硬件设备,则可以使用更有效的特征来动态地编译该工作单元。
根据本发明一个方面在此提供一种用于在分布式计算环境中服务于工作请求的工作负荷管理器,该工作负荷管理器包括:一个位于一个或多个包括一群工作站的节点内的管理模块,该管理模块响应于收到的工作请求,传输第一信号以便启动执行一个与该工作请求相关联的工作;一个位于一个或多个包括该群工作站的节点内的执行模块,该执行模块响应于所述第一信号来执行该工作,该执行模块传输一个第二信号至管理模块以标示执行工作的完成;一个分类器,响应于收到的工作请求来分配与该工作请求相关联的工作;一个或多个负责分配一类工作的路由器,所述一个或多个路由器响应于由分类器分配的工作而传输第一信号以便启动执行该工作;一个策略管理器,响应于一个由所述分类器和所述一个或多个路由器处理的现有工作负荷而生成所述分类器和所述一个或多个路由器的附加实例,来执行现有工作负荷。
根据本发明另一个方面在此提供一种通过工作站群集提供有效的分布式处理的分配工作的方法,所述群集具有多个通过网络互连的工作站,该方法包括:接收一个工作请求;在工作站群集之间分配一个或多个与工作请求相关的任务;将一个或多个具有相同类名的对象实例化以便执行所述一个或多个任务;及通知所述一个或多个任务的完成。
根据本发明另一个方面在此提供一种通过工作站群集提供有效的分布式处理的分配工作的方法,所述工作站群集具有多个通过网络互连的工作站,该方法包括:接收一个工作请求;将工作请求划分为一个或多个任务;将所述一个或多个任务分配给一个或多个能够处理所述一个或多个任务的路由器队列;调度所述分配的一个或多个任务以供执行;确定与所述一个或多个路由器队列相关联的性能统计数据;计算所述分配的步骤与调度的步骤之间渡过的时间;其中调度的步骤包括:确定一个或多个最适合于执行所述一个或多个任务的启动器;及调度所述一个或多个任务给所述一个或多个最适合于执行的启动器。
在本发明中,工作单元在所有节点中都具有相同类名,当然它们的类路径实施可能不同。此外,负荷管理软件不必要了解一个具体工作站可能包括的具体特征。工作站的实施优点是在动态编译期间与工作单元联编,允许工作站的分布式系统具有透明度。
下面参照附图详细地描述本发明的进一步特征和优点以及本发明不同实施例的结构和操作。在附图中,类似参考数字标示等同的或功能类似的元件。
附图说明
现在参照附图、通过例子描述本发明的优选实施例,附图中:
图1是用于阐述本发明的JWLM的部分的图例;及
图2是一个实施例中本发明的流程图。
具体实施方式
此处以下名词用于描述本发明。以下规定的名词定义一般都对应于工业中所有名词。
群集-一群计算机,协调工作,用作参加一个或多个任务的一个单元;
分配-在一个系统的各节点之间共担计算机程序的执行;
动态-在一个系统或应用程序的运行期间完成一个任务的能力;
同机种-一群分享类似硬件和软件配置的计算机;
多机种-一群或在硬件或在软件配置上不同的计算机;
节点-一个能够执行程序和在网络上通信的计算机或处理器;
资源-一个能对计算机程序执行的完成作出贡献的计算机或设备;
线程-能够或被安排在处理器上独立地运行的计算机程序的一部分;
负荷-准备执行的程序数量的量度;
工作站-一个能够执行程序和在网络上通信的计算机;
工作单元-表示一个客户请求的逻辑实体。
在本发明的一个实施例中,Java负荷管理器(JWLM)划分为两个逻辑功能部分:管理部分和执行部分。这两个逻辑功能部分合作以便在分布式环境中无缝地服务于请求。每个部分及其子部分将参照图1在下面描述。图1是用于描述根据本发明的一个实施例的JWLM各部分的图100。在图1中显示本发明的系统的不同模块以及不同模块之间的信息流。应该知道,可以采用JVM以外的面向对象平台来实施本发明。
管理部分
如图1中所示,从外部发出一个工作请求102,它被送至一个分类器104。分类器104发送此工作请求至合适的路由器106,后者然后将该工作请求102送至位于具体节点例如节点114、116的一个可用启动器108a,...或,108z。当完成后,启动器108a,...或,108z将可管理的对象和统计数据送回路由器以供后处理。策略管理器110向路由器模块106a,..,106z查询统计数据并在合适时候将指令送至相应节点114、116处的节点管理器112、120。一个这类补救步骤可能包括由策略管理器110在一个可用节点114、116处启动一个附加启动器。选代地,策略管理器110可以增加附加路由器容量。
分类器
在本发明的一个实施例中,分类器104负责接收对服务的工作请求及将任务赋予适合于此类工作的路由器106a,...,106z。分类器104保持一个可用路由器名单。如对于相同类型的工作有多于一个路由器可用,则分类器根据使用中的路由策略选择一个。路由策略的一个例子包括一个在先来先服务的基础上由启动器108、118处的路由器106a,...,106z来调度工作。另一个例子可能包括启动器108、118处的调度工作,其方式是在自路由器106接收工作时将优先级给予最能响应的启动器。为跟踪它自己的性能,分类器104可能监视其输入队列的长度以便避免成为系统瓶颈。策略管理器110还可以监视分类器104以及其他部分并作出变动,包括增加分类器104的多线程级别。
在将分类器104实例化之前,策略管理器110自一个配置文件中读取所有分类规范。配置文件中的信息特性包括工作类别,相关连的Java类名,路由器名称和节点规范。还可以在运行期间动态地生成此信息。
分类器104通常允许个别地服务于相似类型的工作以便保证此类工作中的服务级别。对分类器104的接口包括以下功能并允许新工作与分布式系统中的现有负荷相关连。
newWork()-为一项新工作建立一个可管理对象并将它放置于合适的工作队列即路由器中。
subWork()-某些对服务的请求可以划分为数个较小半独立服务。例如,一个对网页的请求可能包括数个对其他个别网页的请求。这些请求共享相同的工作单元。如在服务处理期间启动器决定需要附加工作,则此接口由一个启动器108a,...,108z,118a,...,118z调用。
工作单元是表示一个客户请求的逻辑实体。客户请求可能造成多个线程在不同过程例如数据库组、事务监视器或网络过程中运行。多个线程都表示一个与客户请求相关连的工作单元。因此,在本发明中,通过将多线程与一个工作单元关联起来,本发明能够追踪一个客户请求所启动的所有资源。附加地,这类信息对于监视器统计数据信息、事务上下文和安全流会是有用的。
工作路由器
如所提到的,路由器106a,...,106z自分类器104接收工作。每个路由器106a,...,106z负责分配一个特定类型的工作。当与一个具体工作请求相关连的工作到达路由器106a,...,106z时,已经收到一个对服务的请求的分类器104确定将要执行的工作类。这种工作类的例子可能包括数据库查询,网络请求或事务请求。分类器104也已经确定该接收路由器是用于将此请求排队以供执行的合适位置。
本发明的路由器106a,...,106z允许多个虚拟机过程服务于输入的工作。此外,路由器106a,...,106z不必位于同一平台上。
在本发明的一个实施例中,路由器106a,...,106z保持数个队列:1)一个准备工作队列,它包括一组已经提交给路由器的工作;2)一个登记的启动器队列,它包括一组在路由器上登记的启动器;3)一个调度工作队列,它包括已经派遣给启动器而尚未返回的工作;4)启动器工作队列,它具有一组已经与一个启动器相关连并准备执行的工作;5)执行启动器队列,它包括一组当前正在执行工作之中的启动器;6)完成的工作队列,它包括一组已经完成但在等待后处理的工作;7)一个统计数据收集队列,它包括一组已完成的准备从中提取统计数据的工作;及8)一个准备启动器队列,它具有一组等待派遣工作给它们的启动器。这些相关连的路由器队列允许在不同完成阶段的工作流经虚拟机的分布式系统而不产生任何瓶颈。现在将在下面全面地描述每个队列。
1)准备工作
当分类器104赋予工作给路由器106a,...,106z时,分类器104将工作排在路由器的准备工作队列中。路由器106a,...,106z跟踪此队列的长度并将它报告给策略管理器110。如此队列长度在增长,则显然没有足够的启动器容量用于处理到达路由器106a,...,106z的工作数量;或存在某些原因以致路由器不能足够快地派遣工作。此缺陷由策略管理器110注意到,并采取适当步骤收集必要资源以便减轻负担。一个这类补救步骤可能包括由策略管理器110在可用的节点114、116处启动一个附加启动器。选代地,策略管理器110可以增加附加路由器的容量。
一旦路由器106a,...,106z派遣一个单元的工作至启动器108a,...,108z,118a,...,118z后,在准备工作队列中花费的时间和派遣的时间在与此工作相关连的对象中记录下来。当此可管理的工作对象回至路由器106a,...,106z时,返回的时间也记录下来,从而提供处理此工作请求所需全部时间。这些统计数据成为负责这些工作的路由器106a,...,106z以及启动器108a,...,108z,118a,...,118z的统计数据的一部分。这些统计数据然后用于在工作站上以较大自由空间建立附加启动器线程和/或过程。
2)登记启动器
在向路由器106a,...,106z登记工作之后,启动器108a,...,108z,118a,...,118z的每个可用线程向路由器106a,...,106z标示它们准备接受工作。启动器线程108a,...,108z,118a,...,118z然后在路由器106a,...,106z处按照由路由器排队策略所确定的顺序排队。下面将要更详细地描述实施的路由器排队策略。此处启动器线程108a,...,108z,118a,...,118z等待那些排队等候处理的工作。
3)将工作派遣给启动器
每个路由器106a,...,106z优化其启动器队列以使对下一个可用启动器的选择靠近队列起点。当路由器106a,...,106z具有待处理的工作时,路由器106a,...,106z将此工作打包并将该打包的工作在准备得最好的启动器处排队。
4)在启动器处将工作排队
在收到新工作已经在其队列中准备好的通知后,启动器线程108a,...,108z,118a,...,118z开始处理输入的工作。在一个实施例中,工作进至启动器108a,...,108z,118a,...,118z,并带有待执行的局部Java类名称以及传送至执行对象的参量。此类存在于启动器的类路径内并由启动器线程108a,...,108z,118a,...,118z实例化。在一个实施例中,路由器106a,...,106z可能传送一个待分配的对象至启动器线程108a,...,108z,118a,...,118z,该对象具有一个待执行的方法或程序。启动器线程108a,...,108z,118a,...,118z使用传送的参量(如果有的话)来调用该方法或程序。
5)启动器执行工作单元
一般而言,对象运行中生成的结果以及任何必要的通信由对象本身处理。哪个地方工作的相关连的类能够执行,该对象就能够运行。其结果是,在工作分类中任何倾向都是隐式的。例如,如一个服务请求被分类为打印机工作,则显然有一种最终在打印机上执行的倾向。
6)完成时启动器通知路由器
当启动器108a,...,108z,118a,...,118z处理的当今过程完成时,启动器108a,...,108z,118a,...,118z与路由器106a,...,106z接触。可管理的对象在路由器处排队以供后处理。作为此通信的一部分,启动器108a,...,108z,118a,...,118z发送有关启动器过程和启动器线程108a,...,108z,118a,...,118z在其上运行的机器的性能信息。统计数据的收集可能对于硬件的操作系统是专用的。选代地,所用统计数据可能包括完成工作单元所需时间。这使JWLM平台不可知。也可能包括例如有关页面管理、CPU利用或I/O的统计数据。
附加地,启动器线程108a,...,108z,118a,...,118z通知路由器它已经完成对它赋予的任务。一般而言,此时启动器108a,...,108z,118a,...,118z通知路由器它也准备自路由器106a,...,106z接受另一个任务。它通过将它自己在路由器的完成启动器队列中排队并发送一个信号至路由器过程通知它完成的启动器准备提供使用。
在一个实施例中,启动器可能在通知路由器该启动器准备作更多工作的步骤之外的步骤中标示它已经完成任务。当判定一个完成的启动器并不准备接受更多工作时,这样将步骤分开是有用的。例如,启动器108a,...,108z,118a,...,118z可能已经自策略管理器110收到一个信号,即启动器108a,...,108z,118a,...,118z安排为关机,或启动器108a,...,108z,118a,...,118z在准备作更多工作之前可能具有某些后处理要完成。选代地,在另一个实施例中,为改进性能,可能合并这两步以便减少启动器108a,...,108z,118a,...,118z与路由器106a,...,106z之间的通信和同步的量。
7)路由器完成处理及收集统计数据
由启动器108a,...,108z,118a,...,118z送回的已经完成的可管理的工作对象由路由器106a,...,106z处理。路由器106a,...,106z首先注意从调度到送回任务的接收的总响应时间而处理该完成的工作。总响应时间可用于确定一个启动器的性能及将启动器性能分类。
在路由器106a,...,106z处注意到以上描述的与调度给启动器108a,...,108z,118a,...,118z的工作相关的工作和其他启动器性能。启动器统计数据保存于一个由路由器106a,...,106z监视的活动老化表内,同时可供策略管理器110使用。此表将以下信息老化:来自每个启动器108a,...,108z,118a,...,118z的平均响应时间以及路由器106a,...,106z专用信息,例如在相同期间内的平均队列长度。每次从启动器108a,...,108z,118a,...,118z收到完成的工作时,即在路由器106a,...,106z处更新此表。
8)将启动器划分回至准备队列中
在路由器106a,...,106z处根据准备启动器的过去性能将它们排队。启动器108a,...,108z,118a,...,118z在路由器的准备队列内排队,以使性能最好的启动器具有接受新任务的优先级,因而靠近队列起点。一般而言,熟悉技术的人所知道的计算机数据结构领域内的任何排队算法都可以用于在准备队列内将启动器定位。
下面是与路由器的启动器接口,用于允许新类型的工作由群集动态地服务,同时允许附加节点能够在执行工作中参加系统。
RegisterForWork()-促使一个启动器向一个路由器登记由路由器提供的工作类型。当请求或完成分配的工作时,启动器向路由器报告。由业务管理器设置启动器类型。启动器的类型可以包括数据库,工资表或仓库工作的JVM。
UnregisterForWork()-促使该启动器不再与此路由器相关连。
ReadyForWork()-标示发出此调用的启动器线程已准备好并等待处理一个来自此路由器的请求。虽然对于任何一个启动器及其线程是集体地统计数据的,但启动器的每个线程及工作分配却是个别地对待的。
FinishedWork()-一个完成对一个工作请求的处理的启动器现在向路由器标示此点。包括有关此请求的生命的有价值的信息的工作对象单元被送回至路由器。
执行部件
节点管理器
在本发明的一个实施例中,能够分享工作处理的每个节点114,116至少执行一个节点管理器112,120。节点管理器112,120负责接收和处理在相应的节点114、116处开始和结束执行启动器108a,...,108z,118a,...,118z的请求。每个启动器108a,...,108z,118a,...,118z在不同于节点管理器114、116的它自己的Java虚拟机126a,...,126z,128a,...,128z内开始。启动器108a,...,108z,118a,...,118z负责接收来自它已经登记的路由器106a,...,106z的工作。节点管理器管理一个节点并在节点上将新虚拟机动态地增加或删除以便执行工作或一部分工作。
为了提供最大灵活性,节点114、116有能力广播它们的可用性。这促使全局管理器122将它们增加到可用节点表中,使策略管理器110允许节点114、116具有由路由器106a,...,106z为它们安排的工作。
策略管理器110首先向节点管理器112、120标示一个开始启动在系统中当今需要类型的启动器的请求。节点管理器112、120开始启动所需启动器及启动器108a,...,108z,118a,...,118z向规定的路由器106a,...,106z登记而进行响应。此能力允许工作站动态地使一个群集参加服务工作。
节点管理器的接口中的方法包括以下内容。这些方法通过允许建立执行给定工作的启动器而便于动态地扩展和收缩节点。
CreateInitiator()-节点管理器接收启动器向其报告的路由器的名称及启动器负责执行的工作类型。
DestroyInitiator()-通知节点管理器以便将调用该方法中涉及的启动器关闭。
Shutdown()-通知节点管理器以便在确认已经拆除了该节点管理器所负责的启动器之后将它自己关闭。
启动器
本发明包括一个或多个如108a,...,108z,118a,...,118z处所示的启动器。这些启动器的功能将参照数字识别符108a加以描述。然而应该理解,图1中所示附加启动器(...,108z,118a,...,118z)也能完成类似功能。此外,在以下描述中将参照图中所示一个路由器106a。然而还应该知道,相同的描述同样适用于本发明的其他路由器(...,106z)。
在实例化中,启动器108a,...,108z,118a,...,118z向一个路由器106a,...,106z登记并且标示它们已经准备接受工作进行处理。启动器108a等待来自其路由器106a的工作并在接受后进行处理。路由器106a向启动器108a发送将由启动器108a实例化的对象类的名称,送给此对象的任何参量及工作单元。启动器108a将一个合适类型的对象实例化并等待此工作完成。当完成时,此工作单元连同其包装一起送回至路由器106a,标示已经完成该工作。该包装可能包括来自启动器108a的有关路由器106a可能跟踪的性能的统计数据。在此处,启动器108a准备接受更多工作并向路由器106a标示这一状态。启动器108a重复这个将自己排队接受工作并完成工作的循环,直至相关连的策略管理器110指示它去做其他事情。启动器108a具有能力增加或减少数量。
允许在具有启动器的节点上执行工作的启动器接口的方法包括以下内容。
NewWork()-向准备启动器提供一件新工作以及对执行这类工作的类型和代码的参考。命令启动器记下JVM统计数据并在通知路由器已经完成此工作后将它们送回至路由器。
AddInitiatorThread()-命令启动器增加另一个启动器线程至现有集合中。这遵循正常路径:Ready->Execute->Finish。
RemoveInitiatorThread()-命令启动器停止执行其当今执行的线程中的一个并从存储器中移走该启动器。
SuspendInitiatorThread()-命令启动器自可用于工作的当今线程组中移走一个线程但仍然保留该线程以备以后可能重新启动。
WakeInitiatorThread()-命令启动器重新启动一个睡眠中的线程并送回它以备服务于处理工作。
图2是本发明的一个实施例的流程图。在步202,分类器接收一个工作请求。在步204,工作请求划分为个别的任务,例如数据库查询,网络处理和打印请求。在步206,每个任务分配至能够处理特定任务的路由器的一个队列中。在步208中,路由器确定下一个可用的准备执行分配在它的队列中的任务的启动器。路由器可能通过查找其准备启动器的队列而确定启动器。这些启动器可能位于工作站群集中的不同节点内。然后路由器分配工作给启动器。
在步210,计算工作排队与工作分配之间的时间间隔,并且如步212所示地,由策略管理器使用它以便在系统中增加或删除资源。在步214,启动器将一个执行工作的对象实例化。虽然该对象使用由路由器传送的通用类名实例化,但它可能具有对于启动器位于其中的节点是专用的不同实施。本发明的这一特征允许利用系统专用资源。在步216,启动器完成工作并向路由器报告。此时启动器可以将它自己排列为一个准备的和可用的启动器以供执行下一个任务。附加地,启动器向路由器报告包括硬件、操作系统和性能统计数据的系统专用信息。在218,这些统计数据用于确定最适合于最有效地处理一个专用任务的启动器。所确定的信息然后用于分配随后的任务至所确定的最合适的启动器。
使用常数于对象位置确定
在本发明中,不需要用于为运行分布式工作的工作站规定专用硬件/软件特征的配置文件。在一个实施例中,本发明可能利用这类专用特征(如果它们存在的话)。如不存在这些特征,则本发明使用工作站上运行的实施代码。此外,本发明允许一个应用程序的相同副本在任何平台/版本/操作系统上运行。本发明包括在运行时间内与工作单元一起动态地编译的类路径中的特定特征的逻辑。类路径对工作站是独一的,同时并不要求附加地设置此工作负荷分配。
本发明的JWLM可以实施于Java中及可以类似于一个Java虚拟机那样地操作。然而应该理解,本发明也可利用其他已知编程语言和应用程序来实施。
虽然具体地结合本发明的优选实施例显示和说明了本发明,但熟悉技术的人应该理解,可在不背离本发明的实质和范围的情况下在形式和细节上在其中作出以上和其他改变。
Claims (31)
1.一种用于在分布式计算环境中服务于工作请求的工作负荷管理器,该工作负荷管理器包括:
一个位于一个或多个包括一群工作站的节点内的管理模块,该管理模块响应于收到的工作请求,传输第一信号以便启动执行一个与该工作请求相关联的工作;
一个位于一个或多个包括该群工作站的节点内的执行模块,该执行模块响应于所述第一信号来执行该工作,该执行模块传输一个第二信号至管理模块以标示执行工作的完成;
一个分类器,响应于收到的工作请求来分配与该工作请求相关联的工作;
一个或多个负责分配一类工作的路由器,所述一个或多个路由器响应于由分类器分配的工作而传输第一信号以便启动执行该工作;
一个策略管理器,响应于一个由所述分类器和所述一个或多个路由器处理的现有工作负荷而生成所述分类器和所述一个或多个路由器的附加实例,来执行现有工作负荷。
2.如权利要求1中所要求的工作负荷管理器,其中执行模块包括:
一个或多个启动器,响应于所述第一信号来执行该工作,所述一个或多个启动器传输所述第二信号至所述一个或多个路由器,以便标示执行工作的完成。
3.如权利要求2中所要求的工作负荷管理器,其中所述管理模块还包括:
一个或多个对象,由所述一个或多个启动器实例化以便执行该工作,所述对象具有相同名称。
4.如权利要求3中所要求的工作负荷管理器,其中具有相同名称的所述对象具有所述对象的不同实施。
5.如权利要求2中所要求的工作负荷管理器,其中所述一个或多个启动器位于计算机网络中的一个或多个节点内。
6.如权利要求5中所要求的工作负荷管理器,其中所述一个或多个节点包括多机种节点。
7.如权利要求5中所要求的工作负荷管理器,其中执行模块生成与工作的执行相关的统计数据,该执行模块传输生成的统计数据至管理模块。
8.如权利要求7中所要求的工作负荷管理器,其中所述统计数据包括与在所述一个或多个节点内执行的工作相关联的存储器页面管理信息。
9.如权利要求7中所要求的工作负荷管理器,其中所述统计数据包括所述一个或多个节点对中央处理单元的利用。
10.如权利要求7中所要求的工作负荷管理器,其中所述统计数据包括所述一个或多个节点对输入/输出的利用。
11.如权利要求7中所要求的工作负荷管理器,其中所述一个或多个路由器在所述一个或多个启动器中的第一个启动器上启动工作,根据所述统计数据确定的所述第一个启动器最适合于处理该工作。
12.如权利要求2中所要求的工作负荷管理器,其中该执行模块还包括:
一个或多个节点管理器,响应于来自第一信号的请求以便开始和结束所述一个或多个启动器。
13.如权利要求1中所要求的工作负荷管理器,其中分类器分配工作给确定为能最好地处理该工作的所述一个或多个路由器。
14.如权利要求13中所要求的工作负荷管理器,其中分类器还将工作划分为工作子组,并分配多个子组给确定为能最好地处理多个工作子组的所述一个或多个路由器。
15.如权利要求1中所要求的工作负荷管理器,其中所述一个或多个路由器还包括多个路由器队列,用于允许将不同阶段完成的工作进行排队从而消除工作负荷管理器中的潜在瓶颈。
16.一种通过工作站群集提供有效的分布式处理的分配工作的方法,所述群集具有多个通过网络互连的工作站,该方法包括:
接收一个工作请求;
在工作站群集之间分配一个或多个与工作请求相关的任务;
将一个或多个具有相同类名的对象实例化以便执行所述一个或多个任务;及
通知所述一个或多个任务的完成。
17.如权利要求16中所要求的通过工作站群集分配工作的方法,该实例化的步骤包括:
将一个或多个具有相同类名但不同实施的对象实例化以便执行所述一个或多个任务。
18.如权利要求17中所要求的通过工作站群集分配工作的方法,该方法还包括:
收集与分配和执行所述一个或多个任务的步骤相关的统计数据。
19.如权利要求18中所要求的通过工作站群集分配工作的方法,其中所述收集的统计数据包括:
与执行所述一个或多个任务的节点有关的硬件相关信息。
20.如权利要求18中所要求的通过工作站群集分配工作的方法,其中所述收集的统计数据包括:
与执行所述一个或多个任务的节点有关的操作系统相关信息。
21.如权利要求18中所要求的通过工作站群集分配工作的方法,其中所述收集的统计数据包括:
与执行所述一个或多个任务的节点有关的性能统计数据。
22.如权利要求18中所要求的通过工作站群集分配工作的方法,该方法还包括:
根据所述收集的统计数据来在工作站群集中确定一个最适合于处理所述一个或多个任务的节点。
23.如权利要求22中所要求的通过工作站群集分配工作的方法,其中分配的步骤包括:
分配所述一个或多个任务给所述最适合于处理所述一个或多个任务的节点。
24.如权利要求16中所要求的通过工作站群集分配工作的方法,该方法还包括:
动态地增加一个新节点至工作站群集中。
25.如权利要求16中所要求的通过工作站群集分配工作的方法,该方法还包括:
从工作站群集中动态地移去一个旧节点。
26.如权利要求24中所要求的通过工作站群集分配工作的方法,该方法还包括:
自一个准备加入工作站群集的新节点中接收可用性的广播,以及动态地增加的步骤包括动态地增加所述新节点至工作站群集中。
27.一种通过工作站群集提供有效的分布式处理的分配工作的方法,所述工作站群集具有多个通过网络互连的工作站,该方法包括:
接收一个工作请求;
将工作请求划分为一个或多个任务;
将所述一个或多个任务分配给一个或多个能够处理所述一个或多个任务的路由器队列;
调度所述分配的一个或多个任务以供执行;
确定与所述一个或多个路由器队列相关联的性能统计数据;
计算所述分配的步骤与调度的步骤之间渡过的时间;
其中调度的步骤包括:
确定一个或多个最适合于执行所述一个或多个任务的启动器;及
调度所述一个或多个任务给所述一个或多个最适合于执行的启动器。
28.如权利要求27中所要求的通过工作站群集分配工作的方法,其中该方法还包括:
根据所述一个或多个路由器队列的性能统计数据来增加附加启动器以便执行所述一个或多个任务。
29.如权利要求27中所要求的通过工作站群集分配工作的方法,其中确定的步骤还包括:
从所述一个或多个启动器中接收与所述一个或多个启动器相关联的系统相关统计数据,以便确定最适合于执行所述一个或多个任务的所述一个或多个启动器。
30.如权利要求27中所要求的通过工作站群集分配工作的方法,其中确定的步骤还包括:
计算所述一个或多个启动器的性能统计数据,以便确定最适合于执行所述一个或多个任务的所述一个或多个启动器。
31.如权利要求27中所要求的通过工作站群集分配工作的方法,其中该方法还包括:
在工作站群集上分配具有相同类名但不同实施的对象,所述一个或多个启动器调用这些对象以便执行所述一个或多个任务。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/374,540 | 1999-08-16 | ||
US09/374,540 US6732139B1 (en) | 1999-08-16 | 1999-08-16 | Method to distribute programs using remote java objects |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1286426A CN1286426A (zh) | 2001-03-07 |
CN1138207C true CN1138207C (zh) | 2004-02-11 |
Family
ID=23477290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB001226789A Expired - Lifetime CN1138207C (zh) | 1999-08-16 | 2000-08-15 | 使用远程java对象分配程序的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US6732139B1 (zh) |
CN (1) | CN1138207C (zh) |
GB (1) | GB2357863B (zh) |
Families Citing this family (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7257819B1 (en) * | 2001-04-30 | 2007-08-14 | General Electric Capital Corporation | Method and system for dispatching service requests to sub-applications |
US20020169680A1 (en) * | 2001-05-10 | 2002-11-14 | International Business Machines Corporation | Method and apparatus for building commercial distributed computing networks via computer cost subsidization |
US6901522B2 (en) * | 2001-06-07 | 2005-05-31 | Intel Corporation | System and method for reducing power consumption in multiprocessor system |
US7328336B2 (en) * | 2001-06-26 | 2008-02-05 | Ncipher Corporation Ltd | System and method for small-area system data processing |
US7181489B2 (en) * | 2002-01-10 | 2007-02-20 | International Business Machines Corporation | Method, apparatus, and program for distributing a document object model in a web server cluster |
US7747730B1 (en) | 2002-06-28 | 2010-06-29 | Netfuel, Inc. | Managing computer network resources |
US20040088361A1 (en) * | 2002-11-06 | 2004-05-06 | Stuart Statman | Method and system for distributing information to services via a node hierarchy |
US7395536B2 (en) * | 2002-11-14 | 2008-07-01 | Sun Microsystems, Inc. | System and method for submitting and performing computational tasks in a distributed heterogeneous networked environment |
US7171470B2 (en) * | 2003-02-20 | 2007-01-30 | International Business Machines Corporation | Grid service scheduling of related services using heuristics |
US7461166B2 (en) * | 2003-02-21 | 2008-12-02 | International Business Machines Corporation | Autonomic service routing using observed resource requirement for self-optimization |
CN1829963B (zh) * | 2003-07-28 | 2010-04-28 | Sap股份公司 | 可视化网格网络的方法 |
US7437730B2 (en) * | 2003-11-14 | 2008-10-14 | International Business Machines Corporation | System and method for providing a scalable on demand hosting system |
US20050160424A1 (en) * | 2004-01-21 | 2005-07-21 | International Business Machines Corporation | Method and system for grid-enabled virtual machines with distributed management of applications |
US7577959B2 (en) * | 2004-06-24 | 2009-08-18 | International Business Machines Corporation | Providing on-demand capabilities using virtual machines and clustering processes |
US7620953B1 (en) * | 2004-10-05 | 2009-11-17 | Azul Systems, Inc. | System and method for allocating resources of a core space among a plurality of core virtual machines |
US8732368B1 (en) * | 2005-02-17 | 2014-05-20 | Hewlett-Packard Development Company, L.P. | Control system for resource selection between or among conjoined-cores |
US7921425B2 (en) * | 2005-03-14 | 2011-04-05 | Cisco Technology, Inc. | Techniques for allocating computing resources to applications in an embedded system |
US7814492B1 (en) * | 2005-04-08 | 2010-10-12 | Apple Inc. | System for managing resources partitions having resource and partition definitions, and assigning a named job to an associated partition queue |
US8392564B1 (en) * | 2005-06-20 | 2013-03-05 | Oracle America, Inc. | Cluster-wide resource usage monitoring |
US20070204266A1 (en) * | 2006-02-28 | 2007-08-30 | International Business Machines Corporation | Systems and methods for dynamically managing virtual machines |
CN101512488B (zh) * | 2006-08-07 | 2013-11-27 | 甲骨文国际公司 | 在虚拟机环境中提供硬件虚拟化的系统和方法 |
US9092250B1 (en) | 2006-10-27 | 2015-07-28 | Hewlett-Packard Development Company, L.P. | Selecting one of plural layouts of virtual machines on physical machines |
US8185893B2 (en) * | 2006-10-27 | 2012-05-22 | Hewlett-Packard Development Company, L.P. | Starting up at least one virtual machine in a physical machine by a load balancer |
US8732699B1 (en) | 2006-10-27 | 2014-05-20 | Hewlett-Packard Development Company, L.P. | Migrating virtual machines between physical machines in a define group |
US8296760B2 (en) * | 2006-10-27 | 2012-10-23 | Hewlett-Packard Development Company, L.P. | Migrating a virtual machine from a first physical machine in response to receiving a command to lower a power mode of the first physical machine |
US7945638B2 (en) * | 2007-05-17 | 2011-05-17 | Oracle International Corporation | Ubiquitous content subscription and delivery via a smart electronic paper device |
US8234644B2 (en) * | 2007-07-12 | 2012-07-31 | International Business Machines Corporation | Selecting a system management product for performance of system management tasks |
US8959516B2 (en) | 2007-07-30 | 2015-02-17 | International Business Machines Corporation | Methods and systems for coordinated financial transactions in distributed and parallel environments |
US20090125706A1 (en) * | 2007-11-08 | 2009-05-14 | Hoover Russell D | Software Pipelining on a Network on Chip |
US8341626B1 (en) | 2007-11-30 | 2012-12-25 | Hewlett-Packard Development Company, L. P. | Migration of a virtual machine in response to regional environment effects |
US8904003B2 (en) * | 2008-06-30 | 2014-12-02 | Oracle America, Inc. | Method and system for delegated job control across a network |
US20100332593A1 (en) * | 2009-06-29 | 2010-12-30 | Igor Barash | Systems and methods for operating an anti-malware network on a cloud computing platform |
CN102073512B (zh) | 2009-11-23 | 2014-07-16 | 阿里巴巴集团控股有限公司 | 一种java集群应用系统代码装载及升级装置和方法 |
US8984109B2 (en) | 2010-11-02 | 2015-03-17 | International Business Machines Corporation | Ensemble having one or more computing systems and a controller thereof |
US9081613B2 (en) | 2010-11-02 | 2015-07-14 | International Business Machines Corporation | Unified resource manager providing a single point of control |
US9253016B2 (en) | 2010-11-02 | 2016-02-02 | International Business Machines Corporation | Management of a data network of a computing environment |
US8959220B2 (en) | 2010-11-02 | 2015-02-17 | International Business Machines Corporation | Managing a workload of a plurality of virtual servers of a computing environment |
US8966020B2 (en) | 2010-11-02 | 2015-02-24 | International Business Machines Corporation | Integration of heterogeneous computing systems into a hybrid computing system |
US10013281B2 (en) * | 2011-06-29 | 2018-07-03 | Microsoft Technology Licensing, Llc | Controlling network utilization |
WO2013019185A1 (en) | 2011-07-29 | 2013-02-07 | Hewlett-Packard Development Company, L.P. | Migrating virtual machines |
KR101630749B1 (ko) | 2011-11-18 | 2016-06-15 | 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 | 데이터센터 리소스 할당 |
US8863141B2 (en) | 2011-12-14 | 2014-10-14 | International Business Machines Corporation | Estimating migration costs for migrating logical partitions within a virtualized computing environment based on a migration cost history |
US8694995B2 (en) | 2011-12-14 | 2014-04-08 | International Business Machines Corporation | Application initiated negotiations for resources meeting a performance parameter in a virtualized computing environment |
US9058428B1 (en) | 2012-04-12 | 2015-06-16 | Amazon Technologies, Inc. | Software testing using shadow requests |
US9268663B1 (en) * | 2012-04-12 | 2016-02-23 | Amazon Technologies, Inc. | Software testing analysis and control |
US10025626B2 (en) | 2012-09-28 | 2018-07-17 | Cycle Computing, Llc | Routing job submissions between disparate compute environments |
WO2016018445A1 (en) * | 2014-07-30 | 2016-02-04 | Hewlett-Packard Development Company, L.P. | Identifying multiple resources to perform a service request |
US10200261B2 (en) | 2015-04-30 | 2019-02-05 | Microsoft Technology Licensing, Llc | Multiple-computing-node system job node selection |
US9823949B2 (en) | 2015-06-29 | 2017-11-21 | Genesys Telecommunications Laboratories, Inc. | System and method for intelligent task management and routing |
US9674361B2 (en) | 2015-06-29 | 2017-06-06 | Genesys Telecommunications Laboratories, Inc. | System and method for intelligent task management in a workbin |
US10389746B2 (en) | 2015-09-28 | 2019-08-20 | Microsoft Technology Licensing, Llc | Multi-tenant environment using pre-readied trust boundary components |
US11240305B2 (en) * | 2016-07-28 | 2022-02-01 | At&T Intellectual Property I, L.P. | Task allocation among devices in a distributed data storage system |
US10841089B2 (en) * | 2017-08-25 | 2020-11-17 | Nutanix, Inc. | Key managers for distributed computing systems |
US11625192B2 (en) * | 2020-06-22 | 2023-04-11 | Western Digital Technologies, Inc. | Peer storage compute sharing using memory buffer |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE1398651U (zh) | ||||
BE795144A (fr) * | 1972-02-08 | 1973-08-08 | Siemens Ag | Procede pour l'exploitation d'un systeme de traitement de donnees, utilisable notamment en telephonie |
US4318173A (en) | 1980-02-05 | 1982-03-02 | The Bendix Corporation | Scheduler for a multiple computer system |
US4980824A (en) * | 1986-10-29 | 1990-12-25 | United Technologies Corporation | Event driven executive |
CA2087735A1 (en) * | 1990-07-20 | 1992-01-21 | Yuan Shi | System for high-level virtual computer with heterogeneous operating systems |
GB2263988B (en) * | 1992-02-04 | 1996-05-22 | Digital Equipment Corp | Work flow management system and method |
AU3944793A (en) * | 1992-03-31 | 1993-11-08 | Aggregate Computing, Inc. | An integrated remote execution system for a heterogenous computer network environment |
US5504894A (en) | 1992-04-30 | 1996-04-02 | International Business Machines Corporation | Workload manager for achieving transaction class response time goals in a multiprocessing system |
US5892945A (en) * | 1996-03-21 | 1999-04-06 | Oracle Corporation | Method and apparatus for distributing work granules among processes based on the location of data accessed in the work granules |
US6006255A (en) | 1996-04-05 | 1999-12-21 | International Business Machines Corporation | Networked computer system and method of communicating using multiple request packet classes to prevent deadlock |
US6360256B1 (en) * | 1996-07-01 | 2002-03-19 | Sun Microsystems, Inc. | Name service for a redundant array of internet servers |
US5835698A (en) * | 1996-09-20 | 1998-11-10 | Novell, Inc. | Unilaterally-controlled, time-insensitive, data-link recovery apparatus and method |
TWI259690B (en) | 1996-10-08 | 2006-08-01 | Citizen Watch Co Ltd | A goods design creating system and method of creating the same |
US5949977A (en) | 1996-10-08 | 1999-09-07 | Aubeta Technology, Llc | Method and apparatus for requesting and processing services from a plurality of nodes connected via common communication links |
US6166729A (en) * | 1997-05-07 | 2000-12-26 | Broadcloud Communications, Inc. | Remote digital image viewing system and method |
US5991808A (en) * | 1997-06-02 | 1999-11-23 | Digital Equipment Corporation | Task processing optimization in a multiprocessor system |
US6230183B1 (en) | 1998-03-11 | 2001-05-08 | International Business Machines Corporation | Method and apparatus for controlling the number of servers in a multisystem cluster |
US6430538B1 (en) * | 1998-04-30 | 2002-08-06 | Enterworks | Workflow management system, method and medium with personal subflows |
US6279001B1 (en) * | 1998-05-29 | 2001-08-21 | Webspective Software, Inc. | Web service |
WO2000010084A2 (en) | 1998-08-17 | 2000-02-24 | Microsoft Corporation | Object load balancing |
US6434594B1 (en) * | 1999-03-09 | 2002-08-13 | Talk2 Technology, Inc. | Virtual processing network enabler |
US20010039549A1 (en) * | 1999-12-30 | 2001-11-08 | Eng Danny K. | Object-oriented interface to LDAP directory |
-
1999
- 1999-08-16 US US09/374,540 patent/US6732139B1/en not_active Expired - Fee Related
-
2000
- 2000-08-10 GB GB0019541A patent/GB2357863B/en not_active Expired - Fee Related
- 2000-08-15 CN CNB001226789A patent/CN1138207C/zh not_active Expired - Lifetime
-
2004
- 2004-02-06 US US10/773,726 patent/US7689996B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6732139B1 (en) | 2004-05-04 |
US7689996B2 (en) | 2010-03-30 |
GB2357863B (en) | 2004-03-10 |
GB0019541D0 (en) | 2000-09-27 |
US20040163085A1 (en) | 2004-08-19 |
CN1286426A (zh) | 2001-03-07 |
GB2357863A (en) | 2001-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1138207C (zh) | 使用远程java对象分配程序的方法和装置 | |
CN1280725C (zh) | 分区处理环境中的资源平衡的计算系统和方法 | |
EP1412857B1 (en) | Managing server resources for hosted applications | |
US7065764B1 (en) | Dynamically allocated cluster system | |
CN101436966B (zh) | 虚拟机环境下的网络监控与分析系统 | |
CN1645330A (zh) | 用于应用程序分布式管理的启用网格的虚拟机的方法和系统 | |
US7281247B2 (en) | Software image creation in a distributed build environment | |
US20150052254A1 (en) | Virtual Machine Live Migration Method, Virtual Machine Deployment Method, Server, and Cluster System | |
CN1960287A (zh) | 用于在网络上调度作业的方法和设备 | |
CN1906580A (zh) | 对于具有可移动对象的启用网格的虚拟机的方法和系统 | |
CN1836214A (zh) | 需要时节点和服务器实例分配和解除分配 | |
CN1706165A (zh) | 用于网络场通信控制的方法和装置 | |
CN1934536A (zh) | 计算机系统及其构成服务器、作业执行控制方法和程序 | |
CN1658145A (zh) | 可升级打印假脱机系统 | |
CN112882828B (zh) | 基于slurm作业调度系统的昇腾处理器管理和调度方法 | |
WO2022105337A1 (zh) | 一种任务调度方法与系统 | |
CN110084507B (zh) | 云计算环境下分级感知的科学工作流调度优化方法 | |
JP2010218151A (ja) | 仮想計算機管理機構及び仮想計算機システムにおけるcpu時間割り当て制御方法 | |
CN101030884A (zh) | 电信网络资源oss系统中独占性资源的调度方法 | |
CN1298506A (zh) | 便于访问查询服务的方法和系统 | |
CN115629854A (zh) | 分布式任务调度方法、系统、电子设备和存储介质 | |
CN1671135A (zh) | 一种面向网格的机群作业管理系统及其实现方法 | |
CN112764928A (zh) | 一种编译资源动态管理的方法、装置及介质 | |
CN112291320A (zh) | 量子计算机集群分布式两层调度方法及系统 | |
CN1684428A (zh) | 一种综合网管系统及管理网元管理系统的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20040211 |