Abstract:
A method for dynamic application of access rules to a shared resource may comprise: a) receiving a client request for access to a shared system resource; b) logging information associated with the client request for access to the shared system resource; c) receiving system status data; d) defining a shared system resource allocation rule; e) allocating client access to the shared system resource according to the logged information associated with the client request for access to the shared system resource, the system status data, and the shared system resource allocation rule; and f) queuing a control instruction regulating client access to the shared system resource.

Description:
BACKGROUND 
   In queue based messaging system throughput of messages can be variable. In some cases after a system recovery or at peak processing times it is possible for very large volumes of data to be sent at once and for messaging endpoints/queues to become flooded. Sometimes this may result in queues overflowing and even lost messages. This scenario could also occur as part of a denial of service attack on a messaging system. In messaging application programming interfaces (API) such as Java Message Service (JMS) there is no dynamic mechanism for throttling load or number of connections to a resource such as a queue to ensure it is not overwhelmed. One example of this is where store and forward processing is used. If the endpoint which is sent messages goes down, then the messages being stored can grow to a large number. Accordingly, when the endpoint recovers, a very large and sudden burst of messages will be sent to the endpoint for processing. 
   SUMMARY 
   A method for dynamic application of access rules to a shared resource may comprise: a) receiving a client request for access to a shared system resource; b) logging information associated with the client request for access to the shared system resource; c) receiving system status data; d) defining a shared system resource allocation rule; e) allocating client access to the shared system resource according to the logged information associated with the client request for access to the shared system resource, the system status data, and the shared system resource allocation rule; and f) queuing a control instruction regulating client access to the shared system resource. 
   It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not necessarily restrictive of the present disclosure. The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate subject matter of the disclosure. Together, the descriptions and the drawings serve to explain the principles of the disclosure. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The numerous advantages of the disclosure may be better understood by those skilled in the art by reference to the accompanying figures in which: 
       FIG. 1  is a flow diagram view illustrating the Audit Controller in operation with Shared Queue Controller(s); 
       FIG. 2  is a flow diagram illustrating the interaction of the Client System with the Server System. 
   

   DETAILED DESCRIPTION 
   Reference will now be made in detail to the subject matter disclosed, which is illustrated in the accompanying drawings. 
   Referring to  FIG. 1 , a system for applying access rules for a shared resource may include at least one Client Application, at least one Shared Queue Controller (SQC), and an Audit Controller. 
   A Client Application may be a messaging application used to send/receive data to a Shared Queue associated with a shared resource that one or more Client Applications may access to perform a business operation. Client Applications may provide a request to an SQC to obtain access to and use the shared resource. 
   The SQC may control access by the Client Applications to a Shared Queue. The SQC may use data on a Control Queue to determine if access is permitted to a given Client Application or if there are any restrictions on access (e.g. restriction to a certain rate or number of messages). The Control Queue may hold control messages from the Audit Controller which may used to influence the behavior of the SQC and, by proxy, the Client Application. All sends/receives between a Client Application and the Shared Queue may be transmitted via the SQC interface allowing for pacing of the sends/receives, if needed, according to various Rules through the use of waits or sleeps. 
   Referring again to  FIG. 1 , the Audit Controller may receive inputs of system events from multiple resources and apply Rules to these events. 
   For example, various System applications may monitor system status data regarding various aspects of the system (e.g. CPU performance, memory allocation, queue depth, etc.). 
   Similarly, the SQC may provide log data to the Audit Controller via a Log Messages Queue. The Log Message Queue may be used by the SQC to record an access request by a Client Application for a shared resource in order to inform the Audit Controller of what operations a Client Application has been conducting on a shared resource. The SQC may log data such as the number of messages sent/received by the Client Application to the Log Messages Queue. This logging may be batched and transmitted either at fixed times or after a set number of messages so as to keep the impact of logging to a minimum. 
   The Audit Controller may receive data regarding various system events (e.g. Client Application requests for access to the Shared Queue) from the System Monitoring Applications, the Log Messages Queue, and the like, and apply various Rules according to these events. For example, a rule may require that queue depth be maintained at less than 1000 or use of a System CPU should not exceed 80%. These Rules may be stored in a Rules database and may be monitored and enforced by the Audit controller. 
   Based on the outcome of the application of a Rule to a system event, the Audit Controller may control a Client Application&#39;s behavior by placing Control Messages on the Control Queue which may be received by a SQC which may, in turn, modify Client Application function accordingly. 
   In another example, a Rule may be defined such that access to the resource by may be restricted based on client user ID or hostname of a Client Application (e.g. a clientsAllowed field in a Control Message). The SQC may determine if its name is in the clientsAllowed property of a Control Queue message from the Audit Controller to see if it is allowed access to the resource. 
   In still another example, a Rule may be defined to check the depth of the Shared Queue for the shared resource and, upon reaching a given number of pending access requests, the Audit Controller may restrict the number clients permitted access to the resource, thereby throttling access to the queue during busy periods. 
   In still another example, a Rule may be defined to so that each Client may be allocated a particular time slot in which to access the resource. 
   In still another example, the Auditor Controller may monitor the Log Messages Queue to see how many messages each client is sending. A Rule governing a threshold number of log messages that may be sent per day for each client may be defined. The Audit Controller may detect when the threshold for a given Client has been passed and restrict that Client from sending/receiving messages by removing that client&#39;s identification from a clientsAllowed field on the Rules message in the Control Queue. 
   Referring again to  FIG. 1 , the Server System may include an Administration Console which may allow for the modification of the Audit Controller to include new Rules or provide access to existing logged data. 
   Referring again to  FIG. 1 , the Audit Controller may archive Log Messages data or System Status data information to a Log Data database. 
   Referring to  FIG. 2 , a process flow diagram representing an exemplary embodiment of a method is presented. 
   A shared resource access Rule may be defined and stored in a Database (e.g. a maximum access request rate for a particular Client Application; a Shared Queue depth, etc.) 
   When a SQC receives a shared resource access request, the SQC may log a message to the Log Message Queue stating what the client has done to the shared resource (e.g. has sent 100 messages). This data may be logged by the Audit Controller to a Log Data Database. 
   A Shared Queue Controller may receive subsequent requests from a Client Application (not shown) to access a shared resource. It may be the case that the Client Application is sending data too quickly, thereby flooding the Shared Queue. The Shared Queue may reaches a threshold depth (e.g. 1000 messages). This is detected by a System monitoring program which may provide the Shared Queue depth data to the Audit Controller. 
   The Audit Controller may check this information against the Defined Rules and determine that a Shared Queue depth rule (e.g. that a queue depth of 1000 messages should not be exceeded) and determine it needs to slow access to the resource by at least one Client Application. 
   The Audit Controller may examine the Log Database to see which Client Application(s) have been sending the most messages and place a Control Message in the Control Queue with a notice to inform one or more Client Application clients to slow their access requests. The SQCs for those Client Applications may see the Control Message an slow the rate at which the they are sending requests. 
   The audit controller may continue to check the queue depth and can slow the rate further if required or speed it up when the queue depth returns to an acceptable level. 
   This illustrates how this system can dynamically change the behavior of the clients based on feedback from different components in the system. The rules could of course also be changed at any time to influence the behavior of the messaging system. Note that there will be no code changes to client are required to regulate the shared resource access, so long as the Client Applications write to the SQC interface. 
   There may be some latency/lag between the occurrence of an event (e.g. the Shared Queue reaching 1000 messages) and the clients being slowed via the SQC. The size of this latency in the feedback mechanism can be tuned by allowing the clients SQC to log more frequently and to poll for control messages more often. So there is a trade off to be made between latency in the feedback cycle and the performance impact of the logging and polling on normal messaging operations. 
   EXAMPLE 
   Two clients may be allowed access to a resource during a restricted-use time period, but ten clients may be allowed access to the resource outside of the restricted-use period. 
   At the beginning of the restricted-use time period, the audit controller may insert a Rules message in the Control Queue have a token id unique to a resource. The Rules messages may be a non-expiring message that all connected Clients Applications may browse. This message may have a property of “number of connections” set to two. 
   Subsequently, additional Client Applications may request access to the shared resource via their SQC by placing control messages on the Control Queue with the same unique token id for the resource. 
   Each SQC may see that there is an existing Rules message on the Control Queue for that resource stating only two clients may connect at any one time. Each SQC may then update its own control message with this setting. Each SQC may compare the timestamp of its control message to the control messages of the remaining SQCs in the control queue determine if it has one of the two oldest timestamps for that resource, thereby entitling it to access to the resource. 
   The two authorized clients may maintain their exclusive access to the resource until they fail, disconnect, or the restricted-use time period expires. As such, eight clients will be blocked. At the end of the restricted-use time period, the Audit Controller may adjust the number or authorized clients according to a second Rule. The Auditor may modify the Rules message on the Control Queue by changing the number-of-connections property to ten. 
   Each SQC may poll the Rules messages for its associated resource for changes to the properties and may detect the change in the number of connections to ten. Each SQC may updates its own control message to indicate reflect the change and may assesses if its Client Application is one of the Client Applications whose control message has one of the ten oldest timestamps by browsing all messages on the Control Queue with the same token id for that resource and comparing the timestamps. If its client is one of the ten oldest then the SQC allows the Client Application access to the resource. 
   In the present disclosure, the methods disclosed may be implemented as sets of instructions or software readable by a device. Further, it is understood that the specific order or hierarchy of steps in the methods disclosed are examples of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the method can be rearranged while remaining within the disclosed subject matter. The accompanying method claims present elements of the various steps in a sample order, and are not necessarily meant to be limited to the specific order or hierarchy presented. 
   It is believed that the present disclosure and many of its attendant advantages will be understood by the foregoing description, and it will be apparent that various changes may be made in the form, construction and arrangement of the components without departing from the disclosed subject matter or without sacrificing all of its material advantages. The form described is merely explanatory, and it is the intention of the following claims to encompass and include such changes.