Asynchronous task framework

By introducing an internal authorization graph and a scalable queue system into the task scheduling platform, the complexity of developers managing authentication and repeaters in task scheduling is solved, achieving more efficient task scheduling and system expansion.

CN120826673APending Publication Date: 2025-10-21SNAP INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202480016330.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-03-03
Filing Date
2024-03-01
Publication Date
2025-10-21

AI Technical Summary

Technical Problem

Existing technologies require developers to manually manage authentication, establish message contracts, and maintain relays in task scheduling, resulting in high development complexity and low efficiency.

Method used

A platform is introduced that uses an internal authorization graph to manage authentication between task sources and task sinks, transparently serialized calls via gRPC/HTTP, and relies on a horizontally scalable push queue system, eliminating the need for developers to manage authentication and relays themselves.

Benefits of technology

It simplifies the task scheduling process, reduces development complexity, and improves task scheduling efficiency and system scalability.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120826673A_ABST
    Figure CN120826673A_ABST
Patent Text Reader

Abstract

Systems, devices, media, and methods are presented that provide an asynchronous task scheduling framework in which tasks are asynchronously scheduled for execution by a server system. Scheduling of tasks is performed by grouping the tasks (converting work units to bytes) and storing the tasks in a queue, and retrieving the tasks from the queue and degrouping the retrieved tasks (converting bytes to work units). The degrouped tasks are sent to a service (e.g., an email service) for execution. Examples of the present method introduce packaging of Hypertext Transfer Protocol (HTTP) / Remote Procedure Call (RPC) calls, and transparently proxy them through a high throughput message queue system.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims priority to U.S. Provisional Application Serial No. 63 / 449,773, filed on March 3, 2023, the contents of which are incorporated herein by reference in their entirety. Technical Field

[0003] Examples set forth in this disclosure generally relate to applications running on server systems. More particularly, but not by way of limitation, this disclosure relates to systems and methods for optimizing the scheduling of tasks. Background Art

[0004] A task framework is a structured approach for breaking down complex tasks into smaller, more manageable subtasks. In computer programming, a task is typically a discrete unit of work that a program is designed to perform. BRIEF DESCRIPTION OF THE DRAWINGS

[0005] The disclosed subject matter is best understood from the following detailed description when read in conjunction with the accompanying drawings, in which like elements are given like reference numerals. When multiple similar elements are present, a single reference numeral may be assigned to the multiple similar elements, with lowercase reference numerals referring to specific elements. Lowercase reference numerals may be omitted when referring collectively to the element or to one or more non-specific elements.

[0006] To facilitate the identification of discussions of any specific element or action, the most significant digit or digits in a reference numeral refer to the figure number in which the element is first introduced. This emphasizes that, according to common practice, the various features of the drawings are not necessarily drawn to scale unless otherwise indicated. Instead, the dimensions of the various features may be exaggerated or reduced for clarity. The drawings include the following figures:

[0007] Figure 1 is a block diagram of an example task execution system in an online client-server system.

[0008] Figure 2 is a block diagram illustrating an example task execution system.

[0009] Figure 3 It shows Figure 2 A flow chart of example communications between components of a task execution system.

[0010] Figure 4 is a block diagram of an example hardware configuration for a client device embodied as a mobile device.

[0011] Figure 5is a block diagram of a machine in the form of a computer system within which a set of instructions may be executed, for causing the machine to perform any one or more of the methodologies described herein, according to some examples.

[0012] Figure 6 is a block diagram of a software architecture within which aspects of the present disclosure may be implemented, according to some examples. DETAILED DESCRIPTION

[0013] An asynchronous task scheduling framework in which tasks are asynchronously scheduled for execution by a server system. Tasks are scheduled by marshaling tasks (converting work units into bytes) and storing them in a queue, and retrieving tasks from the queue and unmarshaling the retrieved tasks (converting bytes into work units). The unmarshaled tasks are sent to a service (e.g., an email service) for execution.

[0014] Traditional application protocols operate with synchronous request / response information flows, with the exception of some remote procedure call (RPC) configurations (e.g. RPC (gRPC) configuration). The example of the method described in this article introduces wrapping Hypertext Transfer Protocol (HTTP) / gRPC calls and transparently proxying them through a high-throughput message queue system. In contrast to existing systems, setting up serialization / deserialization of these messages is entirely at the developer's discretion. This provides a way to leverage gRPC or HTTP's serialization and other features for proxying calls between service producers (e.g., users or senders of tasks) and service consumers (e.g., executed services such as email services).

[0015] Conventionally, if a developer wants to queue a task and process it later in the same service or in a different distributed system, they must do the following: establish authentication; share keys in some authorization contracts to access tasks when different services consume messages; create message contracts for serialization / deserialization; and maintain relays to pull messages and proxy them to downstream consumers. The example described in this article provides a platform that utilizes an internal authorization (auth) graph to eliminate the need to manage authentication between task sources and task sinks. To eliminate the need to establish specific message contracts, in one example, the task scheduling service is implemented under gRPC / HTTP and the entire call is serialized in an opaque manner. This eliminates the need for developers to establish and communicate their contracts. In addition, users of such a platform do not need to manage relays to interact with their queues because the platform's examples rely on providing a fully push queue implementation that can be maintained and horizontally expanded.

[0016] The following description includes systems, methods, techniques, instruction sequences, and computer program products that illustrate examples of the present disclosure. In the following description, for the purpose of explanation, many specific details are set forth to provide an understanding of the various examples of the disclosed subject matter. However, it will be apparent to those skilled in the art that the examples of the disclosed subject matter can be practiced without these specific details. In general, well-known instruction instances, protocols, structures, and techniques need not be shown in detail.

[0017] Figure 1 1 is a block diagram illustrating a system 100 configured to schedule and execute tasks according to some examples. System 100 includes one or more client devices, such as client device 110. Client device 110 includes, but is not limited to, a mobile phone, a desktop computer, a laptop computer, a portable digital assistant (PDA), a smartphone, a tablet computer, an ultrabook, a netbook, a laptop computer, a multiprocessor system, a microprocessor-based or programmable consumer electronic product, a game console, a set-top box, a computer in a vehicle, or any other communication device that a user can use to access system 100. In some examples, client device 110 includes a display module (not shown) to display information (e.g., in the form of a user interface). In other examples, client device 110 includes one or more of a touch screen, an accelerometer, a gyroscope, a camera, a microphone, a global positioning system (GPS) device, and the like. Client device 110 can be a user device used to access and utilize an online social platform. For example, client device 110 can be used to enter information to create an account and exchange information via network 102.

[0018] For example, client device 110 may be a device of a user using a social media application on the device. Client device 110 may call a server for a social platform (e.g., hosted by server system 108) directly or through one or more third-party servers 128 (e.g., using one or more third-party applications 130) via the social media application. Application server 104 schedules and executes tasks.

[0019] The one or more users may be humans, machines, or other devices that interact with client device 110. In an example, a user may not be part of system 100, but may interact with system 100 via client device 110 or other device. For example, a user may provide input (e.g., touch screen input or alphanumeric input) to client device 110, and the input may be communicated to other entities in system 100 (e.g., third-party server 128, server system 108, etc.) via network 102. In such an instance, the other entities in system 100, in response to receiving the input from the user, may communicate information to client device 110 via network 102 for presentation to the user. In this manner, the user interacts with various entities in system 100 using client device 110.

[0020] System 100 also includes a network 102. One or more portions of network 102 can be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), a portion of the Internet, a portion of the public switched telephone network (PSTN), a cellular telephone network, a wireless network, a WiFi network, another type of network, or a combination of two or more such networks.

[0021] The client device 110 can access various data and applications provided by other entities in the system 100 via a web client 112 (e.g., a browser) and / or one or more client applications 114. The client device 110 can include one or more client applications 114 (also referred to as "apps"), such as, but not limited to, a web browser, a messaging application, an electronic mail (email) application, an e-commerce website application, a mapping or location application, and the like.

[0022] In some examples, one or more client applications 114 are included in a given one of the client devices 110 and are configured to locally provide a user interface and at least some of the functionality, wherein the client application 114 is configured to communicate with other entities in the system 100 (e.g., third-party server 128, server system 108, etc.) as needed for data processing capabilities that are not available locally (e.g., accessing location information, authenticating users, etc.). Conversely, one or more client applications 114 may not be included in the client device 110, and the client device 110 may then use its web browser to access one or more applications hosted on other entities in the system 100 (e.g., third-party server 128, server system 108, etc.).

[0023] The server system 108 provides server-side functionality to one or more third-party servers 128 and one or more client devices 110 via a network 102 (e.g., the Internet or a wide area network (WAN)). The server system 108 includes an application program interface (API) server 120, a web server 122, and a task execution system 124, which can be communicatively coupled to one or more databases 126. The one or more databases 126 can be storage devices that store data related to users of the server system 108, applications associated with the server system 108, cloud services, and the like (e.g., in a data set). The one or more databases 126 can also store information related to the third-party servers 128, third-party applications 130, client devices 110, client applications 114, users, and the like. In one example, the one or more databases 126 can be cloud-based storage.

[0024] In one example, the server system 108 includes a task execution system 124. The task execution system 124 may include one or more servers and may be associated with a cloud-based application. The task execution system 124 may receive tasks, marshal received tasks, unmarshal received tasks, and execute services for performing tasks.

[0025] The system 100 also includes one or more third-party servers 128. The one or more third-party servers 128 may include one or more third-party applications 130. The one or more third-party applications 130 executing on the third-party servers 128 may interact with the server system 108 via the API server 120 through a programming interface provided by the API server 120. For example, the one or more third-party applications 132 may request and utilize information from the server system 108 via the API server 120 to support one or more features or functions on a third-party-hosted website or a third-party-hosted application. For example, the third-party applications 130 may provide software version analysis functionality supported by relevant functions and data in the server system 108.

[0026] Figure 2 2 is a block diagram illustrating an example of a task execution system 124. Task execution system 124 includes a collection of services (represented by service A 210, service B 216, service C 218, and service D 204) for executing a task initiated by sender 208. In one example, the task is the distribution of an email from user 202 to multiple other users (including user 226) by executor 206 (such as an email distribution service executor). Although email distribution is described herein, task execution system 124 can be applied to essentially any computer task that can be broken down into subtasks, including, as non-limiting examples, database scanning, scheduling, purging, data change application program interface (API) operations, user data change alerts to clients, multicast for cache invalidation, push notifications (e.g., phone reputation, spam and abuse; email reputation), and short messaging / message service (SMS).

[0027] As used herein, the term "user" is used to refer to the initiator of a service or the beneficiary or recipient of a service. A user can be a human or another computer service. In addition, the initiator user and the beneficiary / recipient user can be the same. As used herein, the term "service" is a program or application that provides specific functionality or capabilities to other computer programs, users, or services. A service can run in the background without any human user interaction.

[0028] Now refer to Figure 2 Task execution system and Figure 3 , providing an illustrative example for email distribution.

[0029] The sender 208 initiates task processing by sending a work request communication 302 to the service A 210 (via the API interface). In the example, the work request communication 302 is implemented using gRPC over HTTP and includes a payload (i.e., data) defining the work and metadata (e.g., data that provides context for the payload). The metadata includes a flag (referred to herein as a queue flag) that specifies the work to be queued using the task scheduler 200. In the email distribution example, the work could be to send the message "Hello" to all iPhones.

[0030] The task scheduler 200 receives a work request communication 302 defining a job from a sender 208 (via an API interface). In the example shown, the task scheduler 200 is implemented using a service A 210 and a scheduling service 214 comprised of a service B 216 and a service C 218, with services B and C sharing a persistent storage 220 for queuing task-related data. It should be understood that the functionality of service B 216 and service C 218 can be combined into a single service or divided into three or more services.

[0031] Service A 210 includes an interceptor 212 that is configured to receive and process work request communications 302. When the interceptor 212 recognizes the queue flag, the interceptor 212 notifies service A 210 to route the work request to the scheduling service 214. In addition, the interceptor 212 marshals the work request by breaking it into work units (referred to herein as tasks) and converting the work units into bytes representing the work units.

[0032] In response to recognition of the queued flag, service A 210 sends a communication 304 to service B 216. Communication 304 includes bytes representing a unit of work (which includes a payload).

[0033] Service B 216 includes a publisher 222 that is configured to queue bytes within persistent storage 220, collect information required to execute the work unit represented by the bytes (e.g., collect email addresses of all expected or defined recipients), and distribute the work unit to a repeater 224 of service C 218 via communication 306.

[0034] In response to receiving the assigned work unit, the task is processed by the repeater 224 of service C 218. The repeater 224 is configured to unmarshal the task from the queue in persistent storage 220 by converting the queued bytes back into work units and execute the task by sending the task to service D 204 via work unit communication 308.

[0035] Service D includes a service executor 206 for performing the task of providing the service to a user 226. The service executor 206 can be a conventional service, such as an email service executor 206 for delivering emails to designated recipients. In the email service example, the email service executor 206 can send an email message 310 to the recipient 228.

[0036] In this example, upon task completion, notifications are sent between services AD and ultimately to sender 208, informing sender 208 that the work request has been completed. For example, after receiving the work unit / task from relay 224 in communication 308, executor 206 sends communication 312 to indicate to task scheduler 200 whether the task was successfully completed. Task scheduler 200, in turn, sends communication 314 to interceptor 212, indicating to interceptor 212 whether the task was successfully completed. Interceptor 212 monitors communication 314 and, upon receiving communication 314 for all tasks of the work request, notifies sender 208 via communication 316 whether the work request was successful.

[0037] Figure 4 is a high-level functional block diagram of an example client device 110 embodied as an example mobile device 490. Mobile device 490 includes flash memory 440A that includes programming to perform all or a subset of the functionality described herein. Mobile device 490 may include a camera 470 that includes at least two visible light cameras (a first visible light camera and a second visible light camera with overlapping fields of view) or at least one visible light camera and a depth sensor with substantially overlapping fields of view. Memory 440A may also include a plurality of images or videos generated via camera 470.

[0038] As shown in the figure, the mobile device 490 includes an image display 480, an image display driver 482 for controlling the image display 480, and a controller 484. Figure 4 In the example of , the image display 480 and the user input device are integrated together into a touch screen display.

[0039] Examples of touch screen mobile devices that may be used include, but are not limited to, smartphones, personal digital assistants (PDAs), tablet computers, laptop computers, or other portable devices. However, the structure and operation of touch screen devices are provided by way of example; and the subject technology as described herein is not intended to be limited thereto. For purposes of this discussion, Figure 4

[0066] Thus provided is a block diagram illustration of an example mobile device 490 having a touch screen display as (or as part of) a user interface for displaying content and receiving user input.

[0040] like Figure 4 As shown, the mobile device 490 includes at least one digital transceiver (XCVR) 410, shown as a WWAN XCVR, for digital wireless communication via a wide area wireless mobile communication network. The mobile device 490 also includes additional digital transceivers or analog transceivers, such as a short-range XCVR 420 for short-range network communication, such as via NFC, VLC, DECT, ZigBee, Bluetooth TM For example, the short-range XCVR 420 may take the form of any available two-way wireless local area network (WLAN) transceiver of a type compatible with one or more standard communication protocols implemented in wireless local area networks, such as one of the Wi-Fi standards under IEEE 802.11.

[0041] To generate location coordinates for locating the mobile device 490, the mobile device 490 may include a global positioning system (GPS) receiver. Alternatively or additionally, the mobile device 490 may utilize either or both of the short-range XCVR 420 and the WWAN XCVR 410 to generate location coordinates for positioning. For example, based on a cellular network, WiFi, or Bluetooth TM The positioning system of the eyewear can generate very accurate position coordinates, especially when used in combination. Such position coordinates can be transmitted to the eyewear device via the XCVR 410, 420 through one or more network connections.

[0042] Transceivers 410, 420 (network communication interfaces) conform to one or more of the various digital wireless communication standards utilized by modern mobile networks. Examples of WWAN transceivers 410 include, but are not limited to, transceivers configured to operate in accordance with Code Division Multiple Access (CDMA) and Third Generation Partnership Project (3GPP) network technologies (e.g., including but not limited to 3GPP Type 2 (or 3GPP2) and LTE, sometimes referred to as "4G"). For example, transceivers 410, 420 provide two-way wireless communication of information (including digitized audio signals, still images and video signals, web page information for display, and web-related input), as well as various types of mobile messaging communications to / from mobile device 490.

[0043] The mobile device 490 also includes a microprocessor shown as CPU 430, sometimes referred to as a host controller in this article. A processor is a circuit having elements that are constructed and arranged to perform one or more processing functions, typically various data processing functions. Although discrete logic components can be used, these examples utilize components that form a programmable CPU. For example, the microprocessor includes one or more integrated circuit (IC) chips that incorporate electronic components for performing CPU functions. For example, the processor 430 can be based on any known or available microprocessor architecture, such as a reduced instruction set computing (RISC) using an ARM architecture, as is commonly used today in mobile devices and other portable electronic devices. Of course, other processor circuit systems can be used to form the processor hardware in the CPU 430 or smartphones, laptop computers, and tablet computers.

[0044] The microprocessor 430 functions as a programmable host controller for the mobile device 490 by configuring the mobile device 490 to perform various operations, for example, according to instructions or programming executable by the processor 430. For example, such operations may include various general operations for the mobile device, as well as operations related to programming for the task scheduler 200. Although a processor may be configured using hard-wired logic, a typical processor in a mobile device is a general-purpose processing circuit that is configured by executing programming.

[0045] Mobile device 490 includes a memory or storage device system for storing data and programming. In an example, the memory system may include flash memory 440A and random access memory (RAM) 440B. RAM 440B is used as short-term storage for instructions and data processed by processor 430, such as working data processing memory. Flash memory 440A typically provides long-term storage.

[0046] Thus, in the example of mobile device 490, flash memory 440A is used to store programming or instructions executed by processor 430. Depending on the type of device, mobile device 490 stores and runs a mobile operating system through which specific applications, including programming for task scheduler 200, are executed. Applications (such as task applications and programming for task scheduler 200) can be native applications, hybrid applications, or web applications (e.g., dynamic web pages executed by a web browser) running on mobile device 490. Examples of mobile operating systems include Google Android, Apple iOS (for iPhone or iPad devices), Windows Mobile, Amazon Fire OS, RIM BlackBerry operating system, or similar operating systems.

[0047] Figure 5 500 within the machine 500 for causing the machine 500 to perform any one or more of the methodologies discussed herein. For example, the instructions 508 may cause the machine 500 to perform any one or more of the methodologies described herein. The instructions 508 transform the general-purpose, unprogrammed machine 500 into a specific machine 500 that is programmed to perform the functions described and illustrated in the manner described. The machine 500 may operate as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, the machine 500 may operate in the capacity of a server or a client machine in server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.

[0048] The machine 500 may include, but is not limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a PDA, an entertainment media system, a cellular phone, a smartphone, a mobile device, a wearable device (e.g., a smartwatch), a smart home device (e.g., a smart appliance), other smart devices, web appliances, a network router, a network switch, a network bridge, or any machine capable of sequentially executing the instructions 508. Furthermore, while only a single machine 500 is illustrated, the term "machine" shall also be construed to include any collection of machines that individually or collectively execute the instructions 508 to perform any one or more of the methodologies discussed herein.

[0049] Machine 500 may include a processor 502, a memory 504, and an I / O component 542, which may be configured to communicate with each other via a bus 544. In an example, processor 502 (e.g., a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an ASIC, a radio frequency integrated circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, processor 506 and processor 510 that execute instructions 508. The term "processor" is intended to include multi-core processors, which may include two or more independent processors (sometimes referred to as "cores") that can execute instructions simultaneously. Although Figure 5 Multiple processors 502 are shown, but machine 500 may include a single processor with a single core, a single processor with multiple cores (eg, a multi-core processor), multiple processors with a single core, multiple processors with multiple cores, or any combination thereof.

[0050] The memory 504 includes a main memory 512, a static memory 514, and a storage unit 516, all of which are accessible by the processor 502 via the bus 544. The main memory 504, the static memory 514, and the storage unit 516 store instructions 508 that embody any one or more of the methodologies or functionality described herein. During execution of the instructions 508 by the machine 500, the instructions 508 may also reside, completely or partially, within the main memory 512, within the static memory 514, within a machine-readable medium 518 (e.g., a non-transitory machine-readable storage medium) within the storage unit 516, within at least one processor 502 (e.g., within a processor's cache memory), or any suitable combination thereof.

[0051] Furthermore, machine-readable medium 518 is non-transitory (in other words, does not have any transitory signals) because it does not contain propagating signals. However, labeling machine-readable medium 518 as "non-transitory" should not be interpreted as meaning that the medium cannot be moved; the medium should be considered transportable from one physical location to another. Furthermore, because machine-readable medium 518 is tangible, the medium can be a machine-readable device.

[0052] The I / O components 542 may include a variety of components to receive input, provide output, generate output, transmit information, exchange information, capture measurements, and the like. The specific I / O components 542 included in a particular machine will depend on the type of machine. For example, a portable machine (such as a mobile phone) may include a touch input device or other such input mechanism, while a headless server machine will likely not include such a touch input device. It will be appreciated that the I / O components 542 may include Figure 5 Many other components are not shown in the drawings. In various examples, the I / O components 542 may include output components 528 and input components 530. The output components 528 may include visual components (e.g., displays such as plasma display panels (PDPs), light emitting diode (LED) displays, liquid crystal displays (LCDs), projectors, or cathode ray tubes (CRTs)), acoustic components (e.g., speakers), tactile components (e.g., vibration motors, resistance mechanisms), other signal generators, etc. The input components 530 may include alphanumeric input components (e.g., keyboards, touch screens configured to receive alphanumeric input, optical keyboards, or other alphanumeric input components), point-based input components (e.g., mice, touch pads, trackballs, joysticks, motion sensors, or other pointing instruments), tactile input components (e.g., physical buttons, touch screens or other tactile input components that provide location, force, or touch gestures), audio input components (e.g., microphones), and the like.

[0053] In further examples, the I / O component 542 may include, among various other components, a biometric component 532, a motion component 534, an environmental component 536, or a position component 538. For example, the biometric component 532 includes components for detecting expressions (e.g., hand expressions, facial expressions, vocal expressions, body postures, or eye tracking), measuring biosignals (e.g., blood pressure, heart rate, body temperature, sweat, or brain waves), identifying people (e.g., voice recognition, retinal recognition, facial recognition, fingerprint recognition, or EEG-based recognition), etc. The motion component 534 includes an acceleration sensor component (e.g., an accelerometer), a gravity sensor component, a rotation sensor component (e.g., a gyroscope), etc. Environmental components 536 include, for example, lighting sensor components (e.g., a photometer), temperature sensor components (e.g., one or more thermometers that detect ambient temperature), humidity sensor components, pressure sensor components (e.g., a barometer), acoustic sensor components (e.g., one or more microphones that detect background noise), proximity sensor components (e.g., an infrared sensor that detects nearby objects), gas sensors (e.g., a gas detection sensor that detects concentrations of hazardous gases or measures pollutants in the atmosphere for safety purposes), or other components that can provide indications, measurements, or signals corresponding to the surrounding physical environment. Positioning components 538 include position sensor components (e.g., a GPS receiver component), altitude sensor components (e.g., an altimeter or barometer that detects air pressure from which altitude can be derived), orientation sensor components (e.g., a magnetometer), and the like.

[0054] Communication can be implemented using a variety of technologies. I / O components 542 also include communication components 540 that are operable to couple machine 500 to network 520 or device 522 via coupling 524 and coupling 526, respectively. For example, communication components 540 may include a network interface component or another suitable device that interfaces with network 520. In other examples, communication components 540 may include wired communication components, wireless communication components, cellular communication components, near field communication (NFC) components, Parts (such as Low energy), Components, and other communication components for providing communication via other modalities. Device 522 can be another machine or any of a variety of peripheral devices (e.g., a peripheral device coupled via USB).

[0055] In addition, the communication component 540 can detect an identifier or include a component operable to detect an identifier. For example, the communication component 540 can include a radio frequency identification (RFID) tag reader component, an NFC smart tag detection component, an optical reader component (e.g., an optical sensor for detecting one-dimensional bar codes such as Universal Product Code (UPC) bar codes, multi-dimensional bar codes such as Quick Response (QR) codes, Aztec codes, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2D bar codes, and other optical codes), or an acoustic detection component (e.g., a microphone for identifying a tag audio signal). In addition, various information can be derived via the communication component 540, such as location via Internet Protocol (IP) geolocation, location via Internet Protocol (IP), location information ... Location of signal triangulation, location of NFC beacon signals that can indicate a specific location via detection, etc.

[0056] Various memories (e.g., memory 504, main memory 512, static memory 514, memory of processor 502), storage unit 516 can store one or more sets of instructions and data structures (e.g., software) that embody or are used by any one or more of the methods or functions described herein. When these instructions (e.g., instructions 508) are executed by processor 502, they are used to implement various operations of the disclosed examples.

[0057] The instructions 508 may be transmitted or received over the network 520 using a transmission medium via a network interface device, such as a network interface component included in the communication component 540, and using any of a number of well-known transmission protocols, such as the Hypertext Transfer Protocol (HTTP). Similarly, the instructions 508 may be transmitted or received via a coupling 526 to the device 522, such as a peer-to-peer coupling, using a transmission medium.

[0058] Figure 6 6 is a block diagram 600 illustrating a software architecture 604 that can be installed on one or more of the devices described herein. The software architecture 604 is supported by hardware, such as a machine 602 including a processor 620, a memory 626, and I / O components 638. In this example, the software architecture 604 can be conceptualized as a stack of layers, where each layer provides specific functionality. The software architecture 604 includes layers such as an operating system 612, a library 610, a framework 608, and an application 606. In operation, the application 606 invokes an API call 650 through the software stack and receives a message 652 in response to the API call 650.

[0059] The operating system 612 manages hardware resources and provides common services. The operating system 612 includes, for example, a kernel 614, services 616, and drivers 622. The kernel 614 acts as an abstraction layer between the hardware and other software layers. For example, the kernel 614 provides memory management, processor management (such as scheduling), component management, networking and security settings, and other functions. Services 616 can provide other common services for other software layers. Drivers 622 are responsible for controlling or interfacing with the underlying hardware. For example, drivers 622 may include display drivers, camera drivers, or Low energy drivers, Flash memory drivers, serial communication drivers (such as Universal Serial Bus (USB) drivers), drivers, audio drivers, power management drivers, and more.

[0060] The library 610 provides a low-level common infrastructure used by the application 606. The library 610 may include a system library 618 (e.g., a C standard library) that provides functions such as memory allocation functions, string manipulation functions, mathematical functions, etc. In addition, the library 610 may include an API library 624, such as a media library (e.g., a library for supporting the presentation and manipulation of various media formats, such as Moving Picture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer 3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group (JPEG or JPG), or Portable Network Graphics (PNG)), a graphics library (e.g., an OpenGL framework for rendering graphics content in two dimensions (2D) and three dimensions (3D) on a display), a database library (e.g., SQLite for providing various relational database functions), a web library (e.g., WebKit for providing web browsing functions), etc. The library 610 may also include a variety of other libraries 628 to provide many other APIs to the application 606.

[0061] The framework 608 provides a high-level common infrastructure used by the applications 606. For example, the framework 608 provides various graphical user interface (GUI) functions, advanced resource management, and advanced location services. The framework 608 can provide a wide range of other APIs that can be used by the applications 606, some of which may be specific to a particular operating system or platform.

[0062] In an example, applications 606 may include a home application 636, a contacts application 630, a browser application 632, a book reader application 634, a location application 642, a media application 644, a messaging application 646, a game application 648, and various other applications such as third-party applications 640. An application 606 is a program that performs the functions defined in the program. Various programming languages ​​can be employed to create one or more applications 606 that are constructed in various ways, such as an object-oriented programming language (e.g., Objective-C, Java, or C++) or a procedural programming language (e.g., C or assembly language). In a specific example, a third-party application 640 (e.g., a program written by an entity other than the vendor of a particular platform using ANDROID) may be used to create one or more applications 606. TM or IOS TM Software Development Kit (SDK) can be used to develop applications on platforms such as IOS TM ANDROID TM 、 Mobile software running on the mobile operating system of the iPhone or another mobile operating system. In this example, the third party application 640 can enable API calls 650 provided by the operating system 612 to facilitate the functions described herein.

[0063] It will be understood that the terms and expressions used herein have the ordinary meanings given by such terms and expressions relative to their corresponding respective explorations and research fields, unless a specific meaning has been set forth herein in addition. Relational terms (such as first and second, etc.) can be used only to distinguish an entity or action from another entity or action, and do not necessarily require or imply any actual such relationship or order between such entities or actions. The terms "comprise," "include," "contain," "cover," or any other variations thereof are intended to encompass non-exclusive inclusions, such that the process, method, article, or device comprising or containing a list of elements or steps not only includes those elements or steps, but can also include other elements or steps that are not explicitly listed or that are inherent to such a process, method, article, or device. In the absence of further constraints, an element preceded by "one" or "an" does not exclude the presence of additional identical elements in the process, method, article, or device comprising the element.

[0064] Unless otherwise indicated, any and all measurements, values, ratings, positions, amplitudes, dimensions, and other specifications set forth in this specification (including the claims that follow) are approximate and not exact. These quantities are intended to have a reasonable range consistent with the functions to which they are related and with customary practice in the art to which they belong. For example, unless expressly stated otherwise, parameter values ​​or similar values, whether or not qualified by a term of degree (e.g., about, substantially, or approximately), may vary from the stated quantity by as much as ±10%.

[0065] The examples shown herein are described in sufficient detail to enable those skilled in the art to practice the disclosed teachings. Other examples may be used and derived therefrom, so that structural and logical substitutions and changes may be made without departing from the scope of the present disclosure. Therefore, the detailed description should not be construed in a limiting sense, and the scope of the various examples is limited only by the appended claims and the full range of equivalents to which such claims are entitled.

Claims

1. A method for scheduling tasks, the method comprising: receiving work requests; generating a task for executing the work request; Organizing said tasks; Store the grouped tasks in a queue; Retrieving the task from the queue; Unmarshal the retrieved tasks; The unmarshaled tasks are sent to at least one service executor for execution.

2. The method according to claim 1, wherein The work request is a remote procedure call.

3. The method according to claim 2, wherein: The remote procedure call includes a flag, and wherein the method further comprises: identifying a flag in the remote procedure call; The task is generated in response to the recognition of the marker.

4. The method according to claim 1, wherein The grouping includes: converting said task into bytes; Wherein the storing comprises storing the bytes in a persistent memory.

5. The method according to claim 4, wherein The search includes: retrieving the bytes from persistent storage; Wherein said unmarshalling comprises converting the retrieved bytes into said tasks.

6. The method according to claim 1, further comprising: Data for performing the grouped tasks is collected.

7. The method according to claim 6, further comprising: The grouped tasks are assigned and the collected data is provided to a repeater configured to ungroup the tasks.

8. A system for scheduling tasks, the system comprising: an interceptor configured to receive a work request, generate tasks for executing the work request, and marshal the tasks; a publisher configured to store the grouped tasks in a queue; as well as A repeater is configured to retrieve the tasks from the queue, unmarshal the retrieved tasks, and send the unmarshalled tasks to at least one service executor for execution.

9. The system according to claim 8, wherein: The work request is a remote procedure call including a flag, and wherein the interceptor is further configured to: identifying a flag in the remote procedure call; and The task is generated in response to the identification of the marker.

10. The system of claim 8, wherein the interceptor is further configured to: converting the task to bytes; and Send the bytes to the publisher.

11. The system according to claim 10, wherein: The publisher is also configured to: Store the bytes in persistent storage.

12. The system according to claim 11, wherein The repeater is further configured to: retrieving the bytes from persistent storage; and Convert the retrieved bytes into said task.

13. The system according to claim 8, wherein: The publisher is also configured to: Data for performing the grouped tasks is collected.

14. The system according to claim 13, wherein: The publisher is also configured to: assigning tasks to the grouped units and providing the collected data to the repeaters; The repeater is further configured to ungroup the tasks.

15. A non-transitory computer-readable storage medium storing instructions that, when executed by a server system, cause the server system to: receiving work requests; generating a task for executing the work request; Organizing said tasks; Store the grouped tasks in a queue; Retrieving the task from the queue; Unmarshal the retrieved tasks; as well as The unmarshaled tasks are sent to at least one service executor for execution.

16. The non-transitory computer-readable storage medium of claim 15, wherein: The work request is a remote procedure call.

17. The non-transitory computer-readable storage medium of claim 16, wherein: The instructions further cause the server system to: identifying a flag in the remote procedure call; Wherein, to generate the task, the instructions further cause the server system to generate the task in response to the identification of the marker.

18. The non-transitory computer-readable storage medium of claim 15, wherein: To group the tasks, the instructions further cause the server system to: converting said task into bytes; In order to store the grouped tasks in the queue, the instructions further cause the server system to store the bytes in a persistent memory.

19. The non-transitory computer-readable storage medium of claim 18, wherein: To retrieve the task from the queue, the instructions further cause the server system to: retrieving the bytes from persistent storage; To unpack the retrieved tasks, the instructions further cause the server system to convert the retrieved bytes into the tasks.

20. The non-transitory computer-readable storage medium of claim 15, wherein: The instructions further cause the server system to: collecting data for performing the grouped tasks; and The grouped tasks are assigned and the collected data is provided to a repeater configured to ungroup the tasks.