Not Applicable.
1. Field of the Invention
This invention relates generally to the field of processing requests to an information retrieval system, and, more particularly, to methods and systems for selectively altering the processing of a request based on a potential value of the request.
2. Related Art
Many information retrieval systems exist for providing users with online access to information. For example, a retailer may provide a website that includes a product search engine. Users can submit queries to the product search engine to identify products that match the criteria of the queries.
One problem that such information retrieval systems face is receiving requests at an excessive rate. For example, in the case of a product search engine, if search queries are being received at a rate that approaches or exceeds the engine's capacity, the engine may slow or crash. To prevent the system from slowing or crashing, many systems implement a process of randomly dropping search queries. In other words, these systems monitor the rate at which requests are received, and begin randomly slowing or dropping requests if the rate exceeds some threshold.
This approach effectively prevents the system from becoming overloaded. However, the random slowing or dropping of requests can make the system less desirable to use. For example, if a user's request to the service is dropped, the user may be encouraged to use a different service to obtain desired information.
The specific features, aspects and advantages of the present invention will become better understood with regard to the following description and accompanying drawings where:
The present invention extends to methods, systems, and computer program products for selectively altering the processing of a request based on a potential value of the request.
In the following description of the present invention, reference is made to the accompanying drawings, which form a part hereof, and in which is shown by way of illustration specific embodiments in which the invention is may be practiced. It is understood that other embodiments may be utilized and structural changes may be made without departing from the scope of the present invention.
Embodiments of the present invention may comprise or utilize a special purpose or general-purpose computer including computer hardware, such as, for example, one or more processors and system memory, as discussed in greater detail below. Embodiments within the scope of the present invention also include physical and other computer-readable media for carrying or storing computer-executable instructions and/or data structures. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer system. Computer-readable media that store computer-executable instructions are computer storage media (devices). Computer-readable media that carry computer-executable instructions are transmission media. Thus, by way of example, and not limitation, embodiments of the invention can comprise at least two distinctly different kinds of computer-readable media: computer storage media (devices) and transmission media.
Computer storage media (devices) includes RAM, ROM, EEPROM, CD-ROM, solid state drives (“SSDs”) (e.g., based on RAM), Flash memory, phase-change memory (“PCM”), other types of memory, other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer.
A “network” is defined as one or more data links that enable the transport of electronic data between computer systems and/or modules and/or other electronic devices. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a transmission medium. Transmissions media can include a network and/or data links which can be used to carry desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. Combinations of the above should also be included within the scope of computer-readable media.
Further, upon reaching various computer system components, program code means in the form of computer-executable instructions or data structures can be transferred automatically from transmission media to computer storage media (devices) (or vice versa). For example, computer-executable instructions or data structures received over a network or data link can be buffered in RAM within a network interface module (e.g., a “NIC”), and then eventually transferred to computer system RAM and/or to less volatile computer storage media (devices) at a computer system. RAM can also include solid state drives (SSDs or PCIx based real time memory tiered Storage, such as FusionIO). Thus, it should be understood that computer storage media (devices) can be included in computer system components that also (or even primarily) utilize transmission media.
Computer-executable instructions comprise, for example, instructions and data which, when executed at a processor, cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or even source code. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the described features or acts described above. Rather, the described features and acts are disclosed as example forms of implementing the claims.
Those skilled in the art will appreciate that the invention may be practiced in network computing environments with many types of computer system configurations, including, personal computers, desktop computers, laptop computers, message processors, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, tablets, pagers, routers, switches, various storage devices, and the like. The invention may also be practiced in distributed system environments where local and remote computer systems, which are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network, both perform tasks. In a distributed system environment, program modules may be located in both local and remote memory storage devices.
Embodiments of the invention can also be implemented in cloud computing environments. In this description and the following claims, “cloud computing” is defined as a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned via virtualization and released with minimal management effort or service provider interaction, and then scaled accordingly. A cloud model can be composed of various characteristics (e.g., on-demand self-service, broad network access, resource pooling, rapid elasticity, measured service, etc.), service models (e.g., Software as a Service (SaaS), Platform as a Service (PaaS), Infrastructure as a Service (IaaS), and deployment models (e.g., private cloud, community cloud, public cloud, hybrid cloud, etc.). Databases and servers described with respect to the present invention can be included in a cloud model.
Further, where appropriate, functions described herein can be performed in one or more of: hardware, software, firmware, digital components, or analog components. For example, one or more application specific integrated circuits (ASICs) can be programmed to carry out one or more of the systems and procedures described herein. Certain terms are used throughout the following description and Claims to refer to particular system components. As one skilled in the art will appreciate, components may be referred to by different names. This document does not intend to distinguish between components that differ in name, but not function.
The present invention is generally directed to methods, systems, and computer program products for selectively altering the processing of a request based on a potential value of the request. When an undesirably high number of requests are being received by a server system providing an information retrieval system, the server system can identify requests that have a potential value greater than a potential value of one or more other requests. The server system can then alter the processing the requests having the lower potential value thereby ensuring that requests with higher potential value are processed adequately.
In one embodiment, the present invention is implemented as method for selectively altering the processing of a request based on a potential value of the request. A request is received from each of plurality of client computer systems. Each request requests access to a service provided by an information retrieval system. For each of the plurality of requests, content associated with the request is accessed to generate a potential value of the request. The potential value of each of the plurality of requests is compared to determine a first request having a potential value that is less than the potential value of at least some of the other requests. Based on the comparison, either the processing of the first request is slowed or the first request is dropped.
Computing device 100 includes one or more processor(s) 102, one or more memory device(s) 104, one or more interface(s) 106, one or more mass storage device(s) 108, one or more Input/Output (I/O) device(s) 110, and a display device 130 all of which are coupled to a bus 112. Processor(s) 102 include one or more processors or controllers that execute instructions stored in memory device(s) 104 and/or mass storage device(s) 108. Processor(s) 102 may also include various types of computer storage media, such as cache memory.
Memory device(s) 104 include various computer storage media, such as volatile memory (e.g., random access memory (RAM) 114) and/or nonvolatile memory (e.g., read-only memory (ROM) 116). Memory device(s) 104 may also include rewritable ROM, such as Flash memory.
Mass storage device(s) 108 include various computer storage media, such as magnetic tapes, magnetic disks, optical disks, solid state memory (e.g., Flash memory), and so forth. As depicted in
I/O device(s) 110 include various devices that allow data and/or other information to be input to or retrieved from computing device 100. Example I/O device(s) 110 include cursor control devices, keyboards, keypads, barcode scanners, microphones, monitors or other display devices, speakers, printers, network interface cards, modems, cameras, lenses, CCDs or other image capture devices, and the like.
Display device 130 includes any type of device capable of displaying information to one or more users of computing device 100. Examples of display device 130 include a monitor, display terminal, video projection device, and the like.
Interface(s) 106 include various interfaces that allow computing device 100 to interact with other systems, devices, or computing environments as well as humans. Example interface(s) 106 can include any number of different network interfaces 120, such as interfaces to personal area networks (PANs), local area networks (LANs), wide area networks (WANs), wireless networks (e.g., near field communication (NFC), Bluetooth, Wi-Fi, etc, networks), and the Internet. Other interfaces include user interface 118 and peripheral device interface 122.
Bus 112 allows processor(s) 102, memory device(s) 104, interface(s) 106, mass storage device(s) 108, and I/O device(s) 110 to communicate with one another, as well as other devices or components coupled to bus 112. Bus 112 represents one or more of several types of bus structures, such as a system bus, PCI bus, IEEE 1394 bus, USB bus, and so forth.
Each of the depicted systems can be connected to one another over (or be part of) a network 103, such as, for example, a PAN, a LAN, a WAN, and even the Internet. Accordingly, each of the depicted devices and computer systems as well as any other connected computer systems and their components, can create message related data and exchange message related data (e.g., near field communication (“NFC”) payloads, Bluetooth packets, Internet Protocol (“IP”) datagrams and other higher layer protocols that utilize IP datagrams, such as, Transmission Control Protocol (“TCP”), Hypertext Transfer Protocol (“HTTP”), Simple Mail Transfer Protocol (“SMTP”), etc.) over the network.
Server system 201 provides an information retrieval system 203 that can be accessed by client systems 202a-202n. The information retrieval system can include one or more services. In some embodiments, information retrieval system 203 includes a product search engine service that processes requests to view information about products available for purchase.
Client systems 202a-202n send requests to server system 201 requesting access to the one or more services provided by information retrieval system 203. Generally, server system 201 can respond to these requests as they are received. However, if the rate at which the requests are received exceeds a threshold, server system 201 may no longer be capable of processing the requests in an appropriate manner. Accordingly, server system 201 can include functionality for selectively altering the processing of a request based on a potential value of the request.
When it is determined that the amount of resources available for processing requests is below a threshold, request processor 310 can commence selectively altering the processing of some of the received requests. For example, because some requests may be more important or valuable than others, request processor 310 can employ a scheme for identifying and altering the processing of requests with a lower potential value, while allowing requests with a higher potential value to be processed as usual.
Value determining module 311 can access content 350-352 to use the content in generating one or more potential values (or scores) of the associated request. Value determining module 311 can determine a relative value of some types of content (e.g., empirical content) directly from the content itself. With other types of content (e.g., semantic content), however, value determining module 311 can access a database 400 to identify the relative value of the content. The relative value of the various types of content in a request can be combined in some manner to generate the potential value of the request.
In some cases, value determining module 311 can generate multiple potential values for a single request. For example, each potential value may be generated using different criteria (e.g., different combinations of the content associated with the request). In such cases, a potential value can be generated for each set of different criteria. For example, the relative value assigned to a request based on the type of service to which the request is directed may be higher in some potential value calculations than in others.
Once value determining module 311 has determined a potential value of each request, request processor 310 can use these potential values to determine whether to alter the processing of any of the requests. For example, returning to
Method 600 includes receiving, from each of plurality of client computer systems, a request to access a service provided by an information retrieval system (601). For example, request processor 310 can receive requests 301a-301n from client systems 202a-202n. Each of requests 301a-301n can request access to one of services 312a-312n.
Method 600 includes for each of the plurality of requests, accessing content associated with the request to generate a potential value of the request (602). For example, value determining module 311 can access content contained within requests 301a-301n (e.g., content 350-352) and/or content associated with requests 301a-301n but stored external to requests 301a-301n (e.g., content in database 400). Potential value algorithm 500 can process accessed content according to various combinations of criteria (e.g., criteria 501) to generate one or more potential values 502 for each request 301a-301n.
Method 600 includes comparing the potential value of each of the plurality of requests to determine a first request having a potential value that is less than the potential value of at least some of the other requests (603). For example, request processor 310 can determine that a potential value assigned to request 301b is less than a potential value assigned to request 301a and 301n.
Method 600 includes based on the comparison, performing one or both of: slowing the processing of the first request, or dropping the first request (604). For example, request processor 310 can cause request 301b to be dropped or cause the processing of request 301b to be slowed.
Although the components and modules illustrated herein are shown and described in a particular arrangement, the arrangement of components and modules may be altered to process data in a different manner. In other embodiments, one or more additional components or modules may be added to the described systems, and one or more components or modules may be removed from the described systems. Alternate embodiments may combine two or more of the described components or modules into a single component or module.
The foregoing description has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. Further, it should be noted that any or all of the aforementioned alternate embodiments may be used in any combination desired to form additional hybrid embodiments of the invention.
Further, although specific embodiments of the invention have been described and illustrated, the invention is not to be limited to the specific forms or arrangements of parts so described and illustrated. The scope of the invention is to be defined by the claims appended hereto, any future claims submitted here and in different applications, and their equivalents.