US20110153833A1 - Rate provisioner for web services - Google Patents
Rate provisioner for web services Download PDFInfo
- Publication number
- US20110153833A1 US20110153833A1 US13/037,056 US201113037056A US2011153833A1 US 20110153833 A1 US20110153833 A1 US 20110153833A1 US 201113037056 A US201113037056 A US 201113037056A US 2011153833 A1 US2011153833 A1 US 2011153833A1
- Authority
- US
- United States
- Prior art keywords
- server location
- subscriber
- web services
- server
- allocation
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
Definitions
- Embodiments of the invention relate to the field of web services, and more specifically to limiting Web services calls at one or more server locations.
- FIG. 1 is a schematic diagram of an embodiment, such as one or more server locations;
- FIG. 2 is a schematic diagram of an embodiment, such as a one or more server locations including call limiters;
- FIG. 3 is a flowchart of a method in accordance with an embodiment
- FIG. 4 is a schematic diagram of an embodiment, including a rate limit provisioner.
- the terms, “and,” “or,” and “and/or” as used herein may include a variety of meanings that will depend at least in part upon the context in which it is used. Typically, “and/or” if used to associate a list, such as A, B and/or C, is intended to mean A, B, or C as well as A, B and C. Though, it should be noted that this is merely an illustrative example and claimed subject matter is not limited to this example.
- terms such as “processing,” “computing,” “calculating,” “selecting,” “forming,” “enabling,” “inhibiting,” “identifying,” “initiating,” “querying,” “obtaining,” “hosting,” “maintaining,” “representing,” “modifying,” “receiving,” “transmitting,” “storing,” “authenticating,” “authorizing,” “hosting,” “determining” and/or the like refer to actions and/or processes that may be performed by a system, such as a computer and/or other computing platform, capable of manipulating and/or transforming data which may be represented as electronic, magnetic and/or other physical quantities within the system's processors, memories, registers, and/or other information storage, transmission, reception and/or display devices.
- a computing platform refers to a system or a device that includes the ability to process and/or store data in the form of signals or electronic data.
- a computing platform in this context, may comprise hardware, software, firmware and/or any combination thereof.
- a process as described herein, with reference to flow diagrams or otherwise may also be executed and/or controlled, in whole or in part, by a computing platform.
- FIG. 1 depicts a schematic diagram of a system 100 in accordance with an embodiment.
- system 100 may comprise one or more server locations, such as server locations 102 , 104 , and/or 106 .
- server location may mean a logical and/or physical location of one or more servers organized into one or more groups.
- server refers to a computing platform or computer operable to provide a service to one or more other computing platforms or computers via a network. These services may include access to data and/or access to one or more software applications.
- the various server locations may comprise geographically distinct data centers, which may under some circumstances be referred to as co-located data centers, or colos.
- a server location may comprise one or more servers operable to perform one or more data center functions, such as process and/or respond to one or more web services calls, such as one or more Application Program interface (API) calls, from one or more clients, such as client 107 , for example.
- a “Web service” as used herein relates to a method of integrating applications using an Internet protocol ( 1 P) infrastructure.
- standard protocols may be employed to transmit data objects among components over an Internet protocol such as, for example, HTTP, HTTPS, XML, REST, SOAP, WSDL and/or UDDI standards.
- XML may be used to tag data objects
- SOAP may be used to transfer data objects
- WSDL may be used to describe available services
- UDDI may be used to list available services.
- a Web service may allow independently created and implemented applications from different network sources to communicate with one another.
- a Web service may comprise a “remote service” that is capable of communicating with one or more components of an application over a data link.
- client 107 may be associated with various subscribers or subscription based web services, for example.
- web services may include, but are in no way limited to, web searches, stock quotes, and/or other web based applications.
- a web search web services provider may limit a subscriber to a determined number of API call per day.
- a stock quotes web services may license their content via a web service and may limit a licensee to a determined number of calls per day.
- client 107 may initiate one or more web services calls via a network 105 , which, may be directed to one of server locations 102 , 104 , and/or 106 .
- the web service calls may be directed to a particular one of the server locations, based on a number of factors including, type of service request, geographic relationship between client 107 and the server locations, downtime for one of the server locations, and/or current resources available at the different server locations to name but a few examples.
- U.S. Pat. No. 7,231,445 shows one example technique for distributing web service requests. Though, it should be noted that these are merely illustrative examples relating to web services requests and that claimed subject matter is not limited in this regard.
- the server locations may also comprise a rate limiter, such as rate limiter 108 of server location 102 , for example.
- a rate limiter may mean a hardware, firmware, or software component operable to monitor web services calls at least in part to prevent subscribers from exceeding an agreed upon limit to their web services usage.
- a subscriber may agree to limits on their use of one or more web services. These limits may include a limited amount of data transfer during one or more time periods, a limited number of API calls during one or more time periods, limits to access during certain parts of the day, a specific service level limit, such as a data transfer rate limit or and API call rate limit, and/or a prepaid limit to the amount of data and/or API calls, to name but a few examples.
- each of server locations 102 , 104 , and/or 106 may include a rate limiter along a service request pipeline associated with that server location.
- a rate limiter may be implemented as a server plug-in module for server 110 at server location 104 .
- the server plug-in module at server 110 may be operable to receive web services calls directed to server location 104 and may be further operable to communicate with one or more plug-ins at various servers associated with server location 104 .
- a rate limiter may be implemented as a separate server 112 at server location 106 .
- server 112 may be operable to receive web services calls directed to server location 106 .
- a rate limiter may be implemented as a software program on a computing platform providing web services.
- rate limiter 108 may be implemented as a combination of the previously discussed implementations.
- communication between the rate limiters and the server locations may be asynchronous and/or synchronous. It should, however, be noted that these are merely illustrative examples of a rate limiter and that claimed subject matter is not limited in this regards.
- rate limiter 108 may be operable to enforce a server location specific web services call limit on a per subscriber, client, or customer basis.
- rate limiter 108 may, under some circumstances, be configured to receive or intercept one or more web services requests, such as API calls, directed to one of the server locations, such as server location 102 .
- rate limiter 108 may be placed in one or more positions along a web services call processing pipeline, such that rate limiter 108 may be operable to interact with a web services call prior to that call being processed by a server.
- rate limiter 108 may extract a client or subscriber ID from the web services request.
- Rate limiter 108 may further keep track of the web services requests associated with particular subscribers, such as client 107 , for example.
- rate limiter 108 may include a web services call limit associated with client 107 , such as a subscriber limit, and, if a web services call is received from client 107 then rate limiter 108 may decrement a counter corresponding to the subscriber limit.
- the terms “call limit” and/or “subscriber limit” may mean a contractual or agreed upon limit for service requests within a specified time period, such as a limit on the number of service requests or API calls within a day, an hour, or a month, for example.
- rate limiter 108 may keep a real time record of how many web services calls may remain for client 107 .
- rate limiter 108 may keep a real time record of how many web services calls have been received from client 107 and check that number against a subscriber limit before allowing the web services call to be processed by server location 102 , for example. It should be noted that these are merely illustrative examples relating to a call limiter and that claimed subject matter is not limited in this regard.
- FIG. 2 is a schematic diagram depicting one or more interactions among server locations in accordance with an embodiment.
- an embodiment 200 may comprise server locations 202 and 204 which may, under some circumstances, communicate via network 206 .
- server location 202 may comprise one or more servers, such as servers 208 , 209 , 210 , and/or 211 , for example.
- server location 202 may further comprise a rate limiter 212 .
- rate limiter 212 may comprise a lease manager 214 and/or a counter 216 , for example.
- server location 204 may comprises one or more servers, such as servers 218 , 219 , 220 , and/or 221 , for example.
- server location 204 may further comprise a rate limiter 222 .
- rate limiter 222 may comprise a lease manager 224 and/or a counter 226 , for example
- rate limiter 212 may, under some circumstances intercept the web services call. Rate limiter 212 may then determine an identity or subscriber associated with client 230 at least in part to determine whether client 230 has web services calls remaining at server location 202 , for example. In this embodiment, rate limiter 212 may use counter 216 to determine whether any web services calls remain for client 230 . If web services calls remain available for client 230 , then rate limiter 212 may allow the web services call to be processed by one of servers 208 - 211 , for example.
- rate limiter 212 may use lease manager 214 to attempt to lease additional web services calls from another server location, such as server location 204 , for example.
- rate limiter 212 may send a message to server location 204 to determine whether additional web services calls are available for client 230 at server location 204 .
- Server location 204 may pass this message to rate limiter 222 .
- rate limiter 222 may then use lease manager 224 and/or counter 226 to determine if web services calls for client 230 are available. If web services calls for client 230 are available, then server location 204 may inform server location 202 that web services calls are available.
- rate limiter 212 and/or lease manager 214 may request to lease additional web service calls from server location 204 . If the request is accepted by server location 204 , then lease manager 224 may subtract the leased web services calls from counter 226 , while lease manager 214 may add the leased web services calls to counter 216 , for example. After completing the lease transaction with server location 204 , rate limiter 212 may allow the web services call from client 230 to be processed by one of servers 208 - 211 , and decrement the updated subscriber limit. Likewise, under some circumstances, server location 204 may attempt to lease web services calls from server location 202 at least in part to process web service calls from a client, such as client 230 , for example. Though, it should be noted that these are merely illustrative examples of a rate limiter and that claimed subject matter is not limited in these regards.
- FIG. 3 comprises a flowchart of a method in accordance with an embodiment.
- a server location may receive a web services request, such as from a client as discussed above.
- the server location may determine whether the client has reached a subscriber limit associated with the web services request. If the server location determines that the subscriber limit has not been reached then at box 304 , the server location may decrement the subscriber limit and at box 306 allow the web services request to be processed. If, however, the server location determines that the subscriber limit has been reached, then at box 308 the server location will not be able to process the web services request unless it is able to lease additional web service requests from another server location.
- the server location may determine whether other server locations are available to lease requests from. If no other server locations are available, then at box 312 the server location denies the web services request. For example, the other server locations may have already been contacted and indicated that they did not have any calls available for lease, in which case the server location would deny the web services request. Though, again, it should be noted that these are merely illustrative examples of a method of processing a web service request and that claimed subject matter is not limited in this regard.
- the server location will attempt to contact the next server location on a list of server locations.
- the server location may include a list of all other server locations operable to process certain types of web services requests from particular clients.
- the server may then contact the next server location on the list whenever it has reached a subscriber limit for a particular client and attempt to lease additional web services calls for that client.
- the next server location will provide the first server location with information detailing the number of subscriber calls left for the client at that location.
- the server location will determine, based on the response received from the contacted other server location, whether additional usage is available for lease.
- server location will return to box 310 and attempt to contact a next server location on the list. If no additional server locations are available, then the server location will deny the request. If however, usage is available for lease, then the server location will proceed to box 320 , and update the subscriber limit to include the leased usage and decrement the subscriber limit to reflect the current web services request. The server location will then proceed to box 322 and allow the web services request to be processed. Though, again, these are merely illustrative examples of leasing additional webs service requests and claimed subject matter is not limited in this regard.
- FIG. 4 is a schematic diagram of a system 400 in accordance with an embodiment.
- system 400 may comprise a server location 402 , a server location 404 , and/or a rate limit provisioner 406 .
- Server location 402 may comprise servers 407 , 408 , 409 , and/or 410 , along with a rate limiter 412 , for example.
- server location 404 may comprise servers 413 , 414 , 415 , and/or 416 , along with a rate limiter 418 .
- rate limit provisioner 406 may comprise a computing platform operable to communicate with server locations 402 and/or 404 and/or rate limiters 412 and/or 414 .
- rate limit provisioner 406 may be operable to communicate with the server locations to set an initial subscriber limit for each of the server locations.
- the initial subscriber limit may comprise an equal portion of a subscriber's contractually agreed web service calls. In this example, that would mean each server location would initially be assigned one-half of a client's web service requests for a determined period of time. Alternatively, if more than two server locations were involved the initial subscriber limits could still be equally divided among the various server locations.
- rate limit provisioner 406 may set the initial subscriber limits based on one or more preferences determined by the subscriber. Though, it should be noted that these are merely illustrative examples of determining an initial subscriber limit and that claimed subject matter is not limited in this regard.
- rate limit provisioner 406 may adapt a distribution of a particular client's web services calls based on one or more learned aspects of that particular client.
- rate limit provisioner 406 may determine over time that a higher percentage of web service calls are processed by server location 402 than by server location 404 . This difference could be due to any number of factors, including geographic proximity of the client to the two server locations, differences in capacity at the two server locations, differences in demands placed upon the two server locations by other clients or subscribers, to name but a few factors.
- rate limit provisioner 406 may, when distributing subsequent initial call limits for a particular client, take into account such learned characteristics of the particular client when determining an initial distribution.
- rate limit provisioner 406 may distribute the overall subscriber limit for a particular client so that each of server locations 402 and 404 have an initial limit that is proportional to the historic percentage of calls handled by each server location for that particular client.
- rate limit provisioner 406 may distribute the overall subscriber limit for a particular client so that each of server locations 402 and 404 have an initial limit that is proportional to the historic percentage of calls handled by each server location for that particular client.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
Abstract
Embodiments of methods, apparatuses, devices and systems associated with web services are disclosed.
Description
- Embodiments of the invention relate to the field of web services, and more specifically to limiting Web services calls at one or more server locations.
- In the field of web services it may be desirable to limit access to the web services based on contractual terms with one or more web-services subscribers. In addition, under some circumstances, it may be desirable to deliver web services from servers and/or data centers having one or more locations.
- Subject matter is particularly pointed out and distinctly claimed in the concluding portion of the specification. Claimed subject matter, however, both as to organization and method of operation, together with objects, features, and advantages thereof, may best be understood by reference of the following detailed description when read with the accompanying drawings in which:
-
FIG. 1 is a schematic diagram of an embodiment, such as one or more server locations; -
FIG. 2 is a schematic diagram of an embodiment, such as a one or more server locations including call limiters; -
FIG. 3 is a flowchart of a method in accordance with an embodiment; and -
FIG. 4 is a schematic diagram of an embodiment, including a rate limit provisioner. - In the following detailed description, numerous specific details are set forth to provide a thorough understanding of the claimed subject matter. However, it will be understood by those skilled in the art that the claimed subject matter may be practiced without these specific details. In other instances, methods, procedures, components and/or circuits that would be known by one of ordinary skill have not been described in detail so as not to obscure the claimed subject matter.
- Reference throughout this specification to “one embodiment” or “an embodiment” may mean that a particular feature, structure, or characteristic described in connection with a particular embodiment may be included in at least one embodiment of claimed subject matter. Thus, appearances of the phrase “in one embodiment” and/or “an embodiment” in various places throughout this specification are not necessarily intended to refer to the same embodiment or to any one particular embodiment described. Furthermore, it is to be understood that particular features, structures, and/or characteristics described may be combined in various ways in one or more embodiments. In general, of course, these and other issues may vary with the particular context. Therefore, the particular context of the description and the usage of these terms may provide helpful guidance regarding inferences to be drawn for that particular context.
- Likewise, the terms, “and,” “or,” and “and/or” as used herein may include a variety of meanings that will depend at least in part upon the context in which it is used. Typically, “and/or” if used to associate a list, such as A, B and/or C, is intended to mean A, B, or C as well as A, B and C. Though, it should be noted that this is merely an illustrative example and claimed subject matter is not limited to this example.
- Unless specifically stated otherwise, throughout this specification, terms such as “processing,” “computing,” “calculating,” “selecting,” “forming,” “enabling,” “inhibiting,” “identifying,” “initiating,” “querying,” “obtaining,” “hosting,” “maintaining,” “representing,” “modifying,” “receiving,” “transmitting,” “storing,” “authenticating,” “authorizing,” “hosting,” “determining” and/or the like refer to actions and/or processes that may be performed by a system, such as a computer and/or other computing platform, capable of manipulating and/or transforming data which may be represented as electronic, magnetic and/or other physical quantities within the system's processors, memories, registers, and/or other information storage, transmission, reception and/or display devices. Accordingly, a computing platform refers to a system or a device that includes the ability to process and/or store data in the form of signals or electronic data. Thus, a computing platform, in this context, may comprise hardware, software, firmware and/or any combination thereof. Further, unless specifically stated otherwise, a process as described herein, with reference to flow diagrams or otherwise, may also be executed and/or controlled, in whole or in part, by a computing platform.
- In the field of web services it may, under some circumstances, be desirable to use distributed data centers, or server locations, to process client requests for web services. For example, it may be desirable to have server locations in one or more geographic regions. Furthermore, clients and/or subscribers may agree to one or more contractual terms for web services. However, with distributed data centers it may be difficult to limit a subscriber to the agreed upon terms for the web services. For example, for a web service delivered by several possible server locations, it may be difficult to limit the subscriber appropriately because some service requests may be processed by different server locations.
-
FIG. 1 depicts a schematic diagram of asystem 100 in accordance with an embodiment. With reference toFIG. 1 ,system 100 may comprise one or more server locations, such as 102, 104, and/or 106. As used herein, the term “server location” may mean a logical and/or physical location of one or more servers organized into one or more groups. As used herein the term “server” refers to a computing platform or computer operable to provide a service to one or more other computing platforms or computers via a network. These services may include access to data and/or access to one or more software applications. For example, in this embodiment, the various server locations may comprise geographically distinct data centers, which may under some circumstances be referred to as co-located data centers, or colos. In this embodiment, a server location may comprise one or more servers operable to perform one or more data center functions, such as process and/or respond to one or more web services calls, such as one or more Application Program interface (API) calls, from one or more clients, such asserver locations client 107, for example. A “Web service” as used herein relates to a method of integrating applications using an Internet protocol (1P) infrastructure. In particular examples of a Web service, although claimed subject matter is not limited in these respects, standard protocols may be employed to transmit data objects among components over an Internet protocol such as, for example, HTTP, HTTPS, XML, REST, SOAP, WSDL and/or UDDI standards. Here, XML may be used to tag data objects, SOAP may be used to transfer data objects, WSDL may be used to describe available services and UDDI may be used to list available services. However, these are merely examples of protocols that may enable a Web service and claimed subject matter is not limited in these respects. In one particular embodiment, although claimed subject matter is not limited in these respects, a Web service may allow independently created and implemented applications from different network sources to communicate with one another. In another example, a Web service may comprise a “remote service” that is capable of communicating with one or more components of an application over a data link. Though, it should be noted that these are merely illustrative examples relating to web services and that claimed subject matter is not limited in this regard. - In this embodiment,
client 107 may be associated with various subscribers or subscription based web services, for example. Examples of web services may include, but are in no way limited to, web searches, stock quotes, and/or other web based applications. For example, a web search web services provider may limit a subscriber to a determined number of API call per day. Likewise, a stock quotes web services may license their content via a web service and may limit a licensee to a determined number of calls per day. In an embodiment,client 107 may initiate one or more web services calls via anetwork 105, which, may be directed to one of 102, 104, and/or 106. In this embodiment, the web service calls may be directed to a particular one of the server locations, based on a number of factors including, type of service request, geographic relationship betweenserver locations client 107 and the server locations, downtime for one of the server locations, and/or current resources available at the different server locations to name but a few examples. U.S. Pat. No. 7,231,445 shows one example technique for distributing web service requests. Though, it should be noted that these are merely illustrative examples relating to web services requests and that claimed subject matter is not limited in this regard. - In this embodiment, the server locations may also comprise a rate limiter, such as
rate limiter 108 ofserver location 102, for example. As user herein, a rate limiter may mean a hardware, firmware, or software component operable to monitor web services calls at least in part to prevent subscribers from exceeding an agreed upon limit to their web services usage. For example, a subscriber may agree to limits on their use of one or more web services. These limits may include a limited amount of data transfer during one or more time periods, a limited number of API calls during one or more time periods, limits to access during certain parts of the day, a specific service level limit, such as a data transfer rate limit or and API call rate limit, and/or a prepaid limit to the amount of data and/or API calls, to name but a few examples. In this embodiment, each of 102, 104, and/or 106 may include a rate limiter along a service request pipeline associated with that server location. For example, a rate limiter may be implemented as a server plug-in module forserver locations server 110 atserver location 104. In this example, the server plug-in module atserver 110 may be operable to receive web services calls directed toserver location 104 and may be further operable to communicate with one or more plug-ins at various servers associated withserver location 104. In addition, a rate limiter may be implemented as aseparate server 112 atserver location 106. In this example,server 112 may be operable to receive web services calls directed toserver location 106. In further addition, a rate limiter may be implemented as a software program on a computing platform providing web services. In further addition,rate limiter 108 may be implemented as a combination of the previously discussed implementations. In addition, communication between the rate limiters and the server locations may be asynchronous and/or synchronous. It should, however, be noted that these are merely illustrative examples of a rate limiter and that claimed subject matter is not limited in this regards. - Regardless of the implementation details of
rate limiter 108,rate limiter 108 may be operable to enforce a server location specific web services call limit on a per subscriber, client, or customer basis. For example,rate limiter 108 may, under some circumstances, be configured to receive or intercept one or more web services requests, such as API calls, directed to one of the server locations, such asserver location 102. For example,rate limiter 108 may be placed in one or more positions along a web services call processing pipeline, such thatrate limiter 108 may be operable to interact with a web services call prior to that call being processed by a server. In this embodiment,rate limiter 108 may extract a client or subscriber ID from the web services request.Rate limiter 108 may further keep track of the web services requests associated with particular subscribers, such asclient 107, for example. For example,rate limiter 108 may include a web services call limit associated withclient 107, such as a subscriber limit, and, if a web services call is received fromclient 107 thenrate limiter 108 may decrement a counter corresponding to the subscriber limit. As used herein, the terms “call limit” and/or “subscriber limit” may mean a contractual or agreed upon limit for service requests within a specified time period, such as a limit on the number of service requests or API calls within a day, an hour, or a month, for example. In this embodiment,rate limiter 108 may keep a real time record of how many web services calls may remain forclient 107. Alternatively,rate limiter 108 may keep a real time record of how many web services calls have been received fromclient 107 and check that number against a subscriber limit before allowing the web services call to be processed byserver location 102, for example. It should be noted that these are merely illustrative examples relating to a call limiter and that claimed subject matter is not limited in this regard. -
FIG. 2 is a schematic diagram depicting one or more interactions among server locations in accordance with an embodiment. With regard toFIG. 2 , anembodiment 200 may comprise 202 and 204 which may, under some circumstances, communicate viaserver locations network 206. In this embodiment,server location 202 may comprise one or more servers, such as 208, 209, 210, and/or 211, for example. In an embodiment,servers server location 202 may further comprise arate limiter 212. In this embodiment,rate limiter 212 may comprise alease manager 214 and/or acounter 216, for example. Likewise,server location 204 may comprises one or more servers, such as 218, 219, 220, and/or 221, for example. In an embodiment,servers server location 204 may further comprise arate limiter 222. In this embodiment,rate limiter 222 may comprise alease manager 224 and/or acounter 226, for example - With regard to
FIG. 2 , ifserver location 202 receives a web services call fromclient 230,rate limiter 212 may, under some circumstances intercept the web services call.Rate limiter 212 may then determine an identity or subscriber associated withclient 230 at least in part to determine whetherclient 230 has web services calls remaining atserver location 202, for example. In this embodiment,rate limiter 212 may use counter 216 to determine whether any web services calls remain forclient 230. If web services calls remain available forclient 230, thenrate limiter 212 may allow the web services call to be processed by one of servers 208-211, for example. If, however, there are no web services calls available forclient 230 atserver location 202, thenrate limiter 212 may uselease manager 214 to attempt to lease additional web services calls from another server location, such asserver location 204, for example. In this embodiment,rate limiter 212 may send a message toserver location 204 to determine whether additional web services calls are available forclient 230 atserver location 204.Server location 204 may pass this message torate limiter 222. In this embodiment,rate limiter 222 may then uselease manager 224 and/or counter 226 to determine if web services calls forclient 230 are available. If web services calls forclient 230 are available, thenserver location 204 may informserver location 202 that web services calls are available. In response,rate limiter 212 and/orlease manager 214 may request to lease additional web service calls fromserver location 204. If the request is accepted byserver location 204, thenlease manager 224 may subtract the leased web services calls fromcounter 226, whilelease manager 214 may add the leased web services calls to counter 216, for example. After completing the lease transaction withserver location 204,rate limiter 212 may allow the web services call fromclient 230 to be processed by one of servers 208-211, and decrement the updated subscriber limit. Likewise, under some circumstances,server location 204 may attempt to lease web services calls fromserver location 202 at least in part to process web service calls from a client, such asclient 230, for example. Though, it should be noted that these are merely illustrative examples of a rate limiter and that claimed subject matter is not limited in these regards. -
FIG. 3 , comprises a flowchart of a method in accordance with an embodiment. With regard tobox 300, a server location may receive a web services request, such as from a client as discussed above. With regard tobox 302, the server location may determine whether the client has reached a subscriber limit associated with the web services request. If the server location determines that the subscriber limit has not been reached then atbox 304, the server location may decrement the subscriber limit and atbox 306 allow the web services request to be processed. If, however, the server location determines that the subscriber limit has been reached, then atbox 308 the server location will not be able to process the web services request unless it is able to lease additional web service requests from another server location. Accordingly, atbox 310, the server location may determine whether other server locations are available to lease requests from. If no other server locations are available, then atbox 312 the server location denies the web services request. For example, the other server locations may have already been contacted and indicated that they did not have any calls available for lease, in which case the server location would deny the web services request. Though, again, it should be noted that these are merely illustrative examples of a method of processing a web service request and that claimed subject matter is not limited in this regard. - If, however, there are other server locations available, then at
box 314, the server location will attempt to contact the next server location on a list of server locations. For example, the server location may include a list of all other server locations operable to process certain types of web services requests from particular clients. The server may then contact the next server location on the list whenever it has reached a subscriber limit for a particular client and attempt to lease additional web services calls for that client. For example, atbox 316 the next server location will provide the first server location with information detailing the number of subscriber calls left for the client at that location. With regard tobox 318, the server location will determine, based on the response received from the contacted other server location, whether additional usage is available for lease. If not, then server location will return tobox 310 and attempt to contact a next server location on the list. If no additional server locations are available, then the server location will deny the request. If however, usage is available for lease, then the server location will proceed tobox 320, and update the subscriber limit to include the leased usage and decrement the subscriber limit to reflect the current web services request. The server location will then proceed tobox 322 and allow the web services request to be processed. Though, again, these are merely illustrative examples of leasing additional webs service requests and claimed subject matter is not limited in this regard. -
FIG. 4 is a schematic diagram of asystem 400 in accordance with an embodiment. With regard toFIG. 4 ,system 400 may comprise aserver location 402, aserver location 404, and/or arate limit provisioner 406.Server location 402 may comprise 407, 408, 409, and/or 410, along with aservers rate limiter 412, for example. Likewise server location 404 may comprise 413, 414, 415, and/or 416, along with aservers rate limiter 418. In this embodiment,rate limit provisioner 406 may comprise a computing platform operable to communicate withserver locations 402 and/or 404 and/orrate limiters 412 and/or 414. For example,rate limit provisioner 406 may be operable to communicate with the server locations to set an initial subscriber limit for each of the server locations. As just one example, the initial subscriber limit may comprise an equal portion of a subscriber's contractually agreed web service calls. In this example, that would mean each server location would initially be assigned one-half of a client's web service requests for a determined period of time. Alternatively, if more than two server locations were involved the initial subscriber limits could still be equally divided among the various server locations. In addition,rate limit provisioner 406 may set the initial subscriber limits based on one or more preferences determined by the subscriber. Though, it should be noted that these are merely illustrative examples of determining an initial subscriber limit and that claimed subject matter is not limited in this regard. - In addition,
rate limit provisioner 406 may adapt a distribution of a particular client's web services calls based on one or more learned aspects of that particular client. In the above example,rate limit provisioner 406 may determine over time that a higher percentage of web service calls are processed byserver location 402 than byserver location 404. This difference could be due to any number of factors, including geographic proximity of the client to the two server locations, differences in capacity at the two server locations, differences in demands placed upon the two server locations by other clients or subscribers, to name but a few factors. In this embodiment,rate limit provisioner 406 may, when distributing subsequent initial call limits for a particular client, take into account such learned characteristics of the particular client when determining an initial distribution. In the above example,rate limit provisioner 406 may distribute the overall subscriber limit for a particular client so that each of 402 and 404 have an initial limit that is proportional to the historic percentage of calls handled by each server location for that particular client. Though, again, it should be noted that these are merely illustrative examples of distributing an initial subscriber limit and that claimed subject matter is not limited in this regard.server locations - In the preceding description, various aspects of claimed subject matter have been described. For purposes of explanation, specific numbers, systems and/or configurations were set forth to provide a thorough understanding of the claimed subject matter. However, it should be apparent to one skilled in the art having the benefit of this disclosure that claimed subject matter may be practiced without the specific details. In other instances, features that would be understood by one or ordinary skill were omitted and/or simplified so as not to obscure claimed subject matter. While certain features have been illustrated and/or described herein, many modifications, substitutions, changes and/or equivalents will now occur to those skilled in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and/or changes as fall within the true spirit of claimed subject matter.
Claims (21)
1-25. (canceled)
26. A method, comprising:
determining, by a rate provisioner comprising at least one processor, an allocation of a available web services calls for at least one subscriber between a first server location and at least a second server location, wherein the allocation indicates a first subscriber limit comprising a first threshold number of web services calls allocated to the first server location and a second subscriber limit comprising a second threshold number of web services calls allocated to the at least a second server location; and
transmitting one or more signals from the rate limit provisioner, via an electronic network, to the first server location to set the first subscriber limit and to the at least a second server location to set the second subscriber limit.
27. The method of claim 26 , wherein the allocation is determined based at least in part on one or more preferences associated with the at least one subscriber.
28. The method of claim 26 , further comprising modifying the allocation of the web services calls for the at least one subscriber between the first server location and the at least a second server location.
29. The method of claim 28 , wherein the modifying the allocation is based at least in part on a geographic proximity of the at least one subscriber to the first server location and/or the at least a second server location.
30. The method of claim 28 , wherein the modifying the allocation is based at least in part on a demand for the web services calls from additional subscribers at the first server location and/or the at least a second server location.
31. The method of claim 28 , wherein the modifying the allocation is based at least in part on respective capacities of the first and/or the at least a second server locations.
32. The method of claim 28 , wherein the modifying the allocation is based at least in part on an historic percentage of the web services calls processed by the first server location and/or the at least a second server location.
33. The method of claim 26 , wherein a number of the available web services calls for the at least one subscriber is determined based at least in part on a contractual agreement with the at least one subscriber.
34. An apparatus, comprising:
at least one processor to:
determine an allocation of available web services calls for at least one subscriber between a first server location and at least a second server location, wherein the allocation indicates a first subscriber limit comprising a first threshold number of web services calls allocated to the first server location and a second subscriber limit comprising a second threshold number of web services calls allocated to the at least a second server location; and
initiate transmission of one or more signals to the first server location to set the first subscriber limit and to the at least a second server location to set the second subscriber limit.
35. The apparatus of claim 34 , wherein the at least one processor is capable of determining the allocation based at least in part on one or more preferences associated with the at least one subscriber.
36. The apparatus of claim 34 , wherein the at least one processor is capable of modifying the allocation of the web services calls for the at least one subscriber between the first server location and the at least a second server location.
37. The apparatus of claim 36 , wherein the at least one processor is capable of modifying the allocation based at least in part on a geographic proximity of the at least one subscriber to the first server location and/or the at least a second server location.
38. The apparatus of claim 36 , wherein the at least one processor is capable of modifying the allocation based at least in part on a demand for the web services from additional subscribers at the first server location and/or the second server location.
39. The apparatus of claim 36 , wherein the at least one processor is capable of modifying the allocation based at least in part on respective capacities of the first and the at least a second server locations.
40. The apparatus of claim 36 , wherein the at least one processor is capable of modifying the allocation based at least in part on an historic percentage of the web services calls handled by the first server location and/or the at least a second server location.
41. The apparatus of claim 36 , wherein the at least one processor is capable of determining a number of the available web services calls for the at least one subscriber based at least in part on a contractual agreement with the at least one subscriber.
42. An article, comprising: one or more memories having instructions stored thereon which are executable by a processor to:
determine an allocation of available web services calls for at least one subscriber between a first server location and at least a second server location, wherein the allocation indicates a first subscriber limit comprising a first threshold number of web services calls allocated to the first server location and a second subscriber limit comprising a second threshold number of web services calls allocated to the at least a second server location; and
initiate transmission of one or more signals from the rate limit provisioner, via an electronic network, to the first server location to set the first subscriber limit and to the at least a second server location to set the second subscriber limit.
43. The article of claim 42 , wherein the instructions are further executable to modify the allocation of the web services calls for the at least one subscriber between the first server location and the at least a second server location.
44. The article of claim 43 , wherein the instructions are further executable to modify the allocation based at least in part on a geographic proximity of the at least one subscriber to the first server location and/or the at least a second server location.
45. The article of claim 42 , wherein the instructions are further executable determine a number of the available web services calls for the at least one subscriber based at least in part on a contractual agreement with the at least one subscriber.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/037,056 US20110153833A1 (en) | 2007-10-23 | 2011-02-28 | Rate provisioner for web services |
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| IN2218DE2007 | 2007-10-23 | ||
| IN2218/DEL/2007 | 2007-10-23 | ||
| US11/951,138 US7908363B2 (en) | 2007-10-23 | 2007-12-05 | Call limiter for web services |
| US13/037,056 US20110153833A1 (en) | 2007-10-23 | 2011-02-28 | Rate provisioner for web services |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US11/951,138 Continuation US7908363B2 (en) | 2007-10-23 | 2007-12-05 | Call limiter for web services |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US20110153833A1 true US20110153833A1 (en) | 2011-06-23 |
Family
ID=40564845
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US11/951,138 Active 2028-10-08 US7908363B2 (en) | 2007-10-23 | 2007-12-05 | Call limiter for web services |
| US13/037,056 Abandoned US20110153833A1 (en) | 2007-10-23 | 2011-02-28 | Rate provisioner for web services |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US11/951,138 Active 2028-10-08 US7908363B2 (en) | 2007-10-23 | 2007-12-05 | Call limiter for web services |
Country Status (1)
| Country | Link |
|---|---|
| US (2) | US7908363B2 (en) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20110206023A1 (en) * | 2009-10-19 | 2011-08-25 | Barnes & Noble, Inc. | In-store reading system |
| US8881306B2 (en) | 2012-11-20 | 2014-11-04 | Barnes And Noble, Inc. | Architecture system for in-store reading |
| US8893304B2 (en) | 2012-11-20 | 2014-11-18 | Barnes And Noble, Inc. | Method for registering a device |
Families Citing this family (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7908363B2 (en) * | 2007-10-23 | 2011-03-15 | Yahoo! Inc. | Call limiter for web services |
| US7844707B2 (en) * | 2007-12-20 | 2010-11-30 | Yahoo! Inc. | Web service multi-key rate limiting method and system |
| US20120016681A1 (en) * | 2010-07-13 | 2012-01-19 | Salesforce.Com, Inc. | System, method and computer program product for analyzing monitored usage of a resource |
| US8959237B2 (en) * | 2010-09-03 | 2015-02-17 | Cellco Partnership | Web services requests throttling |
| US20140380300A1 (en) * | 2013-06-25 | 2014-12-25 | Bank Of America Corporation | Dynamic configuration framework |
| US9473413B1 (en) * | 2013-12-04 | 2016-10-18 | Amazon Technologies, Inc. | Dynamic throttle of network traffic |
| US10445151B1 (en) | 2016-09-14 | 2019-10-15 | Google Llc | Distributed API accounting |
| US20180270299A1 (en) * | 2017-03-16 | 2018-09-20 | Fugue, Inc. | System and method for producing api-throttle and back-pressure avoidance among clients using distributed asynchronous components |
| CA3050971C (en) * | 2018-08-02 | 2026-01-06 | Idera, Inc. | Rate limiter for database access |
| US11075923B1 (en) * | 2020-05-29 | 2021-07-27 | Zscaler, Inc. | Method and apparatus for entity-based resource protection for a cloud-based system |
| US12204933B2 (en) * | 2021-07-30 | 2025-01-21 | Stripe, Inc. | Asynchronous statistic-based rate limiting in distributed system |
Citations (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6578068B1 (en) * | 1999-08-31 | 2003-06-10 | Accenture Llp | Load balancer in environment services patterns |
| US20030110242A1 (en) * | 2001-12-11 | 2003-06-12 | Brown Kyle G. | Method and apparatus for dynamic reconfiguration of web services infrastructure |
| US20030144894A1 (en) * | 2001-11-12 | 2003-07-31 | Robertson James A. | System and method for creating and managing survivable, service hosting networks |
| US20040111506A1 (en) * | 2002-12-10 | 2004-06-10 | International Business Machines Corporation | System and method for managing web utility services |
| US20050198200A1 (en) * | 2004-03-05 | 2005-09-08 | Nortel Networks Limited | Method and apparatus for facilitating fulfillment of web-service requests on a communication network |
| US20060217106A1 (en) * | 2003-04-14 | 2006-09-28 | Gary Davidson | Prepaid wireless system and method |
| US7231445B1 (en) * | 2000-11-16 | 2007-06-12 | Nortel Networks Limited | Technique for adaptively distributing web server requests |
| US20070233820A1 (en) * | 2006-03-29 | 2007-10-04 | Sap Ag | Dynamic web service configuration broadcasting |
| US7466810B1 (en) * | 2004-12-20 | 2008-12-16 | Neltura Technology, Inc. | Distributed system for sharing of communication service resources between devices and users |
| US7496651B1 (en) * | 2004-05-06 | 2009-02-24 | Foundry Networks, Inc. | Configurable geographic prefixes for global server load balancing |
| US7844707B2 (en) * | 2007-12-20 | 2010-11-30 | Yahoo! Inc. | Web service multi-key rate limiting method and system |
| US7908363B2 (en) * | 2007-10-23 | 2011-03-15 | Yahoo! Inc. | Call limiter for web services |
-
2007
- 2007-12-05 US US11/951,138 patent/US7908363B2/en active Active
-
2011
- 2011-02-28 US US13/037,056 patent/US20110153833A1/en not_active Abandoned
Patent Citations (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6578068B1 (en) * | 1999-08-31 | 2003-06-10 | Accenture Llp | Load balancer in environment services patterns |
| US7231445B1 (en) * | 2000-11-16 | 2007-06-12 | Nortel Networks Limited | Technique for adaptively distributing web server requests |
| US20030144894A1 (en) * | 2001-11-12 | 2003-07-31 | Robertson James A. | System and method for creating and managing survivable, service hosting networks |
| US20030110242A1 (en) * | 2001-12-11 | 2003-06-12 | Brown Kyle G. | Method and apparatus for dynamic reconfiguration of web services infrastructure |
| US20040111506A1 (en) * | 2002-12-10 | 2004-06-10 | International Business Machines Corporation | System and method for managing web utility services |
| US20060217106A1 (en) * | 2003-04-14 | 2006-09-28 | Gary Davidson | Prepaid wireless system and method |
| US20050198200A1 (en) * | 2004-03-05 | 2005-09-08 | Nortel Networks Limited | Method and apparatus for facilitating fulfillment of web-service requests on a communication network |
| US7496651B1 (en) * | 2004-05-06 | 2009-02-24 | Foundry Networks, Inc. | Configurable geographic prefixes for global server load balancing |
| US7466810B1 (en) * | 2004-12-20 | 2008-12-16 | Neltura Technology, Inc. | Distributed system for sharing of communication service resources between devices and users |
| US20070233820A1 (en) * | 2006-03-29 | 2007-10-04 | Sap Ag | Dynamic web service configuration broadcasting |
| US7908363B2 (en) * | 2007-10-23 | 2011-03-15 | Yahoo! Inc. | Call limiter for web services |
| US7844707B2 (en) * | 2007-12-20 | 2010-11-30 | Yahoo! Inc. | Web service multi-key rate limiting method and system |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20110206023A1 (en) * | 2009-10-19 | 2011-08-25 | Barnes & Noble, Inc. | In-store reading system |
| US9253640B2 (en) * | 2009-10-19 | 2016-02-02 | Nook Digital, Llc | In-store reading system |
| US9729729B2 (en) | 2009-10-19 | 2017-08-08 | Nook Digital, Llc | In-store reading system |
| US8881306B2 (en) | 2012-11-20 | 2014-11-04 | Barnes And Noble, Inc. | Architecture system for in-store reading |
| US8893304B2 (en) | 2012-11-20 | 2014-11-18 | Barnes And Noble, Inc. | Method for registering a device |
Also Published As
| Publication number | Publication date |
|---|---|
| US20090106821A1 (en) | 2009-04-23 |
| US7908363B2 (en) | 2011-03-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7908363B2 (en) | Call limiter for web services | |
| EP3989495B1 (en) | Burst traffic processing method, computer device and readable storage medium | |
| US7640246B2 (en) | Method and system for providing content | |
| US11751004B2 (en) | Methods and systems for communication management | |
| CN109089168B (en) | Video sharing method, device and system and storage medium | |
| US20090178058A1 (en) | Application Aware Networking | |
| US10212286B2 (en) | System and method for allocation and management of shared virtual numbers | |
| CN107995013B (en) | Customer service distribution method and device | |
| US8893004B2 (en) | User interface proxy method and system | |
| CN114003337A (en) | Access request distribution method and device | |
| CN110691042A (en) | Resource allocation method and device | |
| CN110245014B (en) | Data processing methods and devices | |
| US11882055B1 (en) | Computer resource-based API transaction method and system | |
| CN114077483A (en) | Data resource scheduling method, server, system and storage medium | |
| US20130144728A1 (en) | PRE-PROCESSING OF AD REQUESTS USING EDGE SIDE PROCESSING OVER COMMERCIAL CDNs | |
| US11202108B2 (en) | Augmenting dynamic ad insertion inventory with unused inventory | |
| US7734693B2 (en) | Methods and apparatuses for managing resources within a collaboration system | |
| CN111093281B (en) | Method and device for allocating resources | |
| CN103856557B (en) | The processing method of a kind of business object based on third-party platform and system | |
| CN105335362B (en) | The processing method and system of real time data, instant disposal system for treating | |
| CN107920019A (en) | Pay close attention to method and device, computer equipment and the storage medium of good friend | |
| CN114372813A (en) | Information popularization method and device, server and storage medium | |
| KR20170002229A (en) | Resource management system and method, and method for deciding resource price by the same system | |
| US12081602B1 (en) | Metering client-side features | |
| EP3192266B1 (en) | Decision logic |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
| AS | Assignment |
Owner name: YAHOO HOLDINGS, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:YAHOO| INC.;REEL/FRAME:042963/0211 Effective date: 20170613 |
|
| AS | Assignment |
Owner name: OATH INC., NEW YORK Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:YAHOO HOLDINGS, INC.;REEL/FRAME:045240/0310 Effective date: 20171231 |