CN108139926A - Background job processing framework - Google Patents
Background job processing framework Download PDFInfo
- Publication number
- CN108139926A CN108139926A CN201680056872.7A CN201680056872A CN108139926A CN 108139926 A CN108139926 A CN 108139926A CN 201680056872 A CN201680056872 A CN 201680056872A CN 108139926 A CN108139926 A CN 108139926A
- Authority
- CN
- China
- Prior art keywords
- job
- scheduler
- jobs
- server system
- execution
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/5038—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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
Description
对相关申请的��叉引用Cross References to Related Applications
本申请要求2015年7月30日提交的印度专利申请号2344/DEL/2015的优先权权益,该印度专利申请的全部内容通过引用并入本文。This application claims the benefit of priority from Indian Patent Application No. 2344/DEL/2015 filed on July 30, 2015, the entire content of which is incorporated herein by reference.
背景技术Background technique
许多企业软件应用被设计为基于网络的应用(“网络应用”),使得它们可以从任何地方和/或使用可以运行网络浏览器的几乎任何处理设备来访问。网络应用包括使用协议(包括HTTP协议)彼此通信的客户端侧组件和服务器侧组件。网络应用的客户端侧组件典型地负责通过借由用户的访问设备上的用户接口向用户呈现(例如,显示)信息、接收用户输入等等来处置用户接口。服务器侧组件负责包括以下的任务:自己生成信息或者从数据源获取信息以便依照所接收的输入呈现给用户。Many enterprise software applications are designed as web-based applications ("web applications") so that they can be accessed from anywhere and/or using virtually any processing device that can run a web browser. A web application includes client-side and server-side components that communicate with each other using protocols, including the HTTP protocol. Client-side components of a web application are typically responsible for handling the user interface by presenting (eg, displaying) information to the user via the user interface on the user's access device, receiving user input, and the like. Server-side components are responsible for tasks that include generating information themselves or retrieving information from data sources for presentation to the user in accordance with received input.
企业网络应用典型地运行许多不同类型的后台作业,所述后台作业经受各种资源和时间约束。例如,可能要求被主要设计成为企业的投资顾问提供服务的投资者关系应用(“IR应用”)支持并发作业以用于处置来自多个用户的用户接口输入、从外部源接收当前投资信息、下载投资调研������、接收���������������品的估计信息、处理投资预警、电子邮件、存录等等。典型的作业混合在应用方面和/或在时间方面以许多方式变化,包括作业的持续时间、特定类型作业的数目、作业的发生频率等等。存在数个调度框架以用于调度作业以供执行。然而,随着具有不同类型作业和最终用户需要的应用的演化,仍然期望用于处置各种作业混合的改进的调度框架。Enterprise web applications typically run many different types of background jobs that are subject to various resource and time constraints. For example, an investor relations application ("IR application") designed primarily to serve an investment advisor to a business may be required to support concurrent jobs for handling user interface input from multiple users, receiving current investment information from external sources, downloading Investment research reports, receiving estimated information about financial products, processing investment alerts, e-mails, records, etc. Typical job mixes vary in application and/or in time in many ways, including duration of jobs, number of jobs of a particular type, frequency of occurrence of jobs, and so on. Several scheduling frameworks exist for scheduling jobs for execution. However, as applications evolve with different types of jobs and end-user needs, an improved scheduling framework for handling various job mixes is still desired.
版权声明Copyright Notice
该专利文档的部分公开内容包含受到版权保护的素材。版权所有者并不反对任何人对专利文档或专利公开内容的拓制,因为它出现在专利与商标局的专利文件或记录中,但是以其它方式保留无论什么的所有版权。Portions of the disclosure of this patent document contain material that is subject to copyright protection. The copyright owner has no objection to anyone's facsimile reproduction of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright whatsoever.
发明内容Contents of the invention
根据一些示例实施例,提供了一种服务器系统,包括至少一个存储器以及具有至少一个处理器的处理系统。处理系统配置具有多个作业条目的作业数据库,并且并发地、彼此独立地执行多个作业调度器。每个作业调度器被配置成调度作业数据库中的具有与所述多个作业调度器中的其它作业调度器被配置成调度的作业的类型不同的类型的作业以供执行。处理系统还使得实行被所述多个调度器中的任何调度器调度以供执行的作业。According to some example embodiments, there is provided a server system comprising at least one memory and a processing system having at least one processor. The processing system configures a job database with a plurality of job entries, and executes a plurality of job schedulers concurrently and independently of each other. Each job scheduler is configured to schedule, for execution, jobs in the job database of a different type than the types of jobs that other job schedulers of the plurality of job schedulers are configured to schedule. The processing system also causes execution of jobs scheduled for execution by any of the plurality of schedulers.
所述多个调度器可以包括操作以调度根据请求式(on-demand)基础的第一类型的作业的请求式调度器、操作以调度以比预定持续时间小的间隔重复发生的第二类型的作业的短间隔调度器、以及操作以调度在预定特定时间处或以比预定持续时间大的间隔的第三类型的作业的已调度作业调度器。请求式调度器和短间隔调度器基于相应计时器而周期性地执行,并且分别使得执行第一类型和第二类型的作业,而没有附加的调度步骤。第三类型的作业依照调度算法来执行。The plurality of schedulers may include an on-demand scheduler operative to schedule jobs of a first type on an on-demand basis, an on-demand scheduler operative to schedule jobs of a second type that recur at intervals less than a predetermined duration. A short interval scheduler for jobs, and a scheduled job scheduler operative to schedule jobs of a third type at predetermined specific times or at intervals greater than a predetermined duration. The on-demand scheduler and the short interval scheduler execute periodically based on respective timers and cause jobs of the first type and the second type, respectively, to be executed without additional scheduling steps. Jobs of the third type are executed according to a scheduling algorithm.
可以根据要以其来执行作业的紧迫度和/或频率来将作业确定成对应于所述不同类型的作业中的一个。A job may be determined to correspond to one of the different types of jobs according to the urgency and/or frequency with which the job is to be performed.
请求式作业调度器可以至少包括高优先级调度器和低优先级调度器,其中高优先级调度器被配置有比低优先级调度器更大的作业处理能力。请求式作业调度器可以被配置成将第一数目的线程分配给高优先级作业调度器并且将第二数目的线程(比第一数目的线程少)分配给低优先级作业调度器。The on-demand job scheduler may at least include a high-priority scheduler and a low-priority scheduler, wherein the high-priority scheduler is configured with greater job processing capability than the low-priority scheduler. The on-demand job scheduler may be configured to allocate a first number of threads to the high priority job scheduler and a second number of threads (fewer than the first number of threads) to the low priority job scheduler.
高优先级作业调度器和低优先级作业调度器可以各自分别被配置成访问作业数据库中的作业条目,将对应于所检索的作业条目的作业添加到存储器中的队列,并且使得从存储器中的队列供给作业。The high-priority job scheduler and the low-priority job scheduler may each be respectively configured to access a job entry in the job database, add a job corresponding to the retrieved job entry to a queue in memory, and cause Queue supply jobs.
高优先级作业调度器可以被配置成在检索和添加之前确定其当前处理容量是否,并且仅在确定处理容量处于指定阈值以上的情况下才执行检索和添加。当前处理容量可以基于与高优先级作业调度器相关联的存储器中的队列的当前占用来确定。The high priority job scheduler may be configured to determine its current processing capacity prior to retrieving and adding, and only perform the retrieving and adding if the processing capacity is determined to be above a specified threshold. The current processing capacity may be determined based on the current occupancy of a queue in memory associated with the high priority job scheduler.
可以以第一持续时间的间隔来调用短间隔作业调度器,其中第一持续时间基于多个作业配置的已配置执行间隔来确定。执行间隔可以在包括所述多个作业配置的XML文件中指定。The short-interval job scheduler may be invoked at intervals of a first duration, where the first duration is determined based on configured execution intervals of the plurality of job configurations. The execution interval may be specified in an XML file including the plurality of job configurations.
已调度任务调度器被配置成使得在根据调度算法所确定的时间处执行作业。The scheduled task scheduler is configured such that jobs are executed at times determined according to a scheduling algorithm.
每个作业可以包括实现执行方法的对象,其中所述多个调度器中的对应调度器调用执行方法以便运行作业。Each job may include an object implementing an execute method that is invoked by a corresponding scheduler of the plurality of schedulers in order to run the job.
所述多个调度器可以由相同的Windows®服务来繁衍。所述调度器中的每一个可以被配置成传输心跳,其中Windows服务基于心跳来确定所述调度器中的每一个的健康。The multiple schedulers can be spawned by the same Windows® service. Each of the schedulers may be configured to transmit a heartbeat, wherein the Windows service determines the health of each of the schedulers based on the heartbeat.
所述调度器中的每一个被实现为具有相应地配置的线程池的代理。Each of the schedulers is implemented as a proxy with a correspondingly configured thread pool.
另一示例实施例提供了一种方法,所述方法包括在存储器中配置具有多个作业条目的作业数据库,所述存储器可通信地耦合到具有至少一个处理器的处理系统。所述方法���包括在处理系统上并发地、彼此独立地执行多个作业调度器,每个作业调度器被配置成调度作业数据库中的具有与所述多个作业调度器中的其它作业调度器被配置成调度的作业的类型不同的类型的作业以供执行。仍然进一步地,所述方法包括使得实行被所述多个调度器中的任何调度器调度以供执行的作业。Another example embodiment provides a method that includes configuring a job database having a plurality of job entries in a memory communicatively coupled to a processing system having at least one processor. The method also includes executing a plurality of job schedulers concurrently and independently of each other on the processing system, each job scheduler configured to schedule jobs in the job database with A different type of job is configured to be scheduled for execution than the type of job. Still further, the method includes causing execution of jobs scheduled for execution by any of the plurality of schedulers.
另一示例实施例提供了一种具有存储在其上的指令的非暂时性计算机可读存储介质,所述指令在由具有至少一个处理器的处理系统执行时使处理系统实行操作。所述操作包括在可通信地耦合到处理系统的存储器中配置具有多个作业条目的作业数据库。所述操作还包括并发地、彼此独立地执行多个作业调度器,每个作业调度器被配置成调度作业数据库中的具有与所述多个作业调度器中的其它作业调度器被配置成调度的作业的类型不同的类型的作业以供执行。仍然进一步地,所述操作包括使得实行被所述多个调度器中的任何调度器调度以供执行的作业。Another example embodiment provides a non-transitory computer-readable storage medium having stored thereon instructions that, when executed by a processing system having at least one processor, cause the processing system to perform operations. The operations include configuring a job database having a plurality of job entries in memory communicatively coupled to the processing system. The operations also include concurrently and independently of each other executing a plurality of job schedulers, each job scheduler configured to schedule a job in the job database having a The types of jobs are different types of jobs to execute. Still further, the operations include causing execution of jobs scheduled for execution by any of the plurality of schedulers.
提供该发明内容来以简化形式引入以下在具体实施方式中进一步描述的概念的选集。该发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围;相反,该发明内容旨在提供对在该文档中描述的主题的概述。因而,将领会到,以上描述的特征仅仅是示例,并且本文描述的主题的其它特征、方面和优点将从以下具体实施方式、附图和权利要求书而变得显而易见。This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter; rather, this Summary is intended to provide an overview of the subject matter described in this document. In summary. Accordingly, it will be appreciated that the features described above are examples only, and that other features, aspects and advantages of the subject matter described herein will become apparent from the following detailed description, drawings and claims.
附图说明Description of drawings
图1例示了依照一些实施例的其中可以运行企业网络应用(诸如示例IR应用)的示例计算环境;FIG. 1 illustrates an example computing environment in which an enterprise network application, such as an example IR application, may run in accordance with some embodiments;
图2示意性地例示了根据一些实施例的图1中所示的调度框架的一些方面;Figure 2 schematically illustrates some aspects of the scheduling framework shown in Figure 1, according to some embodiments;
图3例示了在一些示例实施例中可以用于图2中所示的调度框架的示例类模型;Figure 3 illustrates an example class model that may be used in the scheduling framework shown in Figure 2 in some example embodiments;
图4例示了根据一些实施例的用于实现系统中的每个后台作业的抽象类和接口类;Figure 4 illustrates abstract classes and interface classes used to implement each background job in the system, according to some embodiments;
图5例示了根据一些实施例的用于针对请求式作业的调度器的类框架;Figure 5 illustrates a class framework for a scheduler for on-demand jobs, according to some embodiments;
图6是根据一些实施例的用于请求式调度器代理的执行环境的示意性例示;Figure 6 is a schematic illustration of an execution environment for an on-demand scheduler agent, according to some embodiments;
图7例示了根据一些实施例的用于请求式调度器的过程;Figure 7 illustrates a process for an on-demand scheduler, according to some embodiments;
图8例示了根据一些实施例的供短间隔作业调度器使用的示例XML配置文件;Figure 8 illustrates an example XML configuration file for use by a short interval job scheduler, according to some embodiments;
图9例示了根据一些实施例的由短间隔调度器执行以配置其计时器点火间隔的过程的流程图;Figure 9 illustrates a flow diagram of a process performed by the short interval scheduler to configure its timer firing interval, according to some embodiments;
图10例示了根据一些实施例的用于针对短间隔调度器的过程的流程图;Figure 10 illustrates a flow diagram for a process for a short interval scheduler, according to some embodiments;
图11例示了根据一些实施例的用于已调度代理的示例XML配置文件的一部分;Figure 11 illustrates a portion of an example XML configuration file for a scheduled agent, according to some embodiments;
图12例示了根据一些实施例的可以由已调度代理用于使用和/或适配于第三方调度器的示例调度器类;Figure 12 illustrates an example scheduler class that may be used by a scheduled agent for use and/or adapted to a third-party scheduler, according to some embodiments;
图13示出了根据一些实施例的作业类型到机器的映射的示例表格;以及Figure 13 shows an example table of job type to machine mappings according to some embodiments; and
图14示出了根据一些实施例的用于图1中所示的系统的硬件架构的示例框图。Figure 14 shows an example block diagram of a hardware architecture for the system shown in Figure 1, according to some embodiments.
具体实施方式Detailed ways
本文描述的实施例涉及调度企业网络应用中的多个类型的作业。在一些示例实施例中,开启多个调度器,每个调度器被编程为调度与其它调度器不同的作业类型。通过每个并发调度器与其它调度器独立地操作以改进(例如,最优地执行)具有某些常见时序要求和/或其它常见特性的后台作业的调度,可以更加高效地调度整个作业混合以供执行(例如,以由处理器运行),同时满足每一类型的作业的时间约束。这可以实现优于常规调度技术的显著效率增益,在常规调度技术下,在应用中,许多类型的作业是由单个类型的调度器处置的。Embodiments described herein relate to scheduling multiple types of jobs in enterprise network applications. In some example embodiments, multiple schedulers are started, each scheduler programmed to schedule a different job type than the other schedulers. By having each concurrent scheduler operate independently of the others to improve (eg, optimally perform) the scheduling of background jobs with certain common timing requirements and/or other common characteristics, the entire job mix can be more efficiently scheduled to available for execution (for example, to be run by a processor) while satisfying the timing constraints of each type of job. This can achieve significant efficiency gains over conventional scheduling techniques where, in applications, many types of jobs are handled by a single type of scheduler.
本文描述的实施例可以用于改进企业网络应用的总体性能,所述企业网络应用诸如但不限于,以上提及的示例IR应用。如上文所提及,IR应用可以具有在任何特定时间处并发执行的许多类型的作业。例如,在运行网络应用的服务器系统上,众多后台作业可以开启以便处置与许多客户端侧用户接口的通信。其它作业可以包括获取、处理和递送来自外部服务的金融信息、数据库查询、调研���告、估计、新闻、预警等;电子邮件发送和接收;文件发送和下载;存录;以及系统维护等。Embodiments described herein may be used to improve the overall performance of enterprise network applications such as, but not limited to, the example IR applications mentioned above. As mentioned above, an IR application can have many types of jobs executing concurrently at any given time. For example, on a server system running a web application, numerous background jobs may be started to handle communications with many client-side user interfaces. Other operations may include acquiring, processing, and delivering financial information from external services, database queries, research reports, estimates, news, alerts, etc.; email sending and receiving; file sending and downloading; archiving; and system maintenance, etc.
图1例示了依照一些实施例的其中可以运行企业网络应用(诸如,示例IR应用)的示例计算环境100。在计算环境100中,客户端系统102和服务器系统104通过网络108彼此通信以便使得能够使用网络应用,诸如例如IR应用。应当领会到,网络108可以包括互连计算设备的网络,诸如互联网。网络108还可以包括局域网(LAN)和/或包括客户端系统102与服务器系统104之间的点对点连接。FIG. 1 illustrates an example computing environment 100 in which enterprise network applications, such as the example IR application, may run in accordance with some embodiments. In computing environment 100, client system 102 and server system 104 communicate with each other over network 108 to enable use of network applications, such as, for example, IR applications. It should be appreciated that network 108 may include a network of interconnected computing devices, such as the Internet. Network 108 may also include a local area network (LAN) and/or include a point-to-point connection between client system 102 and server system 104 .
网络应用包括在客户端系统102上执行的客户端侧网络应用组件(“客户端侧应用”)110以及在���务器系统104上���行���服务器侧网络应用组件(“服务器侧应用”)112。客户端侧应用110可以在用户接口应用114内执行,用户接口应用114诸如例如浏览器114。作为用户接口和/或着陆页面(例如,在用户访问IR应用时出现的第一页面)操作的仪表板128可以是客户端侧网络应用110的一部分。仪表板128可以例如在相应窗口小部件中提供针对网络应用的各种方面的总结信息。服务器侧应用112可以由服务器系统104的网络服务器116和/或应用服务器118执行。网络服务器116执行诸如以下的功能性:实现HTTP协议以及经由HTTP与客户端系统110中的网络浏览器114(在下文进一步详细地描述)通信。涉及网络应用的数据项目——诸如例如配置和/或执行数据、用户访问等——可以存储在服务器系统104的数据库120中。应用服务器118可以例如执行服务器侧(或“后端”)应用服务。在执行网络应用时,网络服务器116和/或应用服务器118可以通过网络108访问一个或多个外部数据源122以便获得信息。在一些实施例中,网络服务器116和应用服务器118可以作为一个进程(或者进程的相同群组)来操作。The web application includes a client-side web application component (“client-side application”) 110 executing on client system 102 and a server-side web application component (“server-side application”) 112 executing on server system 104 . The client-side application 110 may execute within a user interface application 114 such as, for example, a browser 114 . Dashboard 128 may be part of client-side web application 110 , operating as a user interface and/or landing page (eg, the first page that appears when a user accesses the IR application). Dashboard 128 may provide summarized information for various aspects of the web application, eg, in corresponding widgets. Server-side applications 112 may be executed by web server 116 and/or application server 118 of server system 104 . Web server 116 performs functionality such as implementing the HTTP protocol and communicating via HTTP with web browser 114 in client system 110 (described in further detail below). Data items related to web applications—such as, for example, configuration and/or execution data, user access, etc.—may be stored in database 120 of server system 104 . Application server 118 may, for example, execute server-side (or "back-end") application services. While executing a web application, web server 116 and/or application server 118 may access one or more external data sources 122 over network 108 for information. In some embodiments, web server 116 and application server 118 may operate as one process (or the same group of processes).
客户端系统102可以包括用于执行处理的软件组件,所述处理涉及根据多个单页面应用(SPA)或其它架构定义的应用。作为非限制性示例,客户端系统102可以具有���络浏览器应用114,至少包括渲染模块、联网模块和JavaScript®模块(没有分别示出)。渲染模块可以实现用于网页的图形显示和渲染的功能性。它可以例如生成图形数据,所述图形数据对应于定义由网络浏览器114处理的网页的HTML和/或DOM。潜在地在通过客户端系统102的操作系统的进一步修改/变换之后,该图形数据可以显示在客户端系统102的显示器上。替换地或附加地,每当在该文档中描述为客户端系统102渲染/显示网页时,渲染/显示模块可以执行涉及网页的渲染/显示的功能性。联网模块可以实现HTTP协议,并且用于处置服务器系统104中的网络服务器116与客户端系统102之间的各种HTTP消息。替换地或附加地,每当在该文档中描述为客户端系统102使用HTTP进行通信时,联网模块可以处置这样的通信的HTTP方面。JavaScript模块可以用于执行JavaScript脚本、操控JavaScript对象、修改在网络浏览器应用114处加载的网页的DOM、以及实行涉及JavaScript的其它功能性。JavaScript模块可以例如是JavaScript引擎、JavaScript虚拟机、JavaScript运行时、或者能够执行JavaScript指令的任何其它类型的软件模块。替换地或附加地,每当在该文档中描述为客户端系统102执行涉及JavaScript的功能性时,这样的功能性可以由JavaScript模块来处置。Client system 102 may include software components for performing processes involving applications defined according to a number of single page applications (SPAs) or other architectures. As a non-limiting example, the client system 102 may have a web browser application 114 including at least a rendering module, a networking module, and a JavaScript® module (not separately shown). The rendering module may implement functionality for graphic display and rendering of web pages. It may, for example, generate graphics data corresponding to the HTML and/or DOM defining the web page processed by the web browser 114 . This graphical data may be displayed on a display of the client system 102 , potentially after further modification/transformation by the operating system of the client system 102 . Alternatively or additionally, whenever a web page is rendered/displayed for client system 102 as described in this document, the rendering/display module may perform functionality related to the rendering/display of the web page. The networking module may implement the HTTP protocol and be used to handle various HTTP messages between the web server 116 in the server system 104 and the client system 102 . Alternatively or additionally, whenever it is described in this document that client systems 102 communicate using HTTP, the networking module may handle the HTTP aspects of such communications. The JavaScript module can be used to execute JavaScript scripts, manipulate JavaScript objects, modify the DOM of a web page loaded at the web browser application 114, and perform other functionality involving JavaScript. A JavaScript module may be, for example, a JavaScript engine, a JavaScript virtual machine, a JavaScript runtime, or any other type of software module capable of executing JavaScript instructions. Alternatively or additionally, whenever it is described in this document that client system 102 performs functionality involving JavaScript, such functionality may be handled by a JavaScript module.
调度框架124可以用于调度处置网络应用的各方面的各种作业,以及处置涉及服务器系统104的系统任务的其它作业。例如,网络应用的各种部分可以向作业队列和/或作业数据库126中写入条目,调度框架124根据实施例将从所述作��队列和/或作业数据库126中供给那些作业。The scheduling framework 124 may be used to schedule various jobs that handle aspects of network applications, as well as other jobs that handle system tasks involving the server system 104 . For example, various parts of the web application may write entries to a job queue and/or job database 126 from which scheduling framework 124 will serve those jobs, according to an embodiment.
尽管在图1中示出一个客户端系统102,但是将理解到,服务器系统104可以与任何数目的客户端系统(诸如,客户端系统102)通信,以便向那些客户端系统的用户提供涉及网络应用的服务。而且,尽管示出为一个系统104,但是本领域技术人员将理解到,服务器系统可以包括可通信地互连的任何数目的单处理器和/或多处理器计算机。在一些实施例中,服务器系统104可以在服务器农场和/或云服务环境中运行。服务器系统104的组件,诸如网络服务器116、应用服务器118、数据库120、服务器侧网络应用112、调度框架124和作业队列/作业数据库126可以相应地分布在多个处理器和/或计算机之上。Although one client system 102 is shown in FIG. 1, it will be appreciated that server system 104 may communicate with any number of client systems, such as client system 102, to provide users of those client systems with Applied services. Also, while shown as one system 104, those skilled in the art will appreciate that the server system may include any number of single-processor and/or multi-processor computers communicatively interconnected. In some embodiments, server system 104 may operate in a server farm and/or cloud service environment. Components of server system 104, such as web server 116, application server 118, database 120, server-side web application 112, scheduling framework 124, and job queue/job database 126 may accordingly be distributed across multiple processors and/or computers.
图2示意性地例示了根据一些实施例的图1中所示的调度框架124的一些方面。调度框架200包括彼此并发地运行的至少三个调度代理204、206和208。调度代理204、206和208中的每一个被配置成处置与其它调度代理所处置的作业的类型不同的特定类型或类型群组的作业。在一些实施例中,调度代理204、206和208被配置成处置第一、第二和第三作业类型群组(一个或多个作业类型中的每一个)使得在调度代理之间不存在作业类型方面的重叠。处置作业包括基于在作业队列/作业数据库(例如,图1中的126)中针对要执行的特定作业所找到的条目而使得由处理器执行该特定作业。例如,调度器204-208中的一个可以通过从作业队列126检索用于文件下载作业的条目并且使得在处理器上执行对应文件下载作业来处置作业队列126中的作业。调度器204-208可以通过自己开始或者使得帮助者进程开始在所选处理器上执行作业来使得执行所述作业。Figure 2 schematically illustrates some aspects of the scheduling framework 124 shown in Figure 1, according to some embodiments. The scheduling framework 200 includes at least three scheduling agents 204, 206, and 208 that run concurrently with each other. Each of scheduling agents 204, 206, and 208 is configured to handle a particular type or group of types of jobs that are different from the types of jobs handled by the other scheduling agents. In some embodiments, the scheduling agents 204, 206, and 208 are configured to handle the first, second, and third job type groups (each of one or more job types) such that no jobs exist between the scheduling agents. Overlap in terms of types. Handling the job includes causing the particular job to be executed by the processor based on the entry found in the job queue/job database (eg, 126 in FIG. 1 ) for the particular job. For example, one of the schedulers 204-208 may handle the job in the job queue 126 by retrieving an entry for the file download job from the job queue 126 and causing the corresponding file download job to execute on the processor. The schedulers 204-208 may cause the jobs to be executed by starting them themselves or causing a helper process to start executing the jobs on the selected processors.
调度代理204被配置成处置请求式作业,并且将在本文中称作请求式调度代理(或者请求式调度器)204。请求式调度器204被配置成处置请求式作业。也就是说,请求式调度器204被配置成处置应当在“尽可能快”(例如,“现在或者尽可能快地运行”)的基础上进行处理的作业。典型地,在诸如IR应用之类的环境中,用户接口交互要求在请求式的基础上进行处理。例如,可以驱动网络应用以便最小化由用户在与用户接口(例如,仪表板128)交互时所感知的响应时间,并且因而将要求频繁地并且立刻或近乎立刻地(例如,以最小延迟)处置用户接口输入。由用户经由用户接口发起的示例作业可以包括报告的生成、和/或调研报告下载、响应于用户请求的pdf装订的作业等等。The scheduling agent 204 is configured to handle on-demand jobs and will be referred to herein as an on-demand scheduling agent (or on-demand scheduler) 204 . The on-demand scheduler 204 is configured to handle on-demand jobs. That is, the on-demand scheduler 204 is configured to handle jobs that should be processed on a "as soon as possible" (eg, "run now or as soon as possible") basis. Typically, in environments such as IR applications, user interface interactions require processing on an on-demand basis. For example, a web application may be driven so as to minimize the response time perceived by the user when interacting with the user interface (e.g., dashboard 128), and thus will require frequent and immediate or near-immediate (e.g., with minimal delay) processing User interface input. Example jobs initiated by a user via the user interface may include generation of reports, and/or downloads of research reports, pdf binding jobs in response to user requests, and the like.
调度代理206在本文中称作短间隔调度代理(短间隔调度器),并且被配置成处置要求在相对短的间隔中重复运行的作业。例如,发送和接收电子邮件、向日志文件写入(例如,存录用户交互)、从所订阅的服务频繁地下载更新的信息、更新显示在仪表板128上的多个窗口小部件上的来自外部数据源的信息等。Scheduling agent 206 is referred to herein as a short interval scheduling agent (short interval scheduler), and is configured to handle jobs that require repeated execution in relatively short intervals. For example, sending and receiving emails, writing to log files (e.g., logging user interactions), frequently downloading updated information from subscribed services, updating information displayed on various widgets on the dashboard 128 from Information from external data sources, etc.
调度器代理208在本文中称作已调度代理。已调度代理被配置用于处置相对频繁地运行的作业。这些可以包括可以在未来一时间被调度的一次作业以及以相对大的重复间隔(例如,数小时)运行的重复作业。示例已调度任务可以包括系统清理作业、网络应用的每日备份、搜索(例如,包括在每小时或每天的间隔中构建索引,基于此可以执行无文本搜索)。Scheduler agent 208 is referred to herein as a scheduled agent. A scheduled agent is configured to handle jobs that run relatively frequently. These can include one-time jobs that can be scheduled some time in the future as well as recurring jobs that run at relatively large repetition intervals (eg, hours). Example scheduled tasks may include system cleanup jobs, daily backups of web applications, searches (eg including building indexes at hourly or daily intervals, based on which textless searches can be performed).
代理204-208是由单个进程在系统和/或网络应用启动期间繁衍的。在示例实施例中,在网络服务器104启动服务器侧网络应用(例如,处理示例IR应用的服务器侧应用)时开启的Windows ServicesTM作业——主机202——繁衍三个调度器204-208。主机202可以随后操作以在接收到用户命令和/或网络应用关断时停止调度器204-208。当多个作业服务器存在时,如企业系统中通常的情况那样,通过单个进程繁衍代理204-208使得部署和配置更容易,并且由此改进可维护性。具有单个进程还帮助基于需要而经由集中式配置(而不是有条件的部署)来在机器上启用或禁用特定类型的代理204-208,并且对基于要求进行调节给予了更多灵活性。Agents 204-208 are spawned by a single process during system and/or network application startup. In an example embodiment, a Windows Services ™ job—host 202—that starts when web server 104 starts a server-side web application (eg, a server-side application processing the example IR application) spawns three schedulers 204-208. Host 202 may then operate to stop schedulers 204-208 upon receipt of a user command and/or upon network application shutdown. When multiple job servers exist, as is often the case in enterprise systems, spawning agents 204-208 by a single process makes deployment and configuration easier, and thus improves maintainability. Having a single process also facilitates enabling or disabling specific types of agents 204-208 on machines based on need via centralized configuration (rather than conditional deployment), and gives more flexibility for tuning based on requirements.
调度器204-208中的每一个可以以可配置的间隔有规律地与数据库210通信或者向数据库210存录条目。系统(或主机102)可以使用这些通信和/或条目作为心跳机制来监控每一个调度器的状态。例如,如果任何特定的调度器没能在可配置的间隔内更新数据库210处的对应心跳216,以规律间隔监控数据库的主机102可以确定该特定调度器不再有效,并且可以启动对应调度器的实例。Each of the schedulers 204-208 may regularly communicate with or post entries to the database 210 at configurable intervals. The system (or host 102) can use these communications and/or entries as a heartbeat mechanism to monitor the status of each scheduler. For example, if any particular scheduler fails to update the corresponding heartbeat 216 at the database 210 within a configurable interval, the host computer 102 monitoring the database at regular intervals can determine that that particular scheduler is no longer valid, and can start the corresponding scheduler's instance.
数据库210还可以包括作业条目218。作业条目218表示要执行的作业。用于特定作业的条目可以作为数据库条目处于数据库210中和/或处于一个或多个作业队列中。例如,在网络应用(例如,网络服务器、应用服务器、电子邮件服务器、存录应用)中操作的每一个作业可以向数据库210中录入(或者向数据库10中的作业队列中队列化)条目,所述条目表示要求运行的作业。每个条目可以例如标识作业的类型(例如,作业类型标识符)以及用于执行作业所要求的参数(如果有的话)(例如,要下载的文件的位置和文件名,从队列发送/接收电子邮件不要求参数等)。Database 210 may also include job entries 218 . A job entry 218 represents a job to be executed. Entries for a particular job may be in database 210 as database entries and/or in one or more job queues. For example, each job operating in a web application (e.g., web server, application server, e-mail server, logging application) may make an entry into database 210 (or queue into a job queue in database 10), so The above entries represent jobs that are required to run. Each entry may e.g. identify the type of job (e.g. job type identifier) and the parameters required to execute the job (if any) (e.g. location and filename of file to download, send/receive from queue Email does not require parameters, etc).
调度器204-208中的至少一些由计时器212驱动。例如,请求式调度代理204和短间隔调度代理206二者都由经配置的计时器点火来触发。204和206中的每一个在其相应计时器点火时执行或者使得执行其被配置用于的作业。计时器点火可以被视为代理204和206查看是否可以处理更多作业的检查点。At least some of the schedulers 204 - 208 are driven by a timer 212 . For example, both on-demand dispatch agent 204 and short interval dispatch agent 206 are triggered by configured timer firings. Each of 204 and 206 executes or causes the operation for which it is configured to be executed when its respective timer fires. The timer firing can be viewed as a checkpoint for agents 204 and 206 to see if more jobs can be processed.
然而,调度器208是已调度���,因为它依照调度算法来确定用于其每一个作业的执行时间。在一些示例实施例中,已调度代理208依赖于现成的调度组件,诸如例如Quartz.Net®。适配器214可以用于与现成的调度组件对接,并且分离的数据库215可以用于已调度作业(例如,以用于保持针对已调度作业的作业条目)。However, the scheduler 208 is scheduled because it determines the execution time for each of its jobs according to a scheduling algorithm. In some example embodiments, the scheduled agent 208 relies on off-the-shelf scheduling components, such as, for example, Quartz.Net®. An adapter 214 may be used to interface with off-the-shelf scheduling components, and a separate database 215 may be used for scheduled jobs (eg, for maintaining job entries for scheduled jobs).
图3例示了在一些示例实施例中可以用于调度框架200的示例类模型。调度器204-208中的每一个都是从抽象代理类302导出的。抽象类302提供用于使心跳计时器312以及方法314和316分别开启心跳计时器并且检查心跳计时器是否已期满。提供代理类型318使得可以关于是请求式、短间隔还是已调度代理来标识代理204-208中的每一个。抽象类302还提供了运行方法320,所述运行方法320通过从抽象类导出的类中的每一个来实现以便运行对应的调度器。FIG. 3 illustrates an example class model that may be used for scheduling framework 200 in some example embodiments. Each of the schedulers 204-208 is derived from the abstract proxy class 302. Abstract class 302 provides for heartbeat timer 312 and methods 314 and 316 to start the heartbeat timer and check whether the heartbeat timer has expired, respectively. Agent type 318 is provided so that each of agents 204-208 can be identified as to whether it is an on-demand, short-interval, or scheduled agent. The abstract class 302 also provides a run method 320 implemented by each of the classes derived from the abstract class to run the corresponding scheduler.
请求式调度代理204可以依照从抽象类302导出的请求式代理类304来创建。请求式代理类304包括计时器322、高优先级作业管理器324和低优先级作业管理器326。高优先级作业管理器和低优先级作业管理器的分离帮助避免某些低优先级作业的优先购买权或互斥等待,即使是在有大量的高优先级作业要运行时。高优先级作业管理器和低优先级作业管理器的操作在下文进一步描述。On-demand dispatch proxy 204 may be created in accordance with on-demand proxy class 304 derived from abstract class 302 . The on-demand agent class 304 includes a timer 322 , a high priority job manager 324 and a low priority job manager 326 . The separation of high-priority and low-priority job managers helps avoid pre-emption or exclusive waiting for certain low-priority jobs, even when there are a large number of high-priority jobs to run. The operation of the high priority job manager and the low priority job manager is described further below.
短间隔调度代理206可以依照短间隔调度类306来创建。短间隔代理类306包括计时器332、要执行的作业的列表334和执行总结336。代理可以在执行总结336中维护所执行的作业的列表以及由每个作业完成的工作量。执行总结336使得能够由代理来缓冲作业的执行细节并且然后在后台批量写入数据库。因为短间隔作业典型地是非常频繁运行的作业,所以在数据库中实时更新其状态将增加显著量的网络业务量并且将使代理减慢。The short interval scheduling agent 206 may be created in accordance with the short interval scheduling class 306 . The short interval agent class 306 includes a timer 332 , a list 334 of jobs to execute, and an execution summary 336 . The agent may maintain a list of jobs executed and the amount of work done by each job in an execution summary 336 . Execution summary 336 enables execution details of jobs to be buffered by the agent and then written to the database in batches in the background. Since short-interval jobs are typically very frequently run jobs, updating their status in the database in real time would add a significant amount of network traffic and would slow down the agent.
短间隔代理类中的计时器可以是预配置的或者可以随时间动态地改变。在基于所配置的重复间隔来确定是时候运行特定作业类型(例如,电子邮件发送/接收作业)时,短间隔调度器可以对作业数据库和/或电子邮件队列进行轮询以便确定是否存在要发送或接收的任何待定电子邮件并且相应地繁衍一个或多个任务以处置要发送或接收的电子邮件。The timers in the short interval agent class can be pre-configured or can change dynamically over time. When determining it is time to run a particular job type (for example, an email send/receive job) based on the configured recurrence interval, the short interval scheduler can poll the job database and/or the email queue to determine if there are any jobs to send or receive any pending emails and spawn one or more tasks accordingly to handle emails to be sent or received.
已调度代理208可以依照已调度代理类308来创建。已调度代理类308包括用于使用第三方调度器(诸如Quartz.net)用于调度的调度器342。调度可以包括使用复杂算法来确定用于每一个作业的最优已调度时间。配置中的作业类型id 344帮助石英作业适配器(QuartzJobAdapter)实例化对应的作业类。可以在作业类型id与类之间维护映射以在配置中进行实例化。已调度代理还可以包括要移除未经授权的作业的方法346。例如,当初始化代理时,这样的移除可以是基于能够在从配置供应的机器上运行(例如,授权在机器上运行)的作业的列表。A scheduled agent 208 may be created in accordance with a scheduled agent class 308 . The scheduled proxy class 308 includes a scheduler 342 for scheduling using a third-party scheduler, such as Quartz.net. Scheduling can include using complex algorithms to determine the optimal scheduled time for each job. The job type id 344 in the configuration helps the QuartzJobAdapter to instantiate the corresponding job class. A mapping can be maintained between job type ids and classes to instantiate in configuration. The scheduled agent may also include a method 346 to remove unauthorized jobs. For example, when the agent is initialized, such removal may be based on a list of jobs capable of running (eg, authorized to run on the machine) on the machine provisioned from the configuration.
图4例示了接口类iJob 402以及实现iJob 402类的抽象类作业404。要在服务器系统104上运行的每个作业被要求实现接口iJob 402和/或从抽象类404承继。然后,调度器可以通过调用其所实现的运行(Run)方法来运行作业。FIG. 4 illustrates an interface class iJob 402 and an abstract class job 404 implementing the iJob 402 class. Every job to be run on server system 104 is required to implement interface iJob 402 and/or inherit from abstract class 404 . The scheduler can then run the job by calling the Run method it implements.
图5例示了用于请求式调度器代理204的类框架。请求式代理(onDemandAgent)类502可以用于创建请求式调度器代理204。如上文关于图3中的类304所指出的,请求式代理类502可以包括两个作业管理器——高优先级作业管理器504和低优先级作业管理器506。FIG. 5 illustrates a class framework for the on-demand scheduler agent 204 . An onDemandAgent class 502 may be used to create an onDemandAgent agent 204 . As noted above with respect to class 304 in FIG. 3 , on-demand broker class 502 may include two job managers—high priority job manager 504 and low priority job manager 506 .
高优先级作业管理器504和低优先级作业管理器506可以各自使用作业管理器类510来创建。高优先级作业管理器和低优先级作业管理器代表请求式调度器代理执行所有作业处理。通过在请求式作业的类内具有多个优先级水平,实施例使得能够为大多数时间关键的作业提供改进的响应时间。例如,某些用户接口请求,诸如在用户需求时的实时或者近乎实时的金融信息的显示,可以被优先化为优于其它请求式作业,比如若干文件的pdf装订以及大文件的下载。High priority job manager 504 and low priority job manager 506 may each be created using job manager class 510 . The high-priority job manager and low-priority job manager perform all job processing on behalf of the on-demand scheduler agent. By having multiple priority levels within a class of on-demand jobs, embodiments enable improved response times for most time-critical jobs. For example, certain user interface requests, such as the display of real-time or near-real-time financial information on user demand, may be prioritized over other on-demand jobs, such as pdf binding of several files and downloading of large files.
当然,除此之外,或者作为替换方案,请求式作业可以根据除了仅仅是作业类型之外的准则来优先化。例如,用于特定用户或者特定用户类的pdf装订作业可以被指定为低优先级请求式作业,而用于另一用户类的相同类型的作业可以被指定为高优先级。这提供了可以通过配置实现的大量调度灵活性。Of course, in addition, or as an alternative, on-demand jobs may be prioritized according to criteria other than just job type. For example, a pdf binding job for a particular user or class of users may be designated as a low priority on-demand job, while a job of the same type for another class of users may be designated as a high priority. This provides a lot of scheduling flexibility that can be achieved through configuration.
作业管理器类510字段作业优先级512可以用于表示管理器是高优先级作业管理器还是低优先级作业管理器。每个管理器还可以配置有它能够访问并且它从其中检索作业以供执行的作业队列514。针对每一个类型的管理器指定最大并发水平516。并发水平表示管理器被授权以(或者被配置成)开启的并发线程的数目。事实上,可以通过为高优先级作业代理提供比低优先级作业代理更高的并发水平来控制优先级。作业管理器510可以维护共享任务厂518,其被传递给每一个作业运行器512实例。作业运行器可以在内部使用来自共享任务厂的任务以便执行作业。这可以帮助作业管理器510监控所创建的任务的数目及其状态,并且由此控制并发性。任务调度器520可以是配置类,其中可以配置最大并行度,其然后被供应给任务厂518。Job manager class 510 field job priority 512 may be used to indicate whether the manager is a high priority job manager or a low priority job manager. Each manager may also be configured with a job queue 514 that it has access to and from which it retrieves jobs for execution. A maximum concurrency level 516 is specified for each type of manager. The concurrency level represents the number of concurrent threads the manager is authorized to (or configured to be) open. In fact, priority can be controlled by giving higher-priority job agents a higher level of concurrency than lower-priority job agents. Job manager 510 may maintain a shared task factory 518 that is passed to each job runner 512 instance. A job runner can internally use tasks from a shared task factory in order to execute jobs. This can help the job manager 510 monitor the number of created tasks and their status, and thereby control concurrency. Task scheduler 520 may be a configuration class where a maximum degree of parallelism may be configured, which is then supplied to task factory 518 .
作业管理器类510还被提供有用于装填队列的方法522和用于处理作业的方法524,管理器随后从所述队列获得作业以供执行。The job manager class 510 is also provided with a method 522 for filling a queue and a method 524 for processing a job from which the manager then obtains the job for execution.
作业管理器可以利用由作业运行器类512表示的分离作业运行器来运行每一个作业。每一个作业管理器可以具有并发地处理作业的数个作业运行器。由作业管理器开启的作业运行器的数目可以限于针对该作业管理器所配置的最大并发水平。作业运行器类512提供用于作业的同步执行的方法532,其中运行作业的特定作业运行器将等待直至该作业被完成,以及用于作业的异步执行的方法534,其中特定作业运行器将在目前作业被完成之前返回。对于长运行作业,诸如文件下载,异步执行可以是合期望的。每一个作业运行器中的用作业状态更新作业队列(updateJobQueueWithJobStatus)536利用执行状态——成功/失败、完成时间、代理、机器名等——更新回对应的作业队列条目。这可以由作业的请求者用来检查作业是否完成。例如,可以使用对应作业运行器512中的updateJobQueueWithJobStatus 536来向请求创建报告的用户接口组件告知报告创建的完成。The job manager can run each job using a separate job runner, represented by job runner class 512 . Each job manager can have several job runners that process jobs concurrently. The number of job runners started by a job manager may be limited to the maximum concurrency level configured for that job manager. The job runner class 512 provides methods 532 for synchronous execution of jobs, where a particular job runner running a job will wait until the job is completed, and methods 534 for asynchronous execution of jobs, where a particular job runner will wait until the job is completed Returned before the current job was completed. For long-running jobs, such as file downloads, asynchronous execution may be desirable. The update job queue with job status (updateJobQueueWithJobStatus) 536 in each job runner uses the execution status—success/failure, completion time, agent, machine name, etc.—to update the corresponding job queue entry. This can be used by the requester of the job to check if the job is complete. For example, updateJobQueueWithJobStatus 536 in the corresponding job runner 512 may be used to notify the user interface component requesting the report creation of the completion of the report creation.
图6是用于请求式调度器代理的执行环境600的示意性例示。可以是服务器系统104的部分的执行环境600可以包括可通信地连接的一个或多个处理单元602(例如,处理单元602a和602b)。处理单元可以是相同处理器的单独核,或者是该相同计算机上或者物理上分离的计算机上的分离处理器。每个处理单元可以能访问分离的存储器和/或共同的存储器。每个处理单元602可以能访问用于请求式作业的一个或多个存储器中的队列610(例如,存储器中的队列610a和610b)。FIG. 6 is a schematic illustration of an execution environment 600 for an on-demand scheduler agent. Execution environment 600, which may be part of server system 104, may include one or more processing units 602 (eg, processing units 602a and 602b) communicatively coupled. The processing units may be separate cores of the same processor, or separate processors on the same computer or on physically separate computers. Each processing unit may have access to a separate memory and/or a common memory. Each processing unit 602 may have access to one or more in-memory queues 610 (eg, in-memory queues 610a and 610b) for on-demand jobs.
每个处理单元602可以具有在其上运行的请求式调度器代理608(例如,代理608a和608b)和/或可以具有在其上运行的用于请求式作业的高优先级作业管理器和一个或多个低优先级作业管理器中的一个或多个。Each processing unit 602 may have an on-demand scheduler agent 608 (e.g., agents 608a and 608b) running on it and/or may have a high-priority job manager for on-demand jobs running on it and a or one or more of multiple low-priority job managers.
配置数据库604可以提供一个或多个作业表/队列,其中由各种应用来写入要执行的作业。调度器可以从这些作业表/队列拾取要运行的作业。Configuration database 604 may provide one or more job tables/queues in which jobs to be executed are written by various applications. The scheduler can pick up jobs to run from these job tables/queues.
XML配置606可以提供用于作业调度等的配置。例如,XML配置可以指定每5000毫秒执行要写入日志的作业。当适当的调度器确定是时候运行要写入日志的作业时,它从数据库604确定要写入的实际存录条目。XML configuration 606 may provide configuration for job scheduling and the like. For example, an XML configuration can specify that a job to be written to the log be executed every 5000 milliseconds. When the appropriate scheduler determines that it is time to run the job to be written to the log, it determines from the database 604 the actual log entry to be written.
在一些实施例中,数据库640由调度框架中的所有处理单元602共享。另一方面,用于请求式作业的存储器中的队列可以处在每个处理单元的本地存储器中。In some embodiments, database 640 is shared by all processing units 602 in the scheduling framework. On the other hand, an in-memory queue for on-demand jobs may be in local memory of each processing unit.
图7例示了根据一些实施例的可以由请求式调度器代理用于调度请求式作业的过程700。例如,高优先级作业管理器和低优先级作业管理器中的每一个可以执行过程700。FIG. 7 illustrates a process 700 that may be used by an on-demand scheduler agent to schedule on-demand jobs, according to some embodiments. For example, each of the high priority job manager and the low priority job manager may perform process 700 .
过程700可以连续地由运行的高优先级作业管理器或者运行的低优先级作业管理器基于计时器点火来执行。例如,过程700由每一个高或低优先级作业管理器在该作业管理器启动时进入。在进入过程700之后,作业管理器可以等待计时器点火(例如,指示计时器期满的信号)。在示例实施例中,请求式作业计时器被配置在5秒处。也就是说,请求式作业计时器将每5秒点火(例如,期满)直至终止。Process 700 may be continuously executed by a running high-priority job manager or a running low-priority job manager based on timer firing. For example, process 700 is entered by each high or low priority job manager when that job manager starts up. After entering process 700, the job manager may wait for a timer to fire (eg, a signal indicating expiration of the timer). In an example embodiment, the on-demand job timer is configured at 5 seconds. That is, the on-demand job timer will fire (eg, expire) every 5 seconds until terminated.
在操作702处,接收到计时器点火信号,并且处理请求式作业的迭代开始。如上文所指出的,计时器可以是由特定处理单元上的所有请求式作业调度代理和/或请求式作业管理器共享的计时器,或者在一些实施例中,每一个请求式调度代理可以具有其自己的计时器。At operation 702, a timer firing signal is received and an iteration of processing an on-demand job begins. As noted above, the timer may be a timer shared by all on-demand job scheduling agents and/or on-demand job managers on a particular processing unit, or in some embodiments each on-demand scheduling agent may have its own timer.
在操作704处,确定由该请求式作业管理器使用的存储器中的队列中的空余容量的量。每个作业管理器维持一个或多个存储器中的队列,它(作业管理器)��所���存储器中的队列检索要���作业运行器运行的作业。存储器中的队列的大小可以是可配置的。还可以存在与每个存储器中的队列相关联的可配置的再装填阈值,表示在对应作业管理器利用来自作业数据库的作业再装填存储器中的队列之前所占据(即,由作业填充)的存储器中的队列的最小部分。At operation 704, an amount of free capacity in a queue in memory used by the on-demand job manager is determined. Each job manager maintains one or more in-memory queues from which it (the job manager) retrieves jobs to be run by the job runner. The size of the queue in memory may be configurable. There may also be a configurable refill threshold associated with each in-memory queue, representing the memory occupied (i.e., filled with jobs) before the corresponding job manager refills the in-memory queue with jobs from the job database The smallest part of the queue in .
在操作706处,比较所确定的存储器中的队列的空余容量与用于作业管理器的并发阈值。如上文所述,可以针对高优先级请求式作业管理器和低优先级请求式作业管理器设置分离的并发水平。在操作706处,将空余的存储器中的队列的容量的量与用于作业管理器的并发水平相比较。At operation 706, the determined free capacity of the queue in memory is compared to the concurrency threshold for the job manager. As described above, separate concurrency levels may be set for high-priority on-demand job managers and low-priority on-demand job managers. At operation 706, the amount of capacity of the queue in memory that is free is compared to the concurrency level for the job manager.
在操作708处,基于与并发水平比较的空余存储器中的队列容量的量的比较,就是否可以将新的作业添加到存储器中的队列进行确定。At operation 708, a determination is made as to whether a new job can be added to the queue in memory based on a comparison of the amount of queue capacity in free memory compared to the concurrency level.
如果708处的确定得出是,则在操作710处,从数据库检索(例如,移除)新作业并且将其添加(例如,写入或队列化)到存储器中的队列。所添加的作业的数目可以至少部分地基于存储器中的队列的容量和/或要使用的队列的容量的已配置的最大部分。If the determination at 708 is yes, then at operation 710 a new job is retrieved (eg, removed) from the database and added (eg, written or queued) to a queue in memory. The number of jobs added may be based at least in part on the capacity of the queue in memory and/or a configured maximum fraction of the capacity of the queue to use.
例如,考虑其中用于高优先级作业管理器的并发水平设置在100处的情况,这指示高优先级请求式作业调度器可以具有高达100个并发运行的作业。对应存储器中的队列可以具有最大容量200,指示队列可以一次持有高达200个作业。而且假设在操作704处,确定了空余容量对应于120个作业。For example, consider the case where the concurrency level for the high priority job manager is set at 100, which indicates that the high priority on-demand job scheduler can have up to 100 concurrently running jobs. The queue in corresponding memory may have a maximum capacity of 200, indicating that the queue may hold up to 200 jobs at a time. Also assume that at operation 704, it is determined that the free capacity corresponds to 120 jobs.
现在,在操作706处之后,做出空余容量与并发水平的比较,可以在操作708处确定的是,可以将高达120个新作业添加到存储器中的队列。可以用那许多个作业填满存储器中的队列的200个作业的全部容量。替换地,配置设置可以指定在任何时间处通过从数据库添加作业而装填不多于120个作业。当提供了从最大容量减低的阈值的这种配置时,仅高达所配置的阈值将被用从数据库检索的作业进行装填。因而,在任何时间处,请求式调度器可以具有某一超出容量,其可以用于运行系统可以允许在没有过完一遍作业数据库的情况下运行的作业,诸如例如通过已经运行的作业创建的附加作业,其要求快速响应时间。Now, after operation 706, a comparison of free capacity and concurrency level is made, it can be determined at operation 708 that up to 120 new jobs can be added to the queue in memory. The full capacity of the queue of 200 jobs in memory can be filled with that many jobs. Alternatively, a configuration setting may specify that no more than 120 jobs be populated at any one time by adding jobs from the database. When this configuration of reduced thresholds from the maximum capacity is provided, only up to the configured threshold will be filled with jobs retrieved from the database. Thus, at any time, the on-demand scheduler can have some excess capacity that can be used to run jobs that the system can allow to run without going through the job database, such as for example additional jobs created by already running jobs. Jobs that require fast response times.
以上过程(过程700)使得调度器代理能够跨分离的处理单元协作以便最优地调度作业。The above process (process 700 ) enables scheduler agents to cooperate across separate processing units to optimally schedule jobs.
图8例示了根据一些实施例的供短间隔作业调度器(诸如,短间隔作业调度器206)使用的示例XML配置文件800。例如,在启动时和/或以规律的间隔,短间隔作业代理206可以从存储器读取配置文件800。FIG. 8 illustrates an example XML configuration file 800 for use by a short-interval job scheduler, such as short-interval job scheduler 206 , according to some embodiments. For example, at startup and/or at regular intervals, short interval job agent 206 may read configuration file 800 from memory.
配置文件800指定要由短间隔调度代理运行的作业的类型以及应当何时运行这样的作业。可以在一个行条目中指定要运行的每个作业。例如,行条目可以包括作业名称802、作业类型804以及要以其来运行作业的间隔806。Configuration file 800 specifies the types of jobs to be run by the short interval scheduling agent and when such jobs should be run. Each job to run can be specified in a line entry. For example, a line entry may include a job name 802, a job type 804, and an interval 806 at which to run the job.
图9例示了过程900的流程图,过程900可以由短间隔调度器(诸如例如,短间隔调度器206)执行以动态地配置其点火间隔。FIG. 9 illustrates a flow diagram of a process 900 that may be performed by a short interval scheduler (such as, for example, short interval scheduler 206 ) to dynamically configure its firing interval.
过程900可以由短间隔调度代理206在启动时和/或以预定规律间隔来执行。当对配置做出改变(诸如例如,通过向XML配置800添加作业)时,也可以调用它。Process 900 may be performed by short interval scheduling agent 206 at startup and/or at predetermined regular intervals. It may also be called when changes are made to the configuration, such as, for example, by adding a job to the XML configuration 800 .
在进入过程900之后,在操作902处,可以从配置中列出的作业确定最小重复间隔。例如,考虑在图8中的文件800中列出的作业作为示例,用于仪表板队列处理作业的1000毫秒和用于预警分派器作业的1000毫秒可以被确定为提供最小重复间隔。After entering process 900, at operation 902, a minimum repeat interval can be determined from the jobs listed in the configuration. For example, considering the jobs listed in file 800 in FIG. 8 as an example, 1000 milliseconds for the dashboard queue processing job and 1000 milliseconds for the alert dispatcher job may be determined to provide a minimum repeat interval.
在操作902处确定最小重复时间之后,短间隔作业计时器可以在操作904处被配置成所确定的时间。After determining the minimum repeat time at operation 902 , a short interval job timer may be configured at operation 904 to the determined time.
通过在例如添加任何新的作业或者改变现有工作时使得运行过程900,在配置文件中,短间隔作业调度器可以动态地配置其计时器以用于改变作业混合。By causing the process 900 to run when, for example, any new job is added or an existing job is changed, in the configuration file, the short-interval job scheduler can dynamically configure its timers for changing the job mix.
图10例示了用于过程1000的流程图,短间隔调度器(诸如,短间隔调度器206)可以执行过程1000以调度作业。FIG. 10 illustrates a flow diagram for a process 1000 that a short interval scheduler, such as short interval scheduler 206 , may perform to schedule jobs.
在进入过程1000之后,短间隔调度器可以等待计时器点火。计时器可以是预配置的和/或被动态地配置,如关于图9所述的那样。After entering process 1000, the short interval scheduler may wait for the timer to fire. The timers may be preconfigured and/or dynamically configured as described with respect to FIG. 9 .
在操作1002处,接收指示计时器的点火的信号。在检测到计时器的点火(例如,通过接收对应的信号)时,过程1000进入到过程的其余部分中。At operation 1002, a signal indicative of firing of a timer is received. Upon detecting firing of the timer (eg, by receiving a corresponding signal), process 1000 proceeds with the remainder of the process.
在操作1004处,更新接下来的执行时间。例如,短间隔调度器代理可以在存储器中维持作业���表。列表可以包括用于每个有效的短间隔作业类型的条目以及其接下来的执行时间。在操作1004处,用于每个条目的接下来的执行时间可以被增量有当前短间隔作业计时器的持续时间。例如,如果短间隔作业计时器当前设置为每20秒点火,那么在每次点火时,用于每个条目的接下来的执行时间增量20秒。At operation 1004, the next execution time is updated. For example, the short interval scheduler agent may maintain a list of jobs in memory. The list may include an entry for each valid short interval job type and its next execution time. At operation 1004, the next execution time for each entry may be incremented by the duration of the current short interval job timer. For example, if the short interval job timer is currently set to fire every 20 seconds, the next execution time for each entry is incremented by 20 seconds each time it fires.
在操作1006处,确定任何作业是否具有小于或等于0的执行时间。在一些实施例中,所述确定可以是任何作业是否具有小于或者等于某预定非零阈值的执行时间。At operation 1006, it is determined whether any job has an execution time less than or equal to zero. In some embodiments, the determination may be whether any job has an execution time less than or equal to some predetermined non-zero threshold.
如果在操作1006处针对任何作业的确定是肯定的(即,接下来的执行时间小于或等于0或阈值),那么在操作1008处,短间隔调度器处置每个这样的作业。如上文所指出,处置作业可以包括使得运行作业。在一些示例实施例中,对于要执行的每个作业,可以启动辅助程序以便运行该作业。If the determination at operation 1006 for any job is positive (ie, the next execution time is less than or equal to 0 or a threshold), then at operation 1008 the short interval scheduler processes each such job. As noted above, handling a job may include causing the job to run. In some example embodiments, for each job to be performed, a helper program may be launched to run the job.
在操作1008之后,对于其接下来的执行时间小于或等于0或阈值的作业中的每一个,基于其重复间隔来更新接下来的执行时间。例如,如果一作业被列为具有5000毫秒的重复间隔,那么在其当前启动之后,其接下来的执行时间被设置为5000(或者如果当前的接下来的执行时间已经减量到0以下,那么新的接下来的执行时间可以被设置成补偿减量到0以下的量)。After operation 1008, for each of the jobs whose next execution time is less than or equal to 0 or a threshold, the next execution time is updated based on its repetition interval. For example, if a job is listed as having a repeat interval of 5000 milliseconds, after its current start, its next execution time is set to 5000 (or if the current next execution time has decremented below 0, then The new next execution time can be set to compensate for decrements below 0).
在操作1010之后,处理的迭代已经完成,并且过程1000可以等待接下来的计时器点火。After operation 1010, the iteration of processing has completed, and process 1000 may wait for the next timer to fire.
图11例示了根据一些实施例的用于已调度代理(诸如,已调度代理208)的示例XML配置文件1100的一部分。例如,在启动时,已调度代理208可以读取XML配置文件1100以确定要调度的作业及其调度参数。Figure 11 illustrates a portion of an example XML configuration file 1100 for a scheduled agent, such as scheduled agent 208, according to some embodiments. For example, at startup, scheduled agent 208 may read XML configuration file 1100 to determine the jobs to be scheduled and their scheduling parameters.
配置文件1100可以包括针对要调度的每个作业的作业描述部分1102和触发信息部分1104。作业描述部分1102可以标识作业名称、作业群组、可以用于标识调度器和/或到调度器的接口(例如,用于Quartz.Net调度器的适配器)的作业类型、以及包括作业类型标识符和这是否为批量作业的作业数据。Configuration file 1100 may include a job description section 1102 and a trigger information section 1104 for each job to be scheduled. The job description section 1102 may identify a job name, a job group, a job type that may be used to identify a scheduler and/or an interface to a scheduler (e.g., an adapter for the Quartz.Net scheduler), and include a job type identifier and whether this is job data for a batch job.
触发部分1104指定要如何触发在对应的作业描述部分1102中标识的作业。Trigger section 1104 specifies how the job identified in the corresponding job description section 1102 is to be triggered.
图12例示了可以由已调度代理用于使用和/或适配于第三方调度器(诸如Quartz.Net适配器)的示例适配器类1200。提供适配器增强了系统的可配置性。例如,通过提供适配器,可以通过仅修改适配器而不改变作业等来使用新的和/或附加的调度器。FIG. 12 illustrates an example adapter class 1200 that may be used by a scheduled agent for use and/or adapted to a third-party scheduler, such as a Quartz.Net adapter. Providing adapters enhances the configurability of the system. For example, by providing an adapter, new and/or additional schedulers can be used by only modifying the adapter without changing jobs, etc.
利用许多调度模块(例如,Quartz.Net),通过如在这些实施例中为调度组件提供更均匀的作业混合,可以实现在调度方面更为高效且一致的性能。这在一些实施例中是可能的,因为即便网络应用可以具有有效的各种作业类型的作业,并发运行的其它调度器(例如,请求式和短间隔调度器)也为具有与调度器所调度的那些明显不同的特性的作业提供调度。实施例还提供了以下优点:针对作业的调度不要求由开发者处置,并且可以在实施例中由框架共同处置,同时要求开发者仅仅提供作业类型。With many scheduling modules (eg, Quartz.Net), more efficient and consistent performance in scheduling can be achieved by providing the scheduling component with a more even mix of jobs as in these embodiments. This is possible in some embodiments because even though the web application may have jobs of various job types available, other schedulers running concurrently (for example, on-demand and short-interval schedulers) do not have the same Jobs of those distinct characteristics provide scheduling. Embodiments also provide the advantage that scheduling for a job does not require handling by the developer, and can be handled collectively by the framework in an embodiment, while requiring the developer to provide only the job type.
此外,因为针对每个类型或类型群组提供分离的调度器,所以实施例可以可配置地改变(预配置或动态配置)分配在每个处理单元上的线程的数目,并且由此控制提供给每一作业类型的服务水平。Furthermore, because a separate scheduler is provided for each type or group of types, embodiments may configurably change (pre-configured or dynamically configured) the number of threads allocated on each processing unit, and thus control provided to The service level for each job type.
在实施例中用于运行用户发起的(典型地,在用户联机使用网络应用时)作业(例如,基于用户选择的准则创建报告)的请求式代理典型地需要较高的线程分配,使得用户,使得使用户获得结果的时间合理地短或最优。请求式代理还可以用于分布来自已调度作业的处理负载。例如,假设存在被调度成在每天4:00 PM时运行的作业,其处理要在每天大约相同时间到达的馈送文件中的记录。如果要处理的记录的数目大且未知,通过单个作业处理所有记录是非常低效的。因此,基于要处理的记录的数目,将处理这些记录的某一数目的作业添加到请求式作业队列。因为在一些示例实施例中请求式队列是分布式的,所以这些作业将由有空闲处理作业的任何服务器拾取。因而,可以实现负载的公平合理的分布。The on-demand agent used in an embodiment to run user-initiated (typically, while the user is online using a web application) jobs (e.g., create a report based on user-selected criteria) typically requires a high thread allocation such that the user, Make the time to get the result to the user reasonably short or optimal. On-demand proxies can also be used to distribute the processing load from scheduled jobs. For example, suppose there is a job scheduled to run every day at 4:00 PM that processes records in a feed file that are to arrive at approximately the same time every day. If the number of records to be processed is large and unknown, it is very inefficient to process all records through a single job. Therefore, based on the number of records to be processed, a certain number of jobs processing these records are added to the on-demand job queue. Because the on-demand queue is distributed in some example embodiments, these jobs will be picked up by any server that is free to process jobs. Therefore, a fair and reasonable distribution of load can be realized.
短间隔代理使得能够运行需要非常频繁地运行的作业,而没有调度器或队列的开销。这些典型地包括侦听队列并且在先来先服务的基础上得以处理的作业。这些作业典型地总是以非常短的空闲时间运行。Short-interval brokering enables running jobs that need to be run very frequently without the overhead of a scheduler or queue. These typically include jobs that listen to the queue and are processed on a first-come, first-served basis. These jobs typically always run with very short idle times.
���一些实施例中,���调度作业代理的另一有利特征是批量化。用于短间隔作业的XML配置文件中的标记“IsBatch”可以用于控制如何执行每一个作业。该标记的默认值可以设置为假,在该情况下,石英作业适配器(QuartzJobAdapter)将具有所配置的作业类型id关键参数的作业队列化到请求式队列中(而不是执行作业)。如果IsBatch标记值为真,则它指示批量作业并且存在牵涉到的单独作业的某种批量化。在该情况下,具有所述作业类型id关键参数的作业立即运行。该作业典型地是成批作业,其基于要处理的项目的数目而将数个作业添加到请求式队列中。In some embodiments, another advantageous feature of a scheduled job agent is batching. The tag "IsBatch" in the XML configuration file for short interval jobs can be used to control how each job is executed. The default value of this flag can be set to false, in which case the QuartzJobAdapter will queue the job with the configured job type id key parameter into the on-demand queue (instead of executing the job). If the IsBatch flag value is true, it indicates a batch job and there is some batching of the individual jobs involved. In this case, the job with the job type id key is run immediately. The job is typically a batch job that adds several jobs to the on-demand queue based on the number of items to be processed.
所述实施例在网络应用中特别有利。大多数网络应用要求某种后台处理以从网络服务器卸载CPU密集任务。预警、报告、发送电子邮件、存录等是任何现代网络应用的一些常见特征。该框架处置网络应用所要求的所有种类的作业处理。请求式代理被特别设计成迎合来自联机用户的动态作业请求以在没有长等待时间的情况下给予可能的最佳用户体验。The described embodiment is particularly advantageous in network applications. Most web applications require some kind of background processing to offload CPU intensive tasks from the web server. Alerting, reporting, sending emails, logging, etc. are some of the common features of any modern web application. The framework handles all kinds of job processing required by web applications. The on-demand broker is specifically designed to cater to dynamic job requests from online users to give the best possible user experience without long wait times.
图13示出了可以在一些实施例中使用的示例机器到作业类型的映射表格1200。映射1300可以由代理在调度期间用来基于特定作业类型而使得仅在某些授权机器上执行作业。未被授权用于特定机器的作业的清理可以由已调度进程来承担,诸如以上关于已调度作业代理所述。Figure 13 shows an example machine-to-job-type mapping table 1200 that may be used in some embodiments. Map 1300 may be used by an agent during scheduling to cause jobs to be executed only on certain authorized machines based on a particular job type. Cleanup of jobs not authorized for a particular machine can be undertaken by a scheduled process, such as described above with respect to the scheduled job agent.
图14示出了根据一些实施例的用于系统100的硬件架构的示例框图。客户端系统1410经由网络1440与服务器系统1400通信。网络1440可以包括互连计算设备的网络,诸如互联网。网络1440还可以包括局域网(LAN)或者可以包括客户端系统102与服务器系统1000之间的点对点连接。FIG. 14 shows an example block diagram of a hardware architecture for system 100 in accordance with some embodiments. Client system 1410 communicates with server system 1400 via network 1440 . Network 1440 may include a network of interconnected computing devices, such as the Internet. Network 1440 may also include a local area network (LAN) or may include a point-to-point connection between client system 102 and server system 1000 .
示例客户端系统1410和服务器系统1400可以对应于如在图1中示出的客户端系统102和服务器系统104。也就是说,在图14中描述的硬件元件可以用于实现在本文中参照图1等描述和示出的各种软件组件和动作。例如,客户端系统1410可以包括至少一个处理器CPU1431、至少一个存储器1432、至少一个输入/输出设备I/O 1433、以及用于生成和显示用户接口UI 1434的组件。I/O设备1433可以全部涵盖并且可以包括通信设备,诸如,用于发送和接收数据的收发器(例如,无线收发器、有线收发器)。I/O设备1433还可以包括用于将非暂时性计算机可读存储介质连接到客户端系统1410以便发送和接收数据的接口。Example client system 1410 and server system 1400 may correspond to client system 102 and server system 104 as shown in FIG. 1 . That is, the hardware elements described in FIG. 14 may be used to implement various software components and actions described and illustrated herein with reference to FIG. 1 et al. For example, the client system 1410 may include at least one processor CPU 1431 , at least one memory 1432 , at least one input/output device I/O 1433 , and components for generating and displaying a user interface UI 1434 . I/O devices 1433 can be comprehensive and can include communication devices, such as transceivers (eg, wireless transceivers, wired transceivers) for sending and receiving data. I/O device 1433 may also include an interface for connecting non-transitory computer-readable storage media to client system 1410 for sending and receiving data.
应当领会到,客户端系统1410中的元件的组合可以用于实现在图2中示出的示例网络浏览器应用114。例如,存储器1432可以加载与应用相关联的文件(例如,HTML、XML、JavaScript文件),并且CPU 1431可以用于操作以上讨论的渲染模块、联网模块和JavaScript模块以生成应用。同样地,I/O设备1433可以由联网模块利用以从服务器系统1400取得包括SPA的各种元素。It should be appreciated that a combination of elements in client system 1410 may be used to implement the example web browser application 114 shown in FIG. 2 . For example, the memory 1432 can load files associated with the application (eg, HTML, XML, JavaScript files), and the CPU 1431 can be used to operate the rendering module, networking module, and JavaScript module discussed above to generate the application. Likewise, I/O devices 1433 may be utilized by networking modules to retrieve various elements from server system 1400 including the SPA.
服务器系统1400还包括用于实现针对服务器系统104的软件元件的各种硬件组件,如在图2中所示。例如,服务器系统1400还可以包括至少一个处理器CPU 1421、至少一个存储器1422和至少一个输入/输出设备I/O 1423的硬件组件。I/O设备1423可以全部涵盖并且可以包括通信设备,诸如,用于发送和接收数据的收发器(例如,无线收发器、有线收发器)。I/O设备1423还可以包括用于将非暂时性计算机可读存储介质连接到服务器系统1400以便发送和接收数据的接口。在一个示例实施例中,客户端系统的I/O设备1433可以经由网络执行与服务器系统的I/O 1423的通信。Server system 1400 also includes various hardware components for implementing software elements for server system 104 , as shown in FIG. 2 . For example, the server system 1400 may further include hardware components of at least one processor CPU 1421 , at least one memory 1422 and at least one input/output device I/O 1423 . I/O devices 1423 can be comprehensive and can include communication devices, such as transceivers (eg, wireless transceivers, wired transceivers) for sending and receiving data. I/O device 1423 may also include an interface for connecting a non-transitory computer-readable storage medium to server system 1400 for sending and receiving data. In one example embodiment, the I/O device 1433 of the client system may perform communication with the I/O 1423 of the server system via a network.
类似于客户端系统1410,服务器系统1400可以实现用于生成应用的组件。例如,存储器1422可以用于存储数据库120中的信息以及由网络服务器116和应用服务器118利用的组件和文件。CPU 1421可以在执行对于生成相应模块而言必要的软件时使用,所述模块由客户端系统1410请求并且被传输给客户端系统1410。例如,CPU 1421可以用于生成由应用服务器118创建的必要模块。同样地,I/O设备1423可以由网络服务器116用来将不同的应用元件传输给客户端系统1410。当然,这些示例是非限制性的,并且系统设想到在各种方面中利用硬件元件。Similar to client system 1410, server system 1400 may implement components for generating applications. For example, memory 1422 may be used to store information in database 120 as well as components and files utilized by web server 116 and application server 118 . The CPU 1421 can be used when executing software necessary to generate corresponding modules requested by the client system 1410 and transmitted to the client system 1410 . For example, the CPU 1421 may be used to generate the necessary modules created by the application server 118 . Likewise, I/O device 1423 may be used by web server 116 to transfer various application elements to client system 1410 . Of course, these examples are non-limiting, and the system contemplates utilizing hardware elements in various aspects.
在本文描述的示例中,出于解释而非限制的目的,阐述了具体细节,诸如特定节点、功能实体、技术、协议、标准等,以便提供对所描述的技术的理解。对于本领��技术������将���������见的是,可以实践除下文描述的具体细节之外的其它实施例。在其它实例中,省略了公知的方法、设备、技术等的详细描述,以便不以不必要的细节使描述模糊不清。在附图中示出单独的功能块。本领域技术人员将领会到,那些块的功能可以使用单独的硬件电路、与适当编程的微处理器或通用计算机结合地使用软件程序和数据、使用专用集成电路(ASIC)和/或使用一个或多个数字信号处理器(DSP)来实现。软件程序指令和数据可以存储在计算机可读存储介质上,并且当由计算机或其它适合的处理器控件执行所述指令时,计算机或处理器实行所述功能。尽管在下文可能将数据库描绘为表格,但是可以使用其它格式(包括关系数据库、基于对象的模型和/或分布式数据库)来存储和操控数据。In the examples described herein, for purposes of explanation and not limitation, specific details are set forth, such as particular nodes, functional entities, techniques, protocols, standards, etc., in order to provide an understanding of the described techniques. It will be apparent to those skilled in the art that other embodiments may be practiced than the specific details described below. In other instances, detailed descriptions of well-known methods, devices, techniques, etc. are omitted so as not to obscure the description with unnecessary detail. Individual functional blocks are shown in the figures. Those skilled in the art will appreciate that the functions of those blocks may be implemented using separate hardware circuits, using software programs and data in conjunction with a suitably programmed microprocessor or general purpose computer, using application specific integrated circuits (ASICs), and/or using one or Multiple digital signal processors (DSP) to achieve. Software program instructions and data may be stored on computer-readable storage media, and when the instructions are executed by a computer or other suitable processor control, the computer or processor performs the described functions. Although databases may be depicted below as tables, other formats, including relational databases, object-based models, and/or distributed databases, may be used to store and manipulate data.
尽管可能以特定的顺序次序描述或者要求保护过程步骤、算法等,但是这样的过程可以被配置成以不同的次序工作。换言之,可能明确地描述或者要求保护的步骤的任何顺序或次序未必指示要求以该次序执行所述步骤。本文描述的过程的步骤可以以任何可能的次序来执行。另外,尽管描述或者暗示为非同时发生(例如,由于一个步骤在另一个步骤之后描述),但是一些步骤可以同时执行。此外,通过其在附图中的描绘对过程的例示并不暗示着所例示的过程排除对其的其它变化和修改,并不暗示着所例示的过程或其任何步骤对于该技术是必要的,并且并不暗示着所例示的过程是优选的。Although process steps, algorithms, etc. may be described or claimed in a particular sequential order, such processes may be configured to operate in a different order. In other words, any order or sequence in which steps may be explicitly described or claimed does not necessarily indicate a requirement that the steps be performed in that order. The steps of processes described herein may be performed in any order possible. Additionally, some steps may be performed concurrently, although described or implied as occurring non-concurrently (eg, because one step is described after another). Furthermore, the illustration of a process by its depiction in the figures does not imply that the illustrated process excludes other changes and modifications thereto, or that the illustrated process or any step thereof is essential to the art, And it does not imply that the illustrated procedures are preferred.
在将数据(例如,指令序列)运载到处理器时可能牵涉到各种形式的计算机可读介质/传输。例如,数据可以(i)从存储器递送到处理器;(ii)在任何类型的传输介质(例如,有线、无线、光学等)之上运载;(iii)根据众多格式、标准或协议格式化和/或传输,所述格式、标准或协议诸如以太网(或IEEE 802.3)、ATP、蓝牙、和TCP/IP、TDMA、CDMA、3G等;和/或(iv)被加密以确保隐私性或者防止以本领域中公知的各种方式中的任何的欺骗。如在该文档中使用,术语“非暂时性计算机可读存储介质”包括寄存器、高速缓存存储器、ROM、半导体存储器设备(诸如D-RAM、S-RAM或其它RAM)、磁性介质(诸如闪存、硬盘)、磁光介质、光学介质(诸如CD-ROM、DVD或蓝光盘)、或者用于非暂时性电子数据存储的其它类型的设备。如在该文档中使用的术语“处理系统”意指以下中的至少一个:CPU、GPU、ASIC、FPGA或者用于执行指令的其它硬件电路,所述指令诸如例如包括以上描述的网络应用的软件程序。Various forms of computer readable media/transmissions may be involved in carrying data (eg, sequences of instructions) to a processor. For example, data may be (i) delivered from memory to processor; (ii) carried over any type of transmission medium (e.g., wired, wireless, optical, etc.); (iii) formatted and and/or transmitted in formats, standards or protocols such as Ethernet (or IEEE 802.3), ATP, Bluetooth, and TCP/IP, TDMA, CDMA, 3G, etc.; and/or (iv) encrypted to ensure privacy or to prevent Deception in any of a variety of ways known in the art. As used in this document, the term "non-transitory computer-readable storage medium" includes registers, cache memory, ROM, semiconductor memory devices (such as D-RAM, S-RAM or other RAM), magnetic media (such as flash memory, hard disk), magneto-optical media, optical media (such as CD-ROM, DVD, or Blu-ray disc), or other types of devices used for non-transitory electronic data storage. The term "processing system" as used in this document means at least one of: a CPU, GPU, ASIC, FPGA or other hardware circuitry for executing instructions such as, for example, software including the web applications described above program.
当在该文档中被描述为“可以”、“能够”或者“可能”执行动作,特征或组件“可以”、“能够”或者“可能”包括在给定上下文中或者适用于给定上下文,给定项目“可以”、“能够”或者“可能”具有给定性质时,或者每当使用牵涉到术语“可以”、“能够”或者“可能”的任何类似短语时,应当理解的是,给定的动作、特征、组件、性质等存在于至少一个实施例中,尽管未必存在于所有实施例中。When described in this document as "may", "could" or "may" perform an action, a feature or component "may", "could" or "may" be included in or apply to a given context, given given that an item "may", "could" or "could" have a given property, or whenever any similar phrase involving the terms "may", "could" or "may" is used, it should be understood that the given An act, feature, component, property, etc. is present in at least one embodiment, although not necessarily present in all embodiments.
尽管已经关于AngularJS描述了所述技术,但这是出于描述的方便而做出的;要理解到,在该文档中描述的技术适用于其它SPA技术、其它网络技术和/或任何其它软件技术的上下文中。Although the techniques have been described with respect to AngularJS, this is done for convenience of description; it is to be understood that the techniques described in this document are applicable to other SPA technologies, other web technologies, and/or any other software technologies in the context of
尽管已经结合当前被视为是最实际且���选的实施例的内容描述了所述技术,但是要理解到,所述技术不应限于所公开的实施例,而是相反地,旨在涵盖各种修改和等同布置。While the technology has been described in connection with what is presently considered to be the most practical and preferred embodiment, it is to be understood that the technology should not be limited to the disclosed embodiment, but on the contrary, is intended to cover a variety of Modifications and Equivalent Arrangements.
Claims (18)
Applications Claiming Priority (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| IN2344/DEL/2015 | 2015-07-30 | ||
| IN2344DE2015 | 2015-07-30 | ||
| US15/220511 | 2016-07-27 | ||
| US15/220,511 US9870266B2 (en) | 2015-07-30 | 2016-07-27 | Background job processing framework |
| PCT/US2016/044383 WO2017019826A1 (en) | 2015-07-30 | 2016-07-28 | Background job processing framework |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN108139926A true CN108139926A (en) | 2018-06-08 |
| CN108139926B CN108139926B (en) | 2022-08-12 |
Family
ID=57882637
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201680056872.7A Active CN108139926B (en) | 2015-07-30 | 2016-07-28 | Server system, method, and storage medium for scheduling jobs for network applications |
Country Status (6)
| Country | Link |
|---|---|
| US (4) | US9870266B2 (en) |
| EP (1) | EP3329369B1 (en) |
| CN (1) | CN108139926B (en) |
| AU (1) | AU2016298207B2 (en) |
| CA (1) | CA2994291C (en) |
| WO (1) | WO2017019826A1 (en) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110968401A (en) * | 2018-09-28 | 2020-04-07 | 北京国双科技有限公司 | Task scheduling method and device based on Quartz |
| CN115686806A (en) * | 2021-07-23 | 2023-02-03 | 伊姆西Ip控股有限责任公司 | Method, device and computer program product for managing a storage system |
Families Citing this family (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9870266B2 (en) * | 2015-07-30 | 2018-01-16 | Nasdaq, Inc. | Background job processing framework |
| US10908946B2 (en) | 2016-12-30 | 2021-02-02 | Texas Instruments Incorporated | Scheduling of external block based data processing tasks on a hardware thread scheduler |
| WO2019030698A1 (en) * | 2017-08-08 | 2019-02-14 | Perry + Currier Inc. | Method, system and apparatus for processing database updates |
| US11481362B2 (en) | 2017-11-13 | 2022-10-25 | Cisco Technology, Inc. | Using persistent memory to enable restartability of bulk load transactions in cloud databases |
| KR102492996B1 (en) | 2018-06-08 | 2023-01-31 | 삼성전자주식회사 | Electronic device for processing background task using external input and storage medium thereof |
| US11392411B2 (en) | 2019-11-08 | 2022-07-19 | Sap Se | Background job scheduling restrictions |
| CN113342482A (en) * | 2020-03-02 | 2021-09-03 | 中科星图股份有限公司 | Method and device for realizing periodic task scheduling in Kubernetes |
| CN113885956B (en) * | 2021-09-29 | 2023-08-29 | 北京百度网讯科技有限公司 | Service deployment method and device, electronic device and storage medium |
| CN114509986B (en) * | 2022-01-20 | 2024-04-05 | 武汉朗宇智能科技有限公司 | Cross-platform HMI configuration system and method based on xml file |
| US20230328121A1 (en) * | 2022-04-06 | 2023-10-12 | Cdw Llc | Modular Technologies for Servicing Telephony Systems |
| WO2024107189A1 (en) * | 2022-11-17 | 2024-05-23 | Rakuten Mobile, Inc. | Javascript object notation configuration file generation and network function implementation method and apparatus |
| US20250094213A1 (en) * | 2023-09-15 | 2025-03-20 | Servicenow, Inc. | Fractionalized Task Distribution and Throttling Framework for High-Volume Transactions |
Citations (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20050117584A1 (en) * | 2003-12-01 | 2005-06-02 | Samsung Electronics Co., Ltd. | Multi-channel job scheduling apparatus and method for communication system |
| US20070266390A1 (en) * | 2005-10-31 | 2007-11-15 | Mark Emmerich | Automated management of application-specific tasks from the Internet via distributed task manager agents in a local area network |
| CN101166208A (en) * | 2006-10-20 | 2008-04-23 | 北京直真节点技术开发有限公司 | A method and system for maintaining work automation |
| CN101957780A (en) * | 2010-08-17 | 2011-01-26 | 中国电子科技集团公司第二十八研究所 | Resource state information-based grid task scheduling processor and grid task scheduling processing method |
| CN102193853A (en) * | 2010-03-12 | 2011-09-21 | 三星电子株式会社 | Virtual machine monitor and scheduling method thereof |
| CN102387173A (en) * | 2010-09-01 | 2012-03-21 | 中国移动通信集团公司 | MapReduce system and method and device for scheduling tasks thereof |
| CN102591708A (en) * | 2010-12-13 | 2012-07-18 | 微软公司 | Architecture for providing on-demand and background processing |
| US20130179881A1 (en) * | 2012-01-09 | 2013-07-11 | Microsoft Corporation | Decoupling paas resources, jobs, and scheduling |
| US20140237476A1 (en) * | 2013-02-15 | 2014-08-21 | Apple Inc. | Centralized task scheduling |
| US20140325523A1 (en) * | 2004-05-11 | 2014-10-30 | International Business Machines Corporation | Scheduling computer program jobs |
| CN104462302A (en) * | 2014-11-28 | 2015-03-25 | 北京京东尚科信息技术有限公司 | Distributed data processing coordination method and system |
Family Cites Families (44)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5402350A (en) * | 1991-06-28 | 1995-03-28 | Texas Instruments Incorporated | Scheduling for multi-task manufacturing equipment |
| JPH09502547A (en) * | 1992-11-13 | 1997-03-11 | マイクロソフト コーポレイション | Method and system for marshalling interface pointers for remote procedure calls |
| AU735024B2 (en) * | 1997-07-25 | 2001-06-28 | British Telecommunications Public Limited Company | Scheduler for a software system |
| US5964892A (en) * | 1997-08-29 | 1999-10-12 | National Instruments Corp. | General Purpose Interface Bus (GPIB) system and method which provides GPIB call capture and display |
| US6477591B1 (en) * | 1998-03-03 | 2002-11-05 | Highground Systems, Inc. | Method and apparatus for storing and copying data via a first path and a second path wherein second path bypasses mirror driver |
| US6029174A (en) * | 1998-10-31 | 2000-02-22 | M/A/R/C Inc. | Apparatus and system for an adaptive data management architecture |
| US7386586B1 (en) * | 1998-12-22 | 2008-06-10 | Computer Associates Think, Inc. | System for scheduling and monitoring computer processes |
| US7266706B2 (en) * | 1999-03-03 | 2007-09-04 | Yottayotta, Inc. | Methods and systems for implementing shared disk array management functions |
| JP3877519B2 (en) * | 2000-12-15 | 2007-02-07 | 株式会社日立製作所 | System recovery method, computer system for implementing the method, and recording medium recording the processing program |
| US20030163507A1 (en) * | 2002-02-26 | 2003-08-28 | Zarlink Semiconductor V.N. Inc. | Task-based hardware architecture for maximization of intellectual property reuse |
| US7093243B2 (en) * | 2002-10-09 | 2006-08-15 | International Business Machines Corporation | Software mechanism for efficient compiling and loading of java server pages (JSPs) |
| US7788226B2 (en) * | 2004-12-30 | 2010-08-31 | Sap Ag | Monitoring availability of applications |
| US7823170B2 (en) * | 2005-08-31 | 2010-10-26 | Sap Ag | Queued asynchronous remote function call dependency management |
| WO2008010820A1 (en) * | 2006-07-21 | 2008-01-24 | Barclays Capital Inc. | Method and system for identifying and conducting inventory of computer assets on a network |
| US8533696B1 (en) * | 2006-09-29 | 2013-09-10 | Emc Corporation | Methods and systems for allocating hardware resources to instances of software images |
| US9645845B2 (en) * | 2007-09-27 | 2017-05-09 | Sap Se | Triggering job execution in application servers based on asynchronous messages sent by scheduling tasks |
| US20100299438A1 (en) * | 2008-01-21 | 2010-11-25 | Gottfried Zimmerman | Online resource server for allowing device control and access to digital content trhough pluggable user interfaces |
| US8495182B1 (en) * | 2008-04-02 | 2013-07-23 | Bank Of America Corporation | Scalable systems management abstraction framework |
| US8458712B2 (en) * | 2008-04-30 | 2013-06-04 | International Business Machines Corporation | System and method for multi-level preemption scheduling in high performance processing |
| US20100168912A1 (en) * | 2008-12-29 | 2010-07-01 | Electronics And Telecommunications Research Institute | Method of invoking asynchronous function for controlling robots |
| US8665724B2 (en) * | 2009-06-12 | 2014-03-04 | Cygnus Broadband, Inc. | Systems and methods for prioritizing and scheduling packets in a communication network |
| US8813065B2 (en) * | 2010-04-26 | 2014-08-19 | Vmware, Inc. | Microcloud platform delivery system |
| US9141422B2 (en) * | 2010-05-18 | 2015-09-22 | Microsoft Technology Licensing, Llc | Plug-in task scheduler |
| US8433833B2 (en) * | 2011-03-30 | 2013-04-30 | Intel Corporation | Dynamic reassignment for I/O transfers using a completion queue |
| US8886976B2 (en) | 2011-04-11 | 2014-11-11 | Microsoft Corporation | Management of background tasks |
| US8542586B2 (en) * | 2011-09-20 | 2013-09-24 | Telefonaktiebolaget L M Ericsson (Publ) | Proportional bandwidth sharing of the excess part in a MEF traffic profile |
| US9092247B2 (en) * | 2012-03-29 | 2015-07-28 | Microsoft Technology Licensing, Llc | Persistent and resilient worker processes |
| US9141430B2 (en) * | 2012-04-30 | 2015-09-22 | Hewlett-Packard Development Company, L.P. | Scheduling mapreduce job sets |
| US20130339485A1 (en) * | 2012-06-13 | 2013-12-19 | Motorola Mobility, Inc. | Multi-Threaded Asynchronous Download of a Set of Script files Used in a Web Application |
| US9229774B1 (en) * | 2012-07-13 | 2016-01-05 | Google Inc. | Systems and methods for performing scheduling for a cluster |
| US9292359B2 (en) * | 2012-07-27 | 2016-03-22 | Intel Corporation | System and method for memory management |
| US9058208B2 (en) * | 2012-11-12 | 2015-06-16 | Skymedi Corporation | Method of scheduling tasks for memories and memory system thereof |
| JP5660149B2 (en) | 2013-03-04 | 2015-01-28 | 日本電気株式会社 | Information processing apparatus, job scheduling method, and job scheduling program |
| US9584601B2 (en) * | 2013-08-29 | 2017-02-28 | Telenav, Inc. | Communication system with transport link mechanism and method of operation thereof |
| US9658747B2 (en) * | 2013-10-01 | 2017-05-23 | Microsoft Technology Licensing, Llc | Virtual tabs supporting web content suspension |
| US9250953B2 (en) | 2013-11-12 | 2016-02-02 | Oxide Interactive Llc | Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system |
| WO2015145762A1 (en) * | 2014-03-28 | 2015-10-01 | 株式会社日立製作所 | Database management system, computer, and database management method |
| US9582326B2 (en) * | 2014-05-30 | 2017-02-28 | Apple Inc. | Quality of service classes |
| US9483187B2 (en) * | 2014-09-30 | 2016-11-01 | Nimble Storage, Inc. | Quality of service implementation in a networked storage system with hierarchical schedulers |
| US9442760B2 (en) * | 2014-10-03 | 2016-09-13 | Microsoft Technology Licensing, Llc | Job scheduling using expected server performance information |
| JP6447297B2 (en) * | 2015-03-26 | 2019-01-09 | 富士通株式会社 | Communication method, information processing apparatus, and program |
| US11556396B2 (en) * | 2015-05-08 | 2023-01-17 | Seth Lytle | Structure linked native query database management system and methods |
| US9870266B2 (en) * | 2015-07-30 | 2018-01-16 | Nasdaq, Inc. | Background job processing framework |
| WO2017107001A1 (en) * | 2015-12-21 | 2017-06-29 | Intel Corporation | Apparatus and method for pattern-driven page table shadowing for graphics virtualization |
-
2016
- 2016-07-27 US US15/220,511 patent/US9870266B2/en active Active
- 2016-07-28 AU AU2016298207A patent/AU2016298207B2/en not_active Ceased
- 2016-07-28 EP EP16831329.4A patent/EP3329369B1/en active Active
- 2016-07-28 CA CA2994291A patent/CA2994291C/en active Active
- 2016-07-28 WO PCT/US2016/044383 patent/WO2017019826A1/en not_active Ceased
- 2016-07-28 CN CN201680056872.7A patent/CN108139926B/en active Active
-
2017
- 2017-12-07 US US15/834,891 patent/US10528394B2/en active Active
-
2019
- 2019-12-03 US US16/702,155 patent/US11429448B2/en active Active
-
2022
- 2022-08-29 US US17/897,501 patent/US20220413927A1/en active Pending
Patent Citations (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20050117584A1 (en) * | 2003-12-01 | 2005-06-02 | Samsung Electronics Co., Ltd. | Multi-channel job scheduling apparatus and method for communication system |
| US20140325523A1 (en) * | 2004-05-11 | 2014-10-30 | International Business Machines Corporation | Scheduling computer program jobs |
| US20070266390A1 (en) * | 2005-10-31 | 2007-11-15 | Mark Emmerich | Automated management of application-specific tasks from the Internet via distributed task manager agents in a local area network |
| CN101166208A (en) * | 2006-10-20 | 2008-04-23 | 北京直真节点技术开发有限公司 | A method and system for maintaining work automation |
| CN102193853A (en) * | 2010-03-12 | 2011-09-21 | 三星电子株式会社 | Virtual machine monitor and scheduling method thereof |
| CN101957780A (en) * | 2010-08-17 | 2011-01-26 | 中国电子科技集团公司第二十八研究所 | Resource state information-based grid task scheduling processor and grid task scheduling processing method |
| CN102387173A (en) * | 2010-09-01 | 2012-03-21 | 中国移动通信集团公司 | MapReduce system and method and device for scheduling tasks thereof |
| CN102591708A (en) * | 2010-12-13 | 2012-07-18 | 微软公司 | Architecture for providing on-demand and background processing |
| US20130179881A1 (en) * | 2012-01-09 | 2013-07-11 | Microsoft Corporation | Decoupling paas resources, jobs, and scheduling |
| US20140237476A1 (en) * | 2013-02-15 | 2014-08-21 | Apple Inc. | Centralized task scheduling |
| CN104462302A (en) * | 2014-11-28 | 2015-03-25 | 北京京东���科信息技术有限公司 | Distributed data processing coordination method and system |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110968401A (en) * | 2018-09-28 | 2020-04-07 | 北京国双科技有限公司 | Task scheduling method and device based on Quartz |
| CN115686806A (en) * | 2021-07-23 | 2023-02-03 | 伊姆西Ip控股有限责任公司 | Method, device and computer program product for managing a storage system |
Also Published As
| Publication number | Publication date |
|---|---|
| AU2016298207B2 (en) | 2018-07-05 |
| HK1256488A1 (en) | 2019-09-27 |
| WO2017019826A1 (en) | 2017-02-02 |
| EP3329369A4 (en) | 2019-02-27 |
| CN108139926B (en) | 2022-08-12 |
| US20220413927A1 (en) | 2022-12-29 |
| US10528394B2 (en) | 2020-01-07 |
| US20170031723A1 (en) | 2017-02-02 |
| CA2994291A1 (en) | 2017-02-02 |
| EP3329369A1 (en) | 2018-06-06 |
| EP3329369B1 (en) | 2021-09-08 |
| US11429448B2 (en) | 2022-08-30 |
| US20200104183A1 (en) | 2020-04-02 |
| US9870266B2 (en) | 2018-01-16 |
| US20180095801A1 (en) | 2018-04-05 |
| AU2016298207A1 (en) | 2018-03-08 |
| CA2994291C (en) | 2018-10-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US20220413927A1 (en) | Background Job Processing Framework | |
| CN107729139B (en) | A method and apparatus for concurrently acquiring resources | |
| CN102760074B (en) | Method and its system for high load capacity operation flow scalability | |
| US9262210B2 (en) | Light weight workload management server integration | |
| CN110383764B (en) | System and method for processing events using historical data in a serverless system | |
| CN108733461B (en) | Distributed task scheduling method and device | |
| US20180143852A1 (en) | Resource management for batch jobs | |
| CN119248483A (en) | Leveraging microservice containers to provide tenant isolation in a multi-tenant API gateway | |
| CN109726004B (en) | Data processing method and device | |
| US10754705B2 (en) | Managing metadata hierarch for a distributed processing system with depth-limited hierarchy subscription | |
| CN109408286A (en) | Data processing method, device, system, computer readable storage medium | |
| CN103546571A (en) | Platform-as-a-service (PaaS) realizing method and device | |
| JP2004192047A (en) | Message processing device, message processing method, and message processing program | |
| US10908963B2 (en) | Deterministic real time business application processing in a service-oriented architecture | |
| CN106657195A (en) | Task processing method and relay device | |
| HK1256488B (en) | A server system, method and storage medium for scheduling jobs of a web application | |
| Wang et al. | Hierarchical budget management in the RED-Linux scheduling framework | |
| CN113342542B (en) | Service processing method, device, equipment and computer storage medium | |
| CN118260036B (en) | Method, system and medium for processing Flink operation | |
| CN119003163A (en) | Data processing method and device | |
| CN113742045A (en) | Distributed task processing method and device and electronic equipment |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1256488 Country of ref document: HK |
|
| GR01 | Patent grant | ||
| GR01 | Patent grant |