1. Field:
The invention relates to electronic commerce, and more particularly to an automated bid proxy for participating in online auctions.
2. Description of the Related Art
Online auctions provide a convenient medium for sale and resale of goods and services, and have grown rapidly in popularity. As popularity has grown, auction participants have become savvier about the competitive bidding process. For example, the technique of “sniping” has emerged, in which a participant places a single, last-minute (or last-second) bid. This technique aims to achieve tactical advantage by avoiding price run-ups that might result from numerous bidders who constantly seek to outbid one another.
In order to facilitate sniping, online services such as esnipe.com provide automated bid proxies that, automatically and under the control of a computer, place bids on behalf of users who wish to employ the technique of sniping. In practice, users have found that it is advantageous to use such automated bid proxies. This has led both to increasing demand for online services such as esnipe.com and to increasing load on the automated bid proxies provided by such online services.
Another development in the field of online auctions relates to a business practice of eBay, the leading online auction venue in the United States. This business practice tends to arrange the end times of numerous auctions so that they coincide. This coincident finish of numerous auctions can place tremendous load on an automated bid proxy that is attempting to place last-second bids in the auctions.
Unfortunately, the popularity of automated bid proxies combined with the aforementioned business practice of eBay can cause the load on an automated bid proxy to spike in the seconds leading up to the coincident close of auctions. Indeed, in these circumstances the automated bid proxy may become overloaded, which may cause some bids to be placed too late such as after the end of an auction.
There remains a need for an automated bid proxy that can predict and compensate for changes in load.
An automated bid proxy for online auctions transmits user-initiated bids to an online auction facility using dynamically adjusted bid times that vary from the user-specified or auction-specified bid times. This dynamic adjustment may advantageously distribute large bid loads over a time interval in order to reduce the peak load that is actually experienced by the automated bid proxy at times of high bid volume.
These and other systems, methods, objects, features, and advantages of the present invention will be apparent to those skilled in the art from the following detailed description of the preferred embodiment and the drawings.
All documents mentioned herein are hereby incorporated in their entirety by reference. References to items in the singular should be understood to include items in the plural, and vice versa, unless explicitly stated otherwise or clear from the text. Grammatical conjunctions are intended to express any and all disjunctive and conjunctive combinations of conjoined clauses, sentences, words, and the like, unless otherwise stated or clear from the context.
The foregoing and other objects and advantages of the invention will be appreciated more fully from the following further description thereof, with reference to the accompanying drawings wherein:
Embodiments of the invention are described below. As described, an embodiment relies on the instantiation of numerous, single-threaded computer processes. It is widely known that instantiating a computer process generally consumes considerably more computing resources than an alternate method: creating a thread of execution within a computer process. However, it is also widely known that debugging or understanding the behavior a multi-threaded computer process can be considerably more difficult than debugging or understanding a single-threaded computer process. Thus, those skilled in the art will appreciate that a multi-threaded implementation of the instant invention, as compared with an embodiment, might provide both particular advantages with respect to system performance and particular disadvantages with respect to developing and understanding the implementation of the invention. The following description is directed generally to a single-threaded implementation. However, it will be appreciated that the systems and methods described herein are expressly intended to encompass both single-threaded and multi-threaded implementations, as well as other implementations that will be appreciated from the following example embodiments thereof.
It will be appreciated that the techniques described herein may have wider applicability, such as to other systems where an automatic, last-minute or last-second bid or action is desirable, such as computerized trading in equities, derivatives, or other financial instruments.
In general, embodiments of the present invention operate to reduce peak loans by distributing periods of high bid volume over greater time intervals. It will be understood that such distributing may usefully accommodate a wide range of peak volumes and time intervals. For example, embodiments may employ a maximum bid time displacement from an original, user-requested bid time. Additionally or alternatively, embodiments may distribute excess bids over time so as to limit the number of bids that will be initiated during a particular time interval. Further, such a bid-time redistribution methodology may smoothly or abruptly transition from unadjusted to adjusted bid times, and while specific adjustment algorithms are described herein, it will be understood that a variety of redistribution techniques including random, pseudo-random, Gaussian, priority queue, FIFO, LIFO, and other statistical or other techniques may be usefully employed with the systems and methods described herein. Thus, a variety of design and operational constraints may be accommodated according to, for example, a processing capacity of the automated bid proxy, a bandwidth or quality of a network connection, a response time (published or measured) of an auction facility, and any and all other relevant constraints. Any and all such variations are intended to fall within the scope of this disclosure.
Referring now to
The network connections may be implemented according to the Internet Protocol Suite, which includes an Internet Protocol (IP) stack. The IP stack includes a link layer, an Internetwork layer, a transport layer, and an application layer. The link layer may include Ethernet, Wi-Fi, MPLS, and the like. The Internetwork layer may include the IP. The transport layer may include TCP, UDP, RTP, SCTP, and the like. The application layer may include HTTP, FTP, DNS, and the like.
The automated bid proxy 100 may include a server computer, such as a Dell PowerEdge rack server. The server may include a hard drive, RAM, CPU, and network interface of which the operative coupling between the automated bid proxy 100 and the internetwork 102 may be comprised. In embodiments, the automated bid proxy 100 may reside behind a firewall, and may include multiple server computers arranged in a clustered, replicated, or distributed configuration. The server may include an operating system, such as a variant of the UNIX operating system.
The online auction facility 104 may include a server computer, such as a Dell PowerEdge rack server. The server may include a hard drive, RAM, CPU, and a network interface including an operative coupling between the online auction facility 104 and the internetwork 102. In embodiments, the online auction facility 104 may further include a firewall and/or load balancer behind which the server computer may reside. The online auction facility 104 may include multiple server computers arranged in a clustered, replicated, or distributed configuration, or combinations of the foregoing. In an embodiment, the online auction facility 104 includes the Web systems of eBay. The online auction facility 104 may provide an online auction service in which an item may be provided for sale in an auction format, with bids accepted electronically via the internetwork 102. The auction may be identified by a unique auction identifier and may have an end time at which the auction closes.
In general, the automated bid proxy 100 may provide a user interface, such as a web server page accessible through the internetwork 102, through which users may configure bids for submission to the online auction facility 104. From time to time, the automated bid proxy 100 may transmit a signal, such as a data packet or set of data packets, to the online auction facility 104 via the internetwork 102. In an embodiment, the transmission of the signal is performed via the HTTP protocol over TCP/IP. The signal may include a bid for one or more items available for auction at the auction facility 104.
Referring now to
Referring now to
Referring now to
In an alternate embodiment, the bid table 200 may be managed by a relational database management system. In this case, the bid table 200 may not be loaded into a region of memory associated with the instance of the bid count module 302. Instead, the instance of the bid count module 302 may access the bid table 200 through the relational database management system (RDBMS), such as by issuing SQL queries to the RDBMS and receiving responses to those queries from the RDBMS.
It should be appreciated that references herein to uses of memory (such as loading something into or allocating a region of memory) should be broadly construed, and may include use of an RDBMS or other suitable alternative to random access memory for storing, retrieving, and/or modifying data, program states, and the like.
Referring now to
In an embodiment, an approximately 45-second range of PERFECT_BID values may be included in the histogram 600. This range may be defined to be between 90 and 120 seconds in the future at the time that the histogram 600 is created. By defining the range in this way, the system may process a 45-second set of future bids, 90 to 120 seconds in advance of when the first bid in the set would, in a perfect world, be executed. The size of this range, 45 seconds, may define a corresponding period of the time to dynamically adjust bids as described above with reference to
A bin count is a literal indication of the number of bids that would ideally be placed at a future time. Since placing a bid may impart some load on the automated bid proxy 100, the bin count may be a predictor of the load that might be on the automated bid proxy 100 at the future time. Thus, generally speaking, a predicted load on the automated bid proxy 100 may be proportional to a bin count in the histogram 600.
Referring now to
Referring now to
For pedagogical reasons, the rows of the adjusted bid table 900 are sorted both in ascending order based upon the bid stagger values in the STAGGER_MS fields and in descending order based upon the bid offset values in the OFFSET_S field. The bid offset method 1000 and the bid stagger method 1100, as described hereinafter with references to
The bid offset value may represent a delta between a perfect bid time and a realistically achievable bid time. The realistic bid time may be a time or an estimate of a time at which the automated bid proxy 100 may realistically be able to place an associated bid. The bid stagger value may represent a delta between the realistic bid time and the actual time at which the bid may be placed. When applied to the perfect bid times, the bid stagger values and the bid offset values have the effect of spreading the actual bid times both across seconds and within seconds. By spreading bids in this manner, the loads imposed on the automated bid proxy 100 (and on the online auction facility 104, for that matter) may be spread out over time, thus avoiding an overload condition that might otherwise develop.
Referring to
Referring now to
It will be appreciated that the timing of the bid may have been dynamically adjusted by the methods and systems described hereinabove. As a result, the peak load that is actually experienced by the automated bid proxy 100 may be less than it would have been had the timing of the bid not been dynamically adjusted.
The elements depicted in flow charts and block diagrams throughout the figures imply logical boundaries between the elements. However, according to software or hardware engineering practices, the depicted elements and the functions thereof may be implemented as parts of a monolithic software structure, as standalone software modules, or as modules that employ external routines, code, services, and so forth, or any combination of these, and all such implementations are within the scope of the present disclosure. Thus, while the foregoing drawings and description set forth functional aspects of the disclosed systems, no particular arrangement of software for implementing these functional aspects should be inferred from these descriptions unless explicitly stated or otherwise clear from the context.
Similarly, it will be appreciated that the various steps identified and described above may be varied, and that the order of steps may be adapted to particular applications of the techniques disclosed herein. All such variations and modifications are intended to fall within the scope of this disclosure. As such, the depiction and/or description of an order for various steps should not be understood to require a particular order of execution for those steps, unless required by a particular application, or explicitly stated or otherwise clear from the context.
The methods or processes described above, and steps thereof, may be realized in hardware, software, or any combination of these suitable for a particular application. The hardware may include a general-purpose computer and/or dedicated computing device. The processes may be realized in one or more microprocessors, microcontrollers, embedded microcontrollers, programmable digital signal processors or other programmable device, along with internal and/or external memory. The processes may also, or instead, be embodied in an application specific integrated circuit, a programmable gate array, programmable array logic, or any other device or combination of devices that may be configured to process electronic signals. It will further be appreciated that one or more of the processes may be realized as computer executable code created using a structured programming language such as C, an object oriented programming language such as C++, or any other high-level or low-level programming language (including assembly languages, hardware description languages, and database programming languages and technologies) that may be stored, compiled or interpreted to run on one of the above devices, as well as heterogeneous combinations of processors, processor architectures, or combinations of different hardware and software.
Thus, in one aspect, each method described above and combinations thereof may be embodied in computer executable code that, when executing on one or more computing devices, performs the steps thereof. In another aspect, the methods may be embodied in systems that perform the steps thereof, and may be distributed across devices in a number of ways, or all of the functionality may be integrated into a dedicated, standalone device or other hardware. In another aspect, means for performing the steps associated with the processes described above may include any of the hardware and/or software described above. All such permutations and combinations are intended to fall within the scope of the present disclosure.
While the invention has been disclosed in connection with the preferred embodiments shown and described in detail, various modifications and improvements thereon will become readily apparent to those skilled in the art. Accordingly, the spirit and scope of the present invention is not to be limited by the foregoing examples, but is to be understood in the broadest sense allowable by law.
This application claims the benefit of U.S. Provisional Pat. App. No. 60/777,950, filed Feb. 28, 2006, the contents of which are hereby incorporated by reference in their entirety.
Number | Date | Country | |
---|---|---|---|
60777950 | Feb 2006 | US |