WO2006136021A1 - Request routing system for and method of request routing - Google Patents

Request routing system for and method of request routing Download PDF

Info

Publication number
WO2006136021A1
WO2006136021A1 PCT/CA2006/001018 CA2006001018W WO2006136021A1 WO 2006136021 A1 WO2006136021 A1 WO 2006136021A1 CA 2006001018 W CA2006001018 W CA 2006001018W WO 2006136021 A1 WO2006136021 A1 WO 2006136021A1
Authority
WO
WIPO (PCT)
Prior art keywords
request
routing
server group
objects
destination server
Prior art date
Application number
PCT/CA2006/001018
Other languages
French (fr)
Inventor
Jim Miller-Cushon
Original Assignee
Cognos Incorporated
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Cognos Incorporated filed Critical Cognos Incorporated
Priority to EP06761083A priority Critical patent/EP1900168A1/en
Publication of WO2006136021A1 publication Critical patent/WO2006136021A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1021Server selection for load balancing based on client or server locations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1012Server selection for load balancing based on compliance of requirements or conditions with available server resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1014Server selection for load balancing based on the content of a request
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1017Server selection for load balancing based on a round robin mechanism
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1031Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests

Definitions

  • the present invention relates to a request routing system and a method of request routing.
  • network traffic is routed based on consideration of user, cost, time of day, and/or performance considerations.
  • Some existing reporting systems route requests among the multiple report servers based on such a standard concept, but they do not allow users to control routing of requests.
  • the invention uses routing hints assigned to objects, each belonging to an object class, to determine to which server group requests are to be routed.
  • a request routing system for routing requests issued by clients to servers.
  • the request routing system comprises multiple request dispatchers, a router manager and a request manager.
  • Each-request dispatcher is associated with one or more servers.
  • the request dispatchers are grouped into one or more groups such that each group of dispatchers forms a server group.
  • Each server group has a name.
  • Each dispatcher is capable of routing a request to a dispatcher of a server group named in a request.
  • the router manager has a request information handler, an object set handler, and a server group selector.
  • the request information handler is provided for receiving information of one or more objects associated with a request, each object belonging to an object class, one or more objects having one or more routing hints assigned to the objects, and for returning a destination server group name which identifies a destination server group for the request.
  • Th g object set handler is provided for grouping the associated objects into one or more object sets based on the object class and the routing hints of the objects.
  • the server group selector is provided for evaluating routing rules based on the object sets to determine the destination server group name.
  • the request manager has an object handler and a, request modifier.
  • the object handler is provided for sending the information of objects associated with the request to the router manager.
  • the request modifier is provided for receiving the destination sender group name, and adding it to the request.
  • a request router manager for managing routing of requests issued by clients to servers.
  • the request router manager comprises a request information handler, an object set handler and a server group selector.
  • the request information handler Is provided for receiving information of one or more objects associated with a request, each object belonging to an object class, one or more objects having one or more routing hints assigned to the objects, and for returning a destination server group name which identifies a destination server group for the request.
  • the object set handler is provided for grouping the associated objects into one or more object sets based on the object class and the routing hints of the objects.
  • the server group selector is provided for evaluating routing rules based on the object sets to determine the destination server group name such that the request is sent to the destination server group.
  • a method of routing a request from a client to a group of servers comprises steps of receiving information of one or more objects associated with the request, each object belonging to an object class, one or more objects having one or more routing hints assigned to the objects; grouping the associated objects into one or more object sets based on the object class and the routing hints of the objects; evaluating , predefined routing rules based on the object sets to determine a destination server group name that identifies a destination server group for the request; and forwarding the request to the destination server group based on the destination server group name.
  • a computer readable medium storing computer readable code for use in the execution in a computer of the method of routing a request from a client to a group of servers.
  • a propagated signal carrier containing computer executable instructions and/or statements that can be read and executed by a computer, the computer executable instructions being used to execute the method of routing a request from a client to a group of servers.
  • Figure 1 is a block diagram showing a request routing system in accordance with an embodiment of the present invention
  • Figure 2 is a block diagram showing a request manager of the request routing system
  • Figure 3 is a block diagram showing a router manager of the request routing system
  • Figure 4 is a block diagram showing a configuration manager of the request routing system
  • Figure 5 is a diagram showing an example of a request having routing hints assigned to objects
  • Figure 6 is a diagram showing an example of user groups with routing hints assigned
  • Figure 7 is a diagram showing the operation of the request routing system
  • Figure 8 Is a flowchart showing determination of a destination server group name
  • Figure 9 is a block diagram showing a request routing system in accordance with another embodiment of the present invention.
  • Figure 10 is a block diagram showing a request routing system in accordance with another embodiment of the present invention.
  • FIG. 1 shows a request routing system 10 in accordance with an embodiment of the invention.
  • the request routing system 10 is used in a computer network 2 having one or more clients 4 and one or more servers 6.
  • the computer network 2 is typically provided for a single organization having multiple departments using multiple servers 6.
  • a client 4 may be a report viewing tool or a scheduling or monitor service tool that generates requests for services, such as a request to generate a report.
  • a single-client 4 is shown in Figure 1 for simplicity of the drawing.
  • Each server 6 provides a sp ⁇ cific service, such as a report generation service.
  • the request routing system 10 manages routing of requests of clients 4 to specific server groups depending on information in the requests.
  • the request routing system 10 comprises a. request manager 20, a router manager 30, multiple request routers or dispatchers 40, and a configuration manager 50.
  • the configuration manager 50 has a user interface 52, an abject manager 54, a user information manager 56 and a routing rule manager 53.
  • a request generated by a client 4 has one or more objects associated with the request.
  • a request to generate a report is associated with one or more objects, values of which are to be included in the generated report.
  • Each object belongs to an object class.
  • the administrator may use any object classes that are associated with the request.
  • a specific user wants to generate a report using a specific report specification.
  • the report specification was generated using a package of metadata that is extracted from a database system.
  • These objects: user, report spec, package, are associated with the request, f he administrator may use these object classes.
  • the administrator may define any arbitrary object class that can be associated with a request, such as a timeOfDay object.
  • An object class may be a package of objects based on which a report is authored, or a user group to- which a user belongs.
  • Other examples of object classes include user account, user role, time of day, and user's current location.
  • a user account refers to a login. It corresponds to the identity of an individual who has been authenticated (e.g. through a login) and' is known to the system.
  • a user role class is similar to a user group class, and represents a set of permissions.
  • a user may belong to several groups, but may choose to act in a specific role. For example, a privileged "super user" may choose to act in the role of an unprivileged user to generate a report that is to be sent to a customer, thus avoiding the risk of inadvertently generating a report that contained sensitive information.
  • the request routing system 10 allows, through the object manager 52, an administrator to assign one or more routing hints to each object.
  • a routing hint is information relevant to routing. It may be a string value that is relevant to routing.
  • An object may have more than one routing hint, Each routing hint value serves to identify a set of objects, i.e., all objects of the same class with the same routing hint value forms a set.
  • Figure 5 shows an example of a request , having five associated objects: Object 1 to Object 5.
  • Object 1 belongs to class A. It is assigned with routing hint a.
  • object 2 belongs to class B 1 and is assigned with routing hint b and routing hint c, and so on.
  • Hint value "a” serves to form a set of Object 1 and Object 5, both of which belong to Class A.
  • hint value "c” serves to form a set of Object 2 arid Object 4, both of which belong to Class B.
  • An example of a routing hint is a package hint having an identification of a package that is used to author a report requested by the user.
  • a package is a collection of objects that are suitably collected and/or organized for a particular purpose, such as generating a certain report or reports, or responding to a certain type of request.
  • An administrator may assign one or more package hints to a package through the object manager 54.
  • a routing hint is a user group hint that relates to a user who issues a request through a client 4.
  • Each user belongs to one or more user groups, e.g., a sales group, a finance group, or a public group.
  • the request includes identification of the user groups to which the user belongs.
  • this information may be used as a routing hint so that a request is routed depending on a user group to which the user who issued the request belongs, i.e., user's membership to a user group.
  • the system 10 may allow an administrator to assign or modify routing hits to the user groups through the user information manger 56.
  • Each user group may have one or more routing hints.
  • Figure ⁇ shows an example of an organization in which there are three user groups.
  • User Group 1 is assigned with routing hint s and hint t.
  • user group 2 is assigned with routing hint u, and so on.
  • request dispatchers 40 are grouped into multiple groups. Each request dispatcher 40 is associated with one or more servers 6. Each group of dispatchers thus forms a group 45a-45c of servers 6. Each server group 45a-45c.has a unique group identification or name. A group name of a server group may be a string-valued property of dispatchers 40. All dispatchers 40 that share the same value for this property act as a single "cluster" or group. Figure 1 shows three server groups 45a-45c, but there may be more or fe was server groups in different embodiments.
  • Each dispatcher 40 is capable of dispatching requests to its associated servers ⁇ or one of other dispatchers 40, based on routing information in the requests.
  • a request dispatcher 40 receives a request destined for one of its. associated servers 6, the dispatcher 40 dispatches the request to the destination server 6. Otherwise, it dispatches the request to one of other dispatchers 40.
  • the request manager 20 manages requests generated by the client 4.
  • the request manager 20 is provided at the client 4.
  • the request manager 20 takes the request from the client 4 for modification, and returns a modified request to the client 4.
  • the client 4 sends the modified request to one of the request dispatchers 40.
  • the request manager 20 may directly send the modified request to one of the request dispatchers 40.
  • the request manager 20 may be provided at each request dispatcher 40, or at selected one or more request dispatchers 40.
  • the client 4 sends a request to a dispatcher 40, and the request manager 20 takes the request from the dispatcher 40 for modification, and returns a modified request to the dispatcher 40 for routing of the request to a destination server 8,
  • Figure 2 shows an example of the request manager 20.
  • the request manager 20 has an object handier 22 and a request modifier 24.
  • the object handler 22 checks a received request, and sends information about objects associated with the request to the router manager 30 to query a destination server group name for the request.
  • the object handler 22 may generate a list of objects associated with the request, and send it to the router manager 30.
  • the request modifier 24 receives the destination server group name from the router manager 30, and adds it to the request.
  • the router manager 30 determines the destination server group name for the request. As shown in Figure 3, the router manager 30 has a request information handler 32, an object set handler 34, and a server group selector 36.
  • the request information handler 32 receives from the request manager 20 the list of objects associated with the request It also returns to the request manager 20 the destination server group name.
  • the object set handler 34 groups the associated objects into one or more object sets based on the object class and the routing hints assigned to each object.
  • each routing hint value is associated with each object class.
  • the dispatcher selector 36 considers each object as one or more object-class/routing-hint pairs. Different objects can have the same hint value. This allows the administrator to define arbitrary sets of objects: All objects of a specific class that have the same hint value form an object set. An object can belong to more than one object set by having more than one routing hint.
  • the server group selector 36 determines the destination server group name by evaluating routings rules that were previously defined by the administrator. The routing rules are evaluated based on the object sets. Each routing rule contains a set of one or more predetermined criteria and a server group name.
  • the server group selector 36 checks the value of the routing hints assigned to the objects associated with the request, in view of the criteria of each routing rule. A routing rule is matched when the value of the routing hints satisfies the criteria of the routing rule. When a routing rule Is matched, the server group selector 36 determines that the server group name of the routing rule is the destination server group name for the request. The routing rules are evaluated in a predetermined order until a rule is first matched. The server group selector 36 sends the determined destination server group name to the request manager 20.
  • the criteria of a rule specifies one or more values of a package hint, a user group hint, user account hint, user role hint, time of day hint, location hint, or other hint corresponding to other object class defined in the system 10.
  • a rule may be expressed logically as follows: If f ⁇ ackageHint «"somehi ⁇ t" && userlsMemberOfGroupWithThisHint(finance ) )
  • This example rule is matched if the package associated with this request has a package hint with value "somehint” , and the user making the request is a member of a user group that has a group hint with value "finance”. If the rule is matched, the destination server group name is "financeServers”.
  • routing rule manager 58 stores defined ordered lists of routing rules in a routing rule store or table 60.
  • the operation of the request routing system 10 shown in Figure 1 is now described referring to Figure 7. ⁇
  • a user generates a request through client 4 (100),
  • the request manager 20 receives the request from the client 4 (101), and generates a iiat of objects associated with the request (102).
  • the request manager 20 sends the list of the associated objects to the router manager 30 to query a name or value of a destination routing server group for the request (103).
  • the router manager 30 receives the list of objects associated with the request, and determines a destination server group name for the request (110), as further described below.
  • the router manager 30 sends the destination server group name to the request manager 20 (111).
  • the request manager 20 receives the destination server group name, and adds it to the request (1,12).
  • the request manager 20 returns the modified request to the client 4 (113).
  • the client 4 sends the modified request to on ⁇ 40a of the request dispatchers 40 (114).
  • the request manager 20 may send the modified request to one 40a of the request dispatchers 40 (115),
  • the request dispatcher 40a receives the modified request, and checks the destination server group name in the request (120). If the destination server group name is the name of the server group 45a to which the dispatcher 40a belongs, the dispatcher 4Ga either forwards the request to a destination server 6 directly or forwards it to another dispatcher in the same server group 45a. it chooses request dispatcher in server group 45a by round robin, so as to spread requests reasonably evenly across all the servers, if the destination server group name is different from the name of the server group 45a to which the dispatcher 40a belongs, the dispatcher 40a forwards the request to a dispatcher 40s that belongs to the named destination server group 45c (123).
  • the dispatcher 40s forwards it to a destination server 6 directly or chooses another dispatcher in the server group 45c by round robin.
  • the determination of the destination server group name at step 110 is shown in Figure 8.
  • the router manager 30 receives the list of objects associated • with the request (150). If a user group hint is used in routing rules, the router manager 30 also determines to which group the user who issued the request belongs (151). The user group is determined using information of the request or information of I ⁇ gging-in by the user. Similarly, the user account, user role, time of day, or user's current location may be determined from the log-in information as necessary.
  • the login information is usually maintained as session information, and is automatically sent along with each request from the user.
  • the router manager 30 compares each object-class/routi ⁇ g-hint pair of the objects, and generates one or more object sets, each set containing objects that have the same object-class/r ⁇ uting hint pair (152).
  • the router manager 30 then evaluates predetermined ordered routing rules based on. the object sets (153). The evaluation is carried out to see if a routing rule is matched with the routing hints of the object sets (154). If the rule is not matched, the router manager 30 evaluates the next rule (155). When the router manager 30 encounters a first rule that is matched, it determines a server group name in the matched rule as the destination server group for the request (156). The router manager 30 evaluates the routing rules in a predetermined order. If there is no routing rule matched, it returns a test result null (157) for regular dispatch handling.
  • the modification of the request by the request manager 20 at step 112 in Figure 7 may be performed by adding the received name of the destination server group to the request.
  • the destination server group may be represented in the . request message as a separate header or as additional information added to another header.
  • the new header element, or additional information identifies which server group sho ⁇ id process the request.
  • a header may have a routing element as follows: ⁇ MessageHeader> ⁇ routing>
  • a dispatcher 40 routes the request to the named server group "honkingBigCluater" in this example.
  • This example shows headers represented as XML, but other formats are possible.
  • the object manager 54 allows an administrator to provide a routing hint property to various object classes, and specify values for the routing hint property on the objects that will be referred to by routing rules.
  • a routing hint property may be an a ⁇ ay of string, For example, if the administrator wants to route requests for package GOSales, the administrator assigns a routing hint with a name, e.g., "GOSales", to the package. It is preferable to use a meaningful name for later references. Hints may be thought of as name/value pairs, where the name is the object class of the object that contains the routing hint.
  • a hint value serves to identify a set of objects that belong to the same class with the same hint value.
  • a package may have hints "GOSales” and "PublicPackage”. This package is thus a member of two sets: packages with hint equaf to "GOSales", and packages with hint equal to "PublicPackage".
  • An administrator may provide several packages with hint "PublicPackage”. In this case, the administrator can define one routing rule to do specific routing for GOSales requests for a specific user group, and another more general rule to route requests for all packages with hint "publicPackage”.
  • the routing rule manager 58 allows an administrator to define or modify routing rules during the configuration, and store it as a routing table configuration property in the routing rule store or table 60.
  • This property represents an ordered list of routing rules that map requests to server group name.
  • the routing table property may be structured as follows: struct routingTableEntry ⁇ routlngRule rule; string serverGroupName;
  • a routing rule may be considered as an interface or abstract base class. Subclasses of the routing rule may be defined.
  • An example of a routing rule table containing an array of object hints is: class objectRefere ⁇ ceRoutingRule extends routingRule ⁇ ObjectHint [] objectHints;
  • ObjectHint is a classE ⁇ um/hintValue pair: class ObjectHint ⁇ classEnum type; string value;
  • This rule specifies that a request associated with an object of class "package” that has routing hint “GOSates”, and is issued by a user who is a member of object class "group” that has routing hint “inventoryUsers” witl be routed to a server group named "honkingBigCluster 11
  • the order of the rules is significant and is specified by the administrator when the rules are created.
  • the router manager 30 evaluates the rules in array order and answers with the first match.
  • the administrator orders more specific rules first and more general rules last. More specific rules specify routing for requests that match specific tests, and more general rules specify routing for requests that do not match the mors specific tests.
  • the rules may be ordered such that the router manager 30 first checks for ruies specific to the user account, then checks rules specific to the role under which the user is acting, then checks rules specific to the user group to which the user belongs, and finally checks rules that apply to all users.
  • a more specific example is a rule that applies to requests from members of a specific group for reports against a specific package that is ordered before a rule that applies to any user against the same package.
  • the determination of a destination server group name shown in Figure 8 may be performed by invoking a routing determination method that is implemented by the router manager.
  • the router manager 30 is provided with a routing determination method to expose a routing calculation engine, e.g.,: String determineRouting( objectldentifier [] routeByObjects )
  • routeByObjects is an array of objectldentifier. It contains search paths for objects that are to be used to determine routing.
  • determineRouting returns the value of server group name of the matched rule. It returns nil or null if no rule was matched.
  • the request manager 20 may select requests that contain routing hints for further processing by the request routing system 10, and ignore requests that do not contain any routing hints.
  • the requests with no routing hints will be processed by dispatchers 40 in a normal manner.
  • Dispatchers 40 may operate in two load balancing modes, "weighted round r ⁇ bin", and "cluster compatible”.
  • Cluster compatible mode is intended for use when the request has already been routed (sprayed) by some other load balancing infrastructure.
  • a dispatcher 40a attempts to process the request on the local server 6. If the requested service is not available on the local server 6, the dispatcher 40a forwards the request to another dispatcher 40b where the service is available.
  • Defining routing rules by the request routing system 10 in a clustered environment allows the administrator to define special routing for some requests, while still letting most requests be processed by the dispatcher that receives them.
  • the dispatcher 40a processes the request in the usual way: it assumes the request is intended for the server group 45a of which the dispatcher 40a is a member, and either sprays the request to another dispatcher 40b in the group 45a, or processes locally, according to the load balancing mode. [00641 If routing rules are defined and one is matched, and the request manager 20 sets the name of a server group in the header of the request, dispatcher 40a that received the request needs to ensure that the request is processed by a dispatcher in the named server group. If the dispatcher that received the request Is in the named server group, it handles the request as usual.
  • the dispatcher 40a forwards the request to a dispatcher 40s that is in the named server group 45c and let the recipient 40s round-tobin within the named server group 45c, That results in an extra network transaction compared to an alternative where the dispatcher 40a chooses a dispatcher 4Ot within the named server group by round robin and sends the request directly to the dispatcher that will process the request,
  • Figure 9 shows another embodiment of a request routing system 200.
  • the request manager 20 is provided at a request dispatcher 40. Similar members to those shown in Figure 1 are shown using the same reference numbers.
  • client 4 sends a request to a request dispatcher 40a (201).
  • the request manager 20 receives the request from the dispatcher 40a (202), and generates a list of objects associated with the request (203).
  • the request manager 20 sends the list of the associated objects to the router manager 30 to query a name or value of a destination routing server group for the request (204).
  • the router manager 30 receives the list of objects associated with the request, and determines a destination server group name for the request (205). The router manager 30 sends the destination server group name to the request manager 20 (206).
  • the request manager 20 receives the destination server group name, and adds it to the request (207).
  • the request manager 20 returns the modified request to the dispatcher 40a (208).
  • the dispatcher 40a forwards the request to a destination server based on the destination server group name as described above as steps 120-125.
  • Figure 10 shows another embodiment of a request routing system 300.
  • the router manager 30 has the request manager , 20. Similar members to those shown In Figure 1 are shown using the same reference numbers.
  • client 4 sends a request to the request manger 20, or the request manager 20 intercepts the request sent to a dispatcher by the client 4 (201).
  • the request manager 20 generates a list of objects associated with the rtsquest (302).
  • the router manager 30 uses the list of objects associated with the request, determines a destination server group name for the request (303).
  • the request manager 20 adds the destination server group name to the request (304).
  • the request manager 20 sends the modified request to a dispatcher 40a (306).
  • the dispatcher 40a forwards the request to a destination server based on the destination server group name as described above as steps 120-125.
  • the user organization has three user groups: FinanceGods, FinanceUs.ers, and PublicUsers. There are two packages: PromoPackage, and FinancePackage. PromoPackage is a package of flattering promotional reports that is open for public consumption. FinancePackage is a package of financial stuff that is not for public consumption.
  • the administrator configures the settings of the request routing system 10 by assigning routing hints to user groups and packages, organizes dispatchers into folders, assigns server group names to the folders, and defines the routing rules as follows.
  • the administrator navigates to a page for setting configuration of the user group Fina ⁇ ceGods.
  • the administrator edits properties of FinanceGods and assigns a routingHint.
  • the administrator may provide a hint using the name FinanceGods".
  • the hint values may be arbitrary and that the administrator wants to avoid exposing real group names, she assigns a hint value "gFG" to represent "group FinanceGods".
  • the administrator assigns additional hints to the other user groups: hint "gFU" to group FinanceUsers; and hint "gP" to group PublicUsers.
  • the administrator navigates to settings pages for packages, and assigns routing hints to the packages: hint “pFinance” to FinancePackage; and hint “pPromo” to PromoPackage.
  • FastMachines is a group of a few fast servers dedicated to providing fast response times to a few important users.
  • FinanceMachines are a group of servers intended to be used by users who work in the finance department.
  • PublicMachines is a group of servers that serve public requests, e.g., within an extranet of the organization.
  • the administrator opens the settings page for folder FastMachines, and seta the name or value* of the server group to "sgFastMachines", Similarly, the administrator sets the value of server group for the other folders: server group "sgFinanceMachines 11 for folder FinanceMachines, and server group "sgPublicMachines” for folder PublicMachines.
  • the administrator now defines three routing rules: (1) requests from members of user group FinanceGods are routed to server group FastGroup; (2) requests for Fina ⁇ cePackage from members of user group Fi ⁇ anceUsers are routed to server group FlnanceMachines; and (3) all other requests are routed to server group PublicMachines.
  • FIG. 7 An example of request routing in this configuration is demonstrated where a finance user who is a member of user group fi ⁇ anceU ⁇ ers runs a report.
  • the finance user is logged in through a client 4, i.e., a browser of the finance department.
  • the user navigates to a page that contains a listing of available reports authored with FinancePackage.
  • This causes the browser 4 to send a request to the request manager 20 and hence via to a request dispatcher to a user interface page generation server.
  • requests for the user interface page generation server are not subject to the routing method, but are simply sprayed round robin fashion to the server instance.
  • the user interface page generation server (UIPGS for brevity) will generate the page that contains the list of reports (101).
  • the UIPGS requests the router manager 30 to get information about the reports to be listed on the page (103). in particular, it asks for a value of the server group to which a request to generate the report should be routed.
  • the router manager 30 evaluates the routing rules to determine the value of server group (110).
  • the determination of the value of server group at step 110 is carried out as follows.
  • the router manager 30 fetches the routing hints from the package referenced by the report (150) and generates a class/hint set: package/pFinance (152).
  • the router manager 30 also determines which user groups the requesting user is a member (151), and fetches the hints from those groups to generate class/hint set: user group/gFU (152).
  • the router manager 30 evaluates the routing rules in first to last order (152 -154). The first rule is not matched since the user is not a member of a group with hint gFG (153). The second rule is matched (153), and the router manager 30 determines that the value of routingServerGroup as sgFinanoeMachi ⁇ e ⁇ (155),
  • the router manager 30 returns the value 3gFina ⁇ ceMachfnes to the request manager 20 (111 ).
  • the UIPGS finishes generating the page and replies to the browser 4.
  • the user sees the new page and clicks a control on the page to run the report.
  • This causes the page to submit a request for the request manager 20 to invoke a report viewing server.
  • This request contains all necessary information to tell the report viewing server which report to run, including routing server group.
  • the report viewing server prepares a request for a report generating service from the information it received, by adding the value of routing server group, i.e., sgFinanceMachines, to the header of the request (112).
  • the request manager 20 sends the request to a local dispatcher 40a (115).
  • the local dispatcher 40a receives the request for ReportService, and fetches the value of routing server group from the header of the request (120).
  • the dispatcher 40a checks the value, and if the value of routing server group from the request matches the name of the server group 45a to which the dispatcher 40a belongs, it sends the request to one of its associated servers 6 that provides report generating services (121). If the value of routing server group does not match the name of the server group 45a, the dispatcher 40a figures out which dispatchers are in the named group 45c and forwards the request to one 40s of those dispatchers (123).
  • dispatcher 40a reverts to its standard routing mechanism, e.g., . the request is processed by the dispatcher that receives the request within the server group 45a to which the dispatcher 40a belongs, or processes the request locally if it is configured to dusterCompatlble load balancing mode.
  • the dispatcher 40s in the named group 45c receives the request; determines that the value of routing server group matches the group 45c to which It belongs, and processes the request by handing it off to a report generating server (125).
  • the report generating server executes the report, generates the output report, and sends it back to the browser 4, where the user sees the requested report.
  • a user organization uses various types of databases against which users report, as follows: humanResources on D62, accessed only from Linux servers; finance on SQL Server, accessed from Win32 servers; and sample database, used to generate reports for promotional/demo purposes.
  • routing hints as follows: pkFi ⁇ ance - finance reports for internal consumption by finance users, routing hints: finance; pkHumanRes - HR reports for Internal consumption by HR users, routing hints: hr; pkHRJobListings - HR reports open to ail internal users, routing hints: public_hr, hr; pkFinanceGeneral - finance reports suitable for general consumption by internal users, routing hints: public finance, finance; and pkExtra ⁇ etReports - reports generated against the sample database, routing hints: web.
  • routing hints as follows: . ugrpAIIUsers - all internal users (employees), , ⁇ routing hints: all; ugrpFi ⁇ anceUsers - members of the finance department, routing hints: finance, all; and ugrpHRUsers - members of the human resources department, routing hints: hr, all.
  • the administrator defines the following five server groups; sgPublicWJn32 - Win32 servers to generate reports against the SQL server database for any employee; sgPublicLinux - Linux servers to generate reports against the DB2 database for any employee; sglnternalWin32 - Win32 servers to generate reports against the SQL server database for members of the finance department.; sglnter ⁇ ai ⁇ nux - Linux servers to generate reports against the DB2 HR database for members of the HR department; and sg Extranet - servers to generate reports against the sample database for anonymouns web users.
  • the administrator defines five routing rules as shown in Table 1.
  • Routing rule (1) allows members of finance to run finance reports on their own internal servers.
  • Routing rule (2) allows members of hr to run hr reports on their own internal servers.
  • Routing rule (3) allows any employee to run public finance reports on the public Win32 server group.
  • Routing rule (4) allows any employee to run public hr reports on the public linux server group.
  • Routing rule (5) allows reports against web packages to run on the server group dedicated to extranet requests.
  • administrators can. specify which group of servers can process requests by setting routing hints and routing rules adequately.
  • the request routing system 10, 200, 300 allows users to specify a set of servers that can process content on the basis of requests, depending on, e.g., the departmental ownership of physical servers, traffic shaping within the site, or the availability of a data source only on certain platforms.
  • the request routing system 10, 200, 300 may be used to track the usage of computing resources by each department, so they can effectively determine how much computing power each department needs. This makes it possible to bill each department separately, or to adjust distribution of resources on a department by department basis. Also, the request routing system 10, 200, 300 allow segregation of requests to ensure quality of service. For example, the request routing system 10, 200, 300 can be used to route requests from users with important work to do to different servers than requests from extranet users. This way heavy load from extranet users does not affect users working on high priority activities.
  • the request routing system of the present invention may be implemented by any hardware, software or a combination , of hardware and software having the above described functions.
  • the software code, Instructions and/or statements, either In its entirety or a part thereof, may be stored in a computer readable memory.
  • a computer data signal representing the software code, instructions and/or statements, which may be embedded in a carrier wave may be transmitted via a communication network.
  • Such a.computer readable memory and a computer data signal and/or its carrier are also within the scope of the present invention, as well as the hardware, software and the combination thereof.
  • While particular embodiments of the present invention have been shown and described, changes and modifications may be made to such embodiments without departing from the scope of the invention.
  • the elements of the request routing system are described separately, however, two or more elements may be provided as a single element, or one or more elements may be shared with other component in computer systems.

Abstract

A request router manager receives information of one or more objects associated with the request. Each object belongs to an object class. One or more objects have one or more routing hints assigned to the objects. The request router manager groups the associated objects into one or more object sets based on the object date and the routing hints of the objects, and evaluates predefined routing rules based on the object sets to determine a destination server group name that identifies a destination server group for the request. The request is forwarded to the destination server group based on the destination server group name.

Description

Request Routing System for and Method of Request Routing FIELD OF INVENTION
[0001] The present invention relates to a request routing system and a method of request routing.
BACKGROUND OF THE INVENTION
[00021 Many corporations and other organizations use report generating systems. Large organizations typically use multiple report servers by which reports are generated from various, data sources and served to networked clients.
[0003] According to a standard concept within the realm of current network management, network traffic is routed based on consideration of user, cost, time of day, and/or performance considerations. Some existing reporting systems route requests among the multiple report servers based on such a standard concept, but they do not allow users to control routing of requests.
[0004] Organizations often want to designate certain requests to be served by a particular subset of the report servers. For example, each department within an enterprise is responsible for acquiring, maintaining, and managing its own servers, and the department prefers that these servers are used primarily by members of the department! Also, an organization may have a mixed environment with servers running different operating systems, on different hardware, and servers of a certain type are configured to access and generate reports against specific databases. A server type can connect only to its specific, associated databases, and has no connectivity to the databases used by the other server types. In such a case, reports authored for specific databases need to be routed to the corresponding server type.
[0005] It is therefore desirable to provide a mechanism that allows users to control where and how requests are routed.
i - SUMMARY OF THE INVENTION
[00061 It is an object of the invention to provide a system for request routing that obviates or mitigates at least one of the disadvantages of existing systems for request routing.
[0007] The invention uses routing hints assigned to objects, each belonging to an object class, to determine to which server group requests are to be routed.
[0008] In accordance with an aspect bf the present invention, there is provided a request routing system for routing requests issued by clients to servers. The request routing system comprises multiple request dispatchers, a router manager and a request manager. Each-request dispatcher is associated with one or more servers. The request dispatchers are grouped into one or more groups such that each group of dispatchers forms a server group. Each server group has a name. Each dispatcher is capable of routing a request to a dispatcher of a server group named in a request. The router manager has a request information handler, an object set handler, and a server group selector. The request information handler is provided for receiving information of one or more objects associated with a request, each object belonging to an object class, one or more objects having one or more routing hints assigned to the objects, and for returning a destination server group name which identifies a destination server group for the request. Th g object set handler is provided for grouping the associated objects into one or more object sets based on the object class and the routing hints of the objects. The server group selector is provided for evaluating routing rules based on the object sets to determine the destination server group name. The request manager has an object handler and a, request modifier. The object handler is provided for sending the information of objects associated with the request to the router manager. The request modifier is provided for receiving the destination sender group name, and adding it to the request.
[0009] In accordance with another aspect of the invention, there is provided a request router manager for managing routing of requests issued by clients to servers. The request router manager comprises a request information handler, an object set handler and a server group selector. The request information handler Is provided for receiving information of one or more objects associated with a request, each object belonging to an object class, one or more objects having one or more routing hints assigned to the objects, and for returning a destination server group name which identifies a destination server group for the request. The object set handler is provided for grouping the associated objects into one or more object sets based on the object class and the routing hints of the objects. The server group selector is provided for evaluating routing rules based on the object sets to determine the destination server group name such that the request is sent to the destination server group.
[0010] In accordance with another aspect of the invention, there is provided a method of routing a request from a client to a group of servers. The method comprises steps of receiving information of one or more objects associated with the request, each object belonging to an object class, one or more objects having one or more routing hints assigned to the objects; grouping the associated objects into one or more object sets based on the object class and the routing hints of the objects; evaluating, predefined routing rules based on the object sets to determine a destination server group name that identifies a destination server group for the request; and forwarding the request to the destination server group based on the destination server group name.
[0011] In accordance with another aspect of the invention, there is provided a computer readable medium storing computer readable code for use in the execution in a computer of the method of routing a request from a client to a group of servers.
[0012] In accordance with another aspect of the invention, there is provided a propagated signal carrier containing computer executable instructions and/or statements that can be read and executed by a computer, the computer executable instructions being used to execute the method of routing a request from a client to a group of servers. [0013] This summary of the invention does not necessarily describe all features of the invention.
BRIEF DESCRIPTION OF THE DRAWINGS .
[0014] These and other features of the invention will become more apparent from the following description in which reference Is made to the appended drawings wherein:
Figure 1 is a block diagram showing a request routing system in accordance with an embodiment of the present invention;
Figure 2 is a block diagram showing a request manager of the request routing system;
Figure 3 is a block diagram showing a router manager of the request routing system;
Figure 4 is a block diagram showing a configuration manager of the request routing system;
Figure 5 is a diagram showing an example of a request having routing hints assigned to objects;
Figure 6 is a diagram showing an example of user groups with routing hints assigned;
Figure 7 is a diagram showing the operation of the request routing system;
Figure 8 Is a flowchart showing determination of a destination server group name;
Figure 9 is a block diagram showing a request routing system in accordance with another embodiment of the present invention; and Figure 10 is a block diagram showing a request routing system in accordance with another embodiment of the present invention.
DETAILED DESCRIPTION
[0015] Figure 1 shows a request routing system 10 in accordance with an embodiment of the invention. The request routing system 10 is used in a computer network 2 having one or more clients 4 and one or more servers 6. The computer network 2 is typically provided for a single organization having multiple departments using multiple servers 6. A client 4 may be a report viewing tool or a scheduling or monitor service tool that generates requests for services, such as a request to generate a report. A single-client 4 is shown in Figure 1 for simplicity of the drawing. Each server 6 provides a spβcific service, such as a report generation service.
[0016] The request routing system 10 manages routing of requests of clients 4 to specific server groups depending on information in the requests. The request routing system 10 comprises a. request manager 20, a router manager 30, multiple request routers or dispatchers 40, and a configuration manager 50. As shown in Figure 4, the configuration manager 50 has a user interface 52, an abject manager 54, a user information manager 56 and a routing rule manager 53.
[0017] A request generated by a client 4 has one or more objects associated with the request. For example, a request to generate a report is associated with one or more objects, values of which are to be included in the generated report. Each object belongs to an object class. The administrator may use any object classes that are associated with the request. For example, a specific user wants to generate a report using a specific report specification. The report specification . was generated using a package of metadata that is extracted from a database system. These objects: user, report spec, package, are associated with the request, f he administrator may use these object classes. Also, the administrator may define any arbitrary object class that can be associated with a request, such as a timeOfDay object. An object class may be a package of objects based on which a report is authored, or a user group to- which a user belongs. Other examples of object classes include user account, user role, time of day, and user's current location. A user account refers to a login. It corresponds to the identity of an individual who has been authenticated (e.g. through a login) and' is known to the system. A user role class is similar to a user group class, and represents a set of permissions. A user may belong to several groups, but may choose to act in a specific role. For example, a privileged "super user" may choose to act in the role of an unprivileged user to generate a report that is to be sent to a customer, thus avoiding the risk of inadvertently generating a report that contained sensitive information.
[0018] The request routing system 10 allows, through the object manager 52, an administrator to assign one or more routing hints to each object. A routing hint is information relevant to routing. It may be a string value that is relevant to routing. An object may have more than one routing hint, Each routing hint value serves to identify a set of objects, i.e., all objects of the same class with the same routing hint value forms a set.
[0019] Figure 5 shows an example of a request , having five associated objects: Object 1 to Object 5. Object 1 belongs to class A. It is assigned with routing hint a. Similarly, object 2 belongs to class B1 and is assigned with routing hint b and routing hint c, and so on. Hint value "a" serves to form a set of Object 1 and Object 5, both of which belong to Class A. Similarly, hint value "c" serves to form a set of Object 2 arid Object 4, both of which belong to Class B.
[0020] An example of a routing hint is a package hint having an identification of a package that is used to author a report requested by the user. A package is a collection of objects that are suitably collected and/or organized for a particular purpose, such as generating a certain report or reports, or responding to a certain type of request. An administrator may assign one or more package hints to a package through the object manager 54.
[0021] Another example of a routing hint is a user group hint that relates to a user who issues a request through a client 4. Each user belongs to one or more user groups, e.g., a sales group, a finance group, or a public group. When a user issues a request through client 4, the request includes identification of the user groups to which the user belongs. Thus, this information may be used as a routing hint so that a request is routed depending on a user group to which the user who issued the request belongs, i.e., user's membership to a user group. The system 10 may allow an administrator to assign or modify routing hits to the user groups through the user information manger 56. Each user group may have one or more routing hints.
[00221 Figure β shows an example of an organization in which there are three user groups. User Group 1 is assigned with routing hint s and hint t. Similarly, user group 2 is assigned with routing hint u, and so on.
[0023] Referring back to Figure 1 , request dispatchers 40 are grouped into multiple groups. Each request dispatcher 40 is associated with one or more servers 6. Each group of dispatchers thus forms a group 45a-45c of servers 6. Each server group 45a-45c.has a unique group identification or name. A group name of a server group may be a string-valued property of dispatchers 40. All dispatchers 40 that share the same value for this property act as a single "cluster" or group. Figure 1 shows three server groups 45a-45c, but there may be more or fe wer server groups in different embodiments.
[0024] Each dispatcher 40 is capable of dispatching requests to its associated servers θ or one of other dispatchers 40, based on routing information in the requests. When a request dispatcher 40 receives a request destined for one of its. associated servers 6, the dispatcher 40 dispatches the request to the destination server 6. Otherwise, it dispatches the request to one of other dispatchers 40.
[0025] The request manager 20 manages requests generated by the client 4. In this embodiment, the request manager 20 is provided at the client 4. When the client 4 generates a request, the request manager 20 takes the request from the client 4 for modification, and returns a modified request to the client 4. ' The client 4 sends the modified request to one of the request dispatchers 40. in a different embodiment, the request manager 20 may directly send the modified request to one of the request dispatchers 40.
[0026] In different embodiments, the request manager 20 may be provided at each request dispatcher 40, or at selected one or more request dispatchers 40. In that case, the client 4 sends a request to a dispatcher 40, and the request manager 20 takes the request from the dispatcher 40 for modification, and returns a modified request to the dispatcher 40 for routing of the request to a destination server 8,
[0027] Figure 2 shows an example of the request manager 20. The request manager 20 has an object handier 22 and a request modifier 24.
[0028] The object handler 22 checks a received request, and sends information about objects associated with the request to the router manager 30 to query a destination server group name for the request. The object handler 22 may generate a list of objects associated with the request, and send it to the router manager 30.
[0020] The request modifier 24 receives the destination server group name from the router manager 30, and adds it to the request.
[0030] The router manager 30 determines the destination server group name for the request. As shown in Figure 3, the router manager 30 has a request information handler 32, an object set handler 34, and a server group selector 36.
[0031] The request information handler 32 receives from the request manager 20 the list of objects associated with the request It also returns to the request manager 20 the destination server group name.
[0032] The object set handler 34 groups the associated objects into one or more object sets based on the object class and the routing hints assigned to each object.
[0033] As shown in Figure 5, internally in an object, each routing hint value is associated with each object class. The dispatcher selector 36 considers each object as one or more object-class/routing-hint pairs. Different objects can have the same hint value. This allows the administrator to define arbitrary sets of objects: All objects of a specific class that have the same hint value form an object set. An object can belong to more than one object set by having more than one routing hint. [0034] The server group selector 36 determines the destination server group name by evaluating routings rules that were previously defined by the administrator. The routing rules are evaluated based on the object sets. Each routing rule contains a set of one or more predetermined criteria and a server group name. The server group selector 36 checks the value of the routing hints assigned to the objects associated with the request, in view of the criteria of each routing rule. A routing rule is matched when the value of the routing hints satisfies the criteria of the routing rule. When a routing rule Is matched, the server group selector 36 determines that the server group name of the routing rule is the destination server group name for the request. The routing rules are evaluated in a predetermined order until a rule is first matched. The server group selector 36 sends the determined destination server group name to the request manager 20.
[0035] The criteria of a rule specifies one or more values of a package hint, a user group hint, user account hint, user role hint, time of day hint, location hint, or other hint corresponding to other object class defined in the system 10. For example, a rule may be expressed logically as follows: If f ρackageHint«"somehiπt" && userlsMemberOfGroupWithThisHint(finance ) )
{ serverGroup = "f inanceServers";
}
[0036] This example rule is matched if the package associated with this request has a package hint with value "somehint" , and the user making the request is a member of a user group that has a group hint with value "finance". If the rule is matched, the destination server group name is "financeServers".
[0037] An administrator may define and modify routing rules through the routing rule manager 58. The routing rule manager 58 stores defined ordered lists of routing rules in a routing rule store or table 60. [0038] The operation of the request routing system 10 shown in Figure 1 is now described referring to Figure 7.
[0039] A user generates a request through client 4 (100), The request manager 20 receives the request from the client 4 (101), and generates a iiat of objects associated with the request (102). The request manager 20 sends the list of the associated objects to the router manager 30 to query a name or value of a destination routing server group for the request (103).
[0040] The router manager 30 receives the list of objects associated with the request, and determines a destination server group name for the request (110), as further described below. The router manager 30 sends the destination server group name to the request manager 20 (111).
[0041] The request manager 20 receives the destination server group name, and adds it to the request (1,12). The request manager 20 returns the modified request to the client 4 (113). The client 4 sends the modified request to on© 40a of the request dispatchers 40 (114). Alternatively, the request manager 20 may send the modified request to one 40a of the request dispatchers 40 (115),
[0042] The request dispatcher 40a receives the modified request, and checks the destination server group name in the request (120). If the destination server group name is the name of the server group 45a to which the dispatcher 40a belongs, the dispatcher 4Ga either forwards the request to a destination server 6 directly or forwards it to another dispatcher in the same server group 45a. it chooses request dispatcher in server group 45a by round robin, so as to spread requests reasonably evenly across all the servers, if the destination server group name is different from the name of the server group 45a to which the dispatcher 40a belongs, the dispatcher 40a forwards the request to a dispatcher 40s that belongs to the named destination server group 45c (123). The dispatcher 40s forwards it to a destination server 6 directly or chooses another dispatcher in the server group 45c by round robin. [0043] The determination of the destination server group name at step 110 is shown in Figure 8. The router manager 30 receives the list of objects associated with the request (150). If a user group hint is used in routing rules, the router manager 30 also determines to which group the user who issued the request belongs (151). The user group is determined using information of the request or information of Iσgging-in by the user. Similarly, the user account, user role, time of day, or user's current location may be determined from the log-in information as necessary. The login information is usually maintained as session information, and is automatically sent along with each request from the user. The router manager 30 then compares each object-class/routiπg-hint pair of the objects, and generates one or more object sets, each set containing objects that have the same object-class/rσuting hint pair (152).
[0044] The router manager 30 then evaluates predetermined ordered routing rules based on. the object sets (153). The evaluation is carried out to see if a routing rule is matched with the routing hints of the object sets (154). If the rule is not matched, the router manager 30 evaluates the next rule (155). When the router manager 30 encounters a first rule that is matched, it determines a server group name in the matched rule as the destination server group for the request (156). The router manager 30 evaluates the routing rules in a predetermined order. If there is no routing rule matched, it returns a test result null (157) for regular dispatch handling.
[0045] The modification of the request by the request manager 20 at step 112 in Figure 7 may be performed by adding the received name of the destination server group to the request. The destination server group may be represented in the . request message as a separate header or as additional information added to another header. The new header element, or additional information, identifies which server group shoύid process the request.
[0046] For example, a header may have a routing element as follows: <MessageHeader> <routing>
<routlngServerGroup>honkingBigCIuster</routingSeιverGroup> </routing> </MessageHeader>
[0047] Based on this routing element, a dispatcher 40 routes the request to the named server group "honkingBigCluater" in this example. This example shows headers represented as XML, but other formats are possible.
[0048] The configuration of the router manager system 10 is further described.
[0049] The object manager 54, through the user interface 52, allows an administrator to provide a routing hint property to various object classes, and specify values for the routing hint property on the objects that will be referred to by routing rules. A routing hint property may be an aσay of string, For example, if the administrator wants to route requests for package GOSales, the administrator assigns a routing hint with a name, e.g., "GOSales", to the package. It is preferable to use a meaningful name for later references. Hints may be thought of as name/value pairs, where the name is the object class of the object that contains the routing hint.
[0050] Because the property is an array it is possible to assign multiple hints to each object. In effect, a hint value serves to identify a set of objects that belong to the same class with the same hint value. For example, , a package may have hints "GOSales" and "PublicPackage". This package is thus a member of two sets: packages with hint equaf to "GOSales", and packages with hint equal to "PublicPackage". An administrator may provide several packages with hint "PublicPackage". In this case, the administrator can define one routing rule to do specific routing for GOSales requests for a specific user group, and another more general rule to route requests for all packages with hint "publicPackage". [0051] The routing rule manager 58, through the user interface 52, allows an administrator to define or modify routing rules during the configuration, and store it as a routing table configuration property in the routing rule store or table 60. This property represents an ordered list of routing rules that map requests to server group name.' For example, the routing table property may be structured as follows: struct routingTableEntry { routlngRule rule; string serverGroupName;
}
[0052] A routing rule may be considered as an interface or abstract base class. Subclasses of the routing rule may be defined. An example of a routing rule table containing an array of object hints is: class objectRefereηceRoutingRule extends routingRule { ObjectHint [] objectHints;
} where ObjectHint is a classEπum/hintValue pair: class ObjectHint { classEnum type; string value;
}
[0053] objectRefereπceRoutingRule contains an array of object class and string hint value pairs. Each pair identifies a class, and a hint value, e.g.; package="GOSales " or group="inventoryUsers". This rule is matched by a request that is associated with objects of the specified classes that have matching hint values.
[0054] An example is shown betow in the syntax of a fictitious programming language: routingTableEntry rte = { objectReferenceRoutingRule rule = { ObjectHint [] hints = {
{classEnum.package,"GOSales'} {classEnum.group,"inventoryUsers"} } }, "honkingBigCluster"
}
[0055] This rule specifies that a request associated with an object of class "package" that has routing hint "GOSates", and is issued by a user who is a member of object class "group" that has routing hint "inventoryUsers" witl be routed to a server group named "honkingBigCluster11
[0056] The order of the rules is significant and is specified by the administrator when the rules are created. The router manager 30 evaluates the rules in array order and answers with the first match. The administrator orders more specific rules first and more general rules last. More specific rules specify routing for requests that match specific tests, and more general rules specify routing for requests that do not match the mors specific tests. For example, the rules may be ordered such that the router manager 30 first checks for ruies specific to the user account, then checks rules specific to the role under which the user is acting, then checks rules specific to the user group to which the user belongs, and finally checks rules that apply to all users. A more specific example is a rule that applies to requests from members of a specific group for reports against a specific package that is ordered before a rule that applies to any user against the same package.
[00571 The determination of a destination server group name shown in Figure 8 may be performed by invoking a routing determination method that is implemented by the router manager. The router manager 30 is provided with a routing determination method to expose a routing calculation engine, e.g.,: String determineRouting( objectldentifier [] routeByObjects )
[0058] wherein routeByObjects is an array of objectldentifier. It contains search paths for objects that are to be used to determine routing.
10059] If a.routing rule is matched the routing determination method, determineRouting, returns the value of server group name of the matched rule. It returns nil or null if no rule was matched.
[0060] The request manager 20 may select requests that contain routing hints for further processing by the request routing system 10, and ignore requests that do not contain any routing hints. The requests with no routing hints will be processed by dispatchers 40 in a normal manner.
[0061] Dispatchers 40 may operate in two load balancing modes, "weighted round rαbin", and "cluster compatible".
[0062] Cluster compatible mode is intended for use when the request has already been routed (sprayed) by some other load balancing infrastructure. In cluster compatible mode, a dispatcher 40a attempts to process the request on the local server 6. If the requested service is not available on the local server 6, the dispatcher 40a forwards the request to another dispatcher 40b where the service is available. Defining routing rules by the request routing system 10 in a clustered environment allows the administrator to define special routing for some requests, while still letting most requests be processed by the dispatcher that receives them.
[0053] If no rules are matched, or none are defined, the value of a server group is nil. In this case, the dispatcher 40a processes the request in the usual way: it assumes the request is intended for the server group 45a of which the dispatcher 40a is a member, and either sprays the request to another dispatcher 40b in the group 45a, or processes locally, according to the load balancing mode. [00641 If routing rules are defined and one is matched, and the request manager 20 sets the name of a server group in the header of the request, dispatcher 40a that received the request needs to ensure that the request is processed by a dispatcher in the named server group. If the dispatcher that received the request Is in the named server group, it handles the request as usual. If the dispatcher 40a is not in the named server group, the dispatcher 40a forwards the request to a dispatcher 40s that is in the named server group 45c and let the recipient 40s round-tobin within the named server group 45c, That results in an extra network transaction compared to an alternative where the dispatcher 40a chooses a dispatcher 4Ot within the named server group by round robin and sends the request directly to the dispatcher that will process the request,
[006S] Figure 9 shows another embodiment of a request routing system 200. In the request routing system 200, the request manager 20 is provided at a request dispatcher 40. Similar members to those shown in Figure 1 are shown using the same reference numbers.
[0066] in this embodiment, client 4 sends a request to a request dispatcher 40a (201). The request manager 20 receives the request from the dispatcher 40a (202), and generates a list of objects associated with the request (203). The request manager 20 sends the list of the associated objects to the router manager 30 to query a name or value of a destination routing server group for the request (204).
[0067] The router manager 30 receives the list of objects associated with the request, and determines a destination server group name for the request (205). The router manager 30 sends the destination server group name to the request manager 20 (206).
[00Θ8] The request manager 20 receives the destination server group name, and adds it to the request (207). The request manager 20 returns the modified request to the dispatcher 40a (208). The dispatcher 40a forwards the request to a destination server based on the destination server group name as described above as steps 120-125.
[0069] Figure 10 shows another embodiment of a request routing system 300. In the request routing system 300, the router manager 30 has the request manager ,20. Similar members to those shown In Figure 1 are shown using the same reference numbers.
[0070] In this embodiment, client 4 sends a request to the request manger 20, or the request manager 20 intercepts the request sent to a dispatcher by the client 4 (201). The request manager 20 generates a list of objects associated with the rtsquest (302). The router manager 30, using the list of objects associated with the request, determines a destination server group name for the request (303). The request manager 20 adds the destination server group name to the request (304). The request manager 20 sends the modified request to a dispatcher 40a (306). The dispatcher 40a forwards the request to a destination server based on the destination server group name as described above as steps 120-125.
[0071] Example 1
[0072] An example is described using a user organization that has a complex installation with groups of dispatchers, many packages of objects for reports, and user communities or groups. The user administrator wants to set things up so that reports from different packages are executed by users from different groups and run on different groups of dispatchers, This example uses the request routing system 10 shown in Figures 1 and 7.
[0073] In this example, the user organization has three user groups: FinanceGods, FinanceUs.ers, and PublicUsers. There are two packages: PromoPackage, and FinancePackage. PromoPackage is a package of flattering promotional reports that is open for public consumption. FinancePackage is a package of financial stuff that is not for public consumption. [0074] The administrator configures the settings of the request routing system 10 by assigning routing hints to user groups and packages, organizes dispatchers into folders, assigns server group names to the folders, and defines the routing rules as follows.
[0075] Through a configuration user interface 52, the administrator navigates to a page for setting configuration of the user group FinaπceGods. The administrator edits properties of FinanceGods and assigns a routingHint. The administrator may provide a hint using the name FinanceGods". In this example, however, in view that the hint values may be arbitrary and that the administrator wants to avoid exposing real group names, she assigns a hint value "gFG" to represent "group FinanceGods". The administrator assigns additional hints to the other user groups: hint "gFU" to group FinanceUsers; and hint "gP" to group PublicUsers.
[0076] Similarly, the administrator navigates to settings pages for packages, and assigns routing hints to the packages: hint "pFinance" to FinancePackage; and hint "pPromo" to PromoPackage.
[0077] Now, the administrator navigates to a server administration page to organize dispatchers into three groups or folders named FastMachines, FinanceMachines, and PublicMachines! FastMachines is a group of a few fast servers dedicated to providing fast response times to a few important users. FinanceMachines are a group of servers intended to be used by users who work in the finance department. PublicMachines is a group of servers that serve public requests, e.g., within an extranet of the organization.
[0078] The administrator opens the settings page for folder FastMachines, and seta the name or value* of the server group to "sgFastMachines", Similarly, the administrator sets the value of server group for the other folders: server group "sgFinanceMachines11 for folder FinanceMachines, and server group "sgPublicMachines" for folder PublicMachines.
[0079] The administrator now defines three routing rules: (1) requests from members of user group FinanceGods are routed to server group FastGroup; (2) requests for FinaπcePackage from members of user group FiπanceUsers are routed to server group FlnanceMachines; and (3) all other requests are routed to server group PublicMachines.
[0080] These rules are. expressed as (1) UserGroup; gFG, Package; don't care → sgFastMachines; (2) UserGroup: gFU, Package: pFinance → sgFinanceMachiπes; and (3) UserGroup: don't care, Package: don't care sgPublicMachines,
[0081JThus, configuration of the system for request routing is complete.
[0082] An example of request routing in this configuration is demonstrated where a finance user who is a member of user group fiπanceUβers runs a report. Referring to Figure 7, the finance user is logged in through a client 4, i.e., a browser of the finance department. The user navigates to a page that contains a listing of available reports authored with FinancePackage. This causes the browser 4 to send a request to the request manager 20 and hence via to a request dispatcher to a user interface page generation server. Assume that requests for the user interface page generation server are not subject to the routing method, but are simply sprayed round robin fashion to the server instance. The user interface page generation server (UIPGS for brevity) will generate the page that contains the list of reports (101). The UIPGS requests the router manager 30 to get information about the reports to be listed on the page (103). in particular, it asks for a value of the server group to which a request to generate the report should be routed. The router manager 30 evaluates the routing rules to determine the value of server group (110).
[0083] Referring to Figure 8, the determination of the value of server group at step 110 is carried out as follows. The router manager 30 fetches the routing hints from the package referenced by the report (150) and generates a class/hint set: package/pFinance (152). The router manager 30 also determines which user groups the requesting user is a member (151), and fetches the hints from those groups to generate class/hint set: user group/gFU (152). The router manager 30 evaluates the routing rules in first to last order (152 -154). The first rule is not matched since the user is not a member of a group with hint gFG (153). The second rule is matched (153), and the router manager 30 determines that the value of routingServerGroup as sgFinanoeMachiπeβ (155),
[0084] Referring back to Figure 7, the router manager 30 returns the value 3gFinaπceMachfnes to the request manager 20 (111 ). The UIPGS finishes generating the page and replies to the browser 4. The user sees the new page and clicks a control on the page to run the report. This causes the page to submit a request for the request manager 20 to invoke a report viewing server. This request contains all necessary information to tell the report viewing server which report to run, including routing server group. The report viewing server prepares a request for a report generating service from the information it received, by adding the value of routing server group, i.e., sgFinanceMachines, to the header of the request (112). The request manager 20 sends the request to a local dispatcher 40a (115).
[0085] The local dispatcher 40a receives the request for ReportService, and fetches the value of routing server group from the header of the request (120). The dispatcher 40a checks the value, and if the value of routing server group from the request matches the name of the server group 45a to which the dispatcher 40a belongs, it sends the request to one of its associated servers 6 that provides report generating services (121). If the value of routing server group does not match the name of the server group 45a, the dispatcher 40a figures out which dispatchers are in the named group 45c and forwards the request to one 40s of those dispatchers (123).
[0086] Alternative: if no rule was matched, the value of routing server group is null. In this case dispatcher 40a reverts to its standard routing mechanism, e.g., . the request is processed by the dispatcher that receives the request within the server group 45a to which the dispatcher 40a belongs, or processes the request locally if it is configured to dusterCompatlble load balancing mode. [0087] The dispatcher 40s in the named group 45c receives the request; determines that the value of routing server group matches the group 45c to which It belongs, and processes the request by handing it off to a report generating server (125). The report generating server executes the report, generates the output report, and sends it back to the browser 4, where the user sees the requested report.
[0088] Example 2
[3089] In this example, a user organization uses various types of databases against which users report, as follows: humanResources on D62, accessed only from Linux servers; finance on SQL Server, accessed from Win32 servers; and sample database, used to generate reports for promotional/demo purposes.
[0090] The following five packages are predefined, and an administrator assigns routing hints as follows: pkFiπance - finance reports for internal consumption by finance users, routing hints: finance; pkHumanRes - HR reports for Internal consumption by HR users, routing hints: hr; pkHRJobListings - HR reports open to ail internal users, routing hints: public_hr, hr; pkFinanceGeneral - finance reports suitable for general consumption by internal users, routing hints: public finance, finance; and pkExtraπetReports - reports generated against the sample database, routing hints: web.
[0091] The following three user groups are predefined, and the administrator assigns routing hints as follows: . ugrpAIIUsers - all internal users (employees), , routing hints: all; ugrpFiπanceUsers - members of the finance department, routing hints: finance, all; and ugrpHRUsers - members of the human resources department, routing hints: hr, all.
[0092] The administrator defines the following five server groups; sgPublicWJn32 - Win32 servers to generate reports against the SQL server database for any employee; sgPublicLinux - Linux servers to generate reports against the DB2 database for any employee; sglnternalWin32 - Win32 servers to generate reports against the SQL server database for members of the finance department.; sglnterπaiϋnux - Linux servers to generate reports against the DB2 HR database for members of the HR department; and sg Extranet - servers to generate reports against the sample database for anonymouns web users.
[0093] The administrator defines five routing rules as shown in Table 1.
[0094] Table 1
Figure imgf000023_0001
t0095] Routing rule (1) allows members of finance to run finance reports on their own internal servers. Routing rule (2) allows members of hr to run hr reports on their own internal servers. Routing rule (3) allows any employee to run public finance reports on the public Win32 server group. Routing rule (4) allows any employee to run public hr reports on the public linux server group. Routing rule (5) allows reports against web packages to run on the server group dedicated to extranet requests.
[0096] Thus, administrators can. specify which group of servers can process requests by setting routing hints and routing rules adequately.
[0097] The request routing system 10, 200, 300 allows users to specify a set of servers that can process content on the basis of requests, depending on, e.g., the departmental ownership of physical servers, traffic shaping within the site, or the availability of a data source only on certain platforms.
[OOΘS] The request routing system 10, 200, 300 may be used to track the usage of computing resources by each department, so they can effectively determine how much computing power each department needs. This makes it possible to bill each department separately, or to adjust distribution of resources on a department by department basis. Also, the request routing system 10, 200, 300 allow segregation of requests to ensure quality of service. For example, the request routing system 10, 200, 300 can be used to route requests from users with important work to do to different servers than requests from extranet users. This way heavy load from extranet users does not affect users working on high priority activities.
[0099] The request routing system of the present invention may be implemented by any hardware, software or a combination, of hardware and software having the above described functions. The software code, Instructions and/or statements, either In its entirety or a part thereof, may be stored in a computer readable memory. Further, a computer data signal representing the software code, instructions and/or statements, which may be embedded in a carrier wave may be transmitted via a communication network. Such a.computer readable memory and a computer data signal and/or its carrier are also within the scope of the present invention, as well as the hardware, software and the combination thereof. [00100] While particular embodiments of the present invention have been shown and described, changes and modifications may be made to such embodiments without departing from the scope of the invention. For example, the elements of the request routing system are described separately, however, two or more elements may be provided as a single element, or one or more elements may be shared with other component in computer systems.

Claims

What is claimed is:
1. A request routing system for routing requests issued by clients to servers, the request routing system comprising: multiple request dispatchers, each request dispatcher being associated with one or more servers, the request dispatchers being grouped into one or more groups such that each group of dispatchers forms a server group, each server group having a name, each dispatcher being capable of routing a request to a dispatcher of a server group named in a request; a router manager having: a request Information handler for receiving information of one or more objects associated with a request, each object belonging to an object class, one or more objects having one or more routing hints assigned to the objects, and for returning a destination server group name which identifies a destination server group for the request; an object set handler for grouping the associated objects into one or more object sets based on the object class and the routing hints of the objects; and a server group selector for evaluating routing rules based on the object sets to determine the destination server group name; and a request manager having: an object handier for sending the information of objects associated with the request to the router manager; and a request modifier for receiving the destination server group name, and adding it to the request. ■
2. The request dispatching system as claimed In claim 1 , wherein the request manager is provided at a client; and the request manager receives the request from the client.
3. The request dispatching system as claimed in claim 1, wherein the request manager is provided at one of the request dispatchers, and the request manager receives the request from the request dispatcher.
4. The request dispatching system as claimed in claim 1, wherein the request manager is provided at the router manager, and the request manager intercepts the request generated by the client.
5. A request router manager for managing routing of requests issued by clients to servers, the request router manager comprising: a request information handler for receiving information of one or more objects associated with a request, each object belonging to an object class, one or more objects having one or more routing hints assigned to the objects, and for returning a destination server group name which identifies a destination server group for the request; an object set handler for grouping the associated objects into one or more object sets based on the object class and the routing hints of the objects; and a server group selector for evaluating routing rules based on the object sets to determine the destination server group name such that the request is sent to the destination server group.
β. The request router manager as claimed in claim 5, wherein the request information handler determines a package based on which the request is prepared, and one or more package hints associated with the package.
7. The request router manager as claimed in claim 6, wherein the request information handler determines a user group to Which a user who issued the request belongs, and one or more user group hints associated with the user group.
8. The request router manager as claimed in claim 5, wherein the server group selector determines a server group name included in a routing rule as the destination server group name when the routing rule matches one of the object sets.
9. The request router manager as claimed in claim S further comprising; a request manager for adding the destination server group name to the request to generate a modified request.
10. The request router manager as claimed in claim 9, wherein the request manager sends the modified request to a dispatcher so that the modified request is forwarded to a dispatcher that belongs to the destination server group.
11.The request router manager as claimed in claim 5 further comprising: a configuration manager for allowing users to assign routing hints to objects and define routing rules.
12.A method of routing s request from a client to a group of servers, the method comprising steps of: receiving information of one or more objects associated with the request, each object belonging to an object class, one or more objects having one or more routing hints assigned to the objects; grouping the associated objects into one or more object sets based on the object class and the routing hints of the objects; evaluating predefined routing rules based on the object sets to determine a destination server group name that identifies a destination server group for the request; and forwarding the request to the destination server group based on the destination server group name,
13. The method as claimed in claim 12 further comprising the steps of; determining a package based on which the request is prepared; and determining one or more package hints associated with the package.
14. The method as claimed in claim 13 further comprising the steps of; determining a user group to which a user who issued the request belongs; and determining one or more user group hints associated with the user group.
15. The method as claimed in claim 12, wherein the evaluating step determines a server group name included In a routing rule as the destination server group name when the routing rule matches one of the object sets.
16. The method as claimed in claim 12, wherein the forwarding step comprises the step of: adding the destination server group name to the request
17. The method as claimed in claim 16, wherein the forwarding step further comprises the step of: sending the request with the destination server group name to a request dispatcher for forwarding the request to the destination server group.
18. The method as claimed in claim 12 further comprising the step of: allowing a user to assign and/or modify routing hints to objects.
19. The method as claimed in claim 12 further comprising the step of: allowing a user to define and/or modify routing rules.
20. The method as recited in claim 12, further comprising the steps of: grouping multiple request dispatchers to form one or more server groups, each request dispatcher being associated with one or more servers; and providing a name to each server group.
21. A computer readable medium storing computer readable code for use in the execution in a computer of a method of routing a request from a client to a group of servers, the method comprising the steps of: receiving information of one or more objects associated with the request, each object belonging to an object class, one or more objects having one or more routing hints assigned to the objects; grouping the associated objects into one or more object sets based on the object class and the routing hints of the objects; evaluating predefined routing rules based on the object sets to determine a destination server group name that identifies a destination server group for the request; and forwarding the request to the destination server group based on the destination server group name. -
22.A propagated signal carrier containing computer executable instructions and/or statements that can be read and executed by a computer, the computer executable instructions being used to execute a method of routing a request from a client to a group of servers, the method comprising the steps of: receiving information of one or more objects associated with the request, each object belonging to an object class, one or more objects having one or more routing hints assigned to the objects; grouping the associated objects into one or more object sets based on the object class and the routing hints of the objects; evaluating predefined routing rules based on the object sets to determine a destination server group name that Identifies a destination server group for the request; and forwarding the request to the destination server group based on the destination server group name.
PCT/CA2006/001018 2005-06-23 2006-06-23 Request routing system for and method of request routing WO2006136021A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP06761083A EP1900168A1 (en) 2005-06-23 2006-06-23 Request routing system for and method of request routing

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CA2,510,626 2005-06-23
CA002510626A CA2510626A1 (en) 2005-06-23 2005-06-23 Request routing system for and method of request routing

Publications (1)

Publication Number Publication Date
WO2006136021A1 true WO2006136021A1 (en) 2006-12-28

Family

ID=37570066

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CA2006/001018 WO2006136021A1 (en) 2005-06-23 2006-06-23 Request routing system for and method of request routing

Country Status (3)

Country Link
EP (1) EP1900168A1 (en)
CA (1) CA2510626A1 (en)
WO (1) WO2006136021A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2592550B1 (en) * 2011-11-11 2015-04-15 Alcatel Lucent Distributed mapping function for large scale media clouds

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001044951A1 (en) * 1999-12-14 2001-06-21 Gte Service Corporation Secure gateway having routing feature
US20020152307A1 (en) * 2001-04-12 2002-10-17 Doyle Ronald Patrick Methods, systems and computer program products for distribution of requests based on application layer information
US6484161B1 (en) * 1999-03-31 2002-11-19 Verizon Laboratories Inc. Method and system for performing online data queries in a distributed computer system
JP2003186780A (en) * 2001-12-13 2003-07-04 Sony Corp Information providing system, apparatus and method, information processor and method, recording medium and program
US20030158905A1 (en) * 2002-02-19 2003-08-21 Postini Corporation E-mail management services
EP1418716A1 (en) * 2002-11-06 2004-05-12 NTT DoCoMo, Inc. Communication control system, communication control method, routing controller and router suitably used for the same

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6484161B1 (en) * 1999-03-31 2002-11-19 Verizon Laboratories Inc. Method and system for performing online data queries in a distributed computer system
WO2001044951A1 (en) * 1999-12-14 2001-06-21 Gte Service Corporation Secure gateway having routing feature
US20020152307A1 (en) * 2001-04-12 2002-10-17 Doyle Ronald Patrick Methods, systems and computer program products for distribution of requests based on application layer information
JP2003186780A (en) * 2001-12-13 2003-07-04 Sony Corp Information providing system, apparatus and method, information processor and method, recording medium and program
US20030158905A1 (en) * 2002-02-19 2003-08-21 Postini Corporation E-mail management services
EP1418716A1 (en) * 2002-11-06 2004-05-12 NTT DoCoMo, Inc. Communication control system, communication control method, routing controller and router suitably used for the same

Also Published As

Publication number Publication date
EP1900168A1 (en) 2008-03-19
CA2510626A1 (en) 2006-12-23

Similar Documents

Publication Publication Date Title
US8141130B2 (en) Automated dissemination of enterprise policy for runtime customization of resource arbitration
US7689562B2 (en) Access control system, a rule engine adaptor, a rule-based enforcement platform and a method for performing access control
US8010991B2 (en) Policy resolution in an entitlement management system
US20030221012A1 (en) Resource manager system and method for access control to physical resources in an application hosting environment
CN109977690A (en) A kind of data processing method, device and medium
US8959226B2 (en) Load balancing workload groups
US20110029672A1 (en) Selection of a suitable node to host a virtual machine in an environment containing a large number of nodes
US20120005273A1 (en) System, method, computer program products, standards, soa infrastructure, search algorithm and a business method tehreof for ai enabled information communication and computation (icc) framework (newalter) operated by netalter operating system (nos) in terms of netalter service browser (nsb) to device alternative to internet and enterprise &amp; social communication framework engrossing universally distributed grid supercomputing and peer to peer framework
D'Mello et al. A qos broker based architecture for dynamic web service selection
US20060236380A1 (en) System and method for grouping device or application objects in a directory service
CN101621541A (en) Method and apparatus for distributed application context-aware transaction processing
US20120004947A1 (en) Integrated data management for network service providers and customers
CA2518894C (en) Request routing system for and method of request routing
Kendrick et al. An efficient multi-cloud service composition using a distributed multiagent-based, memory-driven approach
US7403985B2 (en) Method and system for analyzing electronic service execution
US10891357B2 (en) Managing the display of hidden proprietary software code to authorized licensed users
CN109542741A (en) The automatic packet storage approach of log, device, computer equipment and storage medium
US20030225607A1 (en) Commoditized information management system providing role aware, extended relationship, distributed workflows
US20010027467A1 (en) Massively distributed database system and associated method
US20120109933A1 (en) Method and apparatus for federated search
US8931048B2 (en) Data system forensics system and method
Thirumaran et al. Architecture for evaluating web services qos parameters using agents
WO2006136021A1 (en) Request routing system for and method of request routing
US7356712B2 (en) Method of dynamically assigning network access priorities
US8868720B1 (en) Delegation of discovery functions in information management system

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: DE

WWW Wipo information: withdrawn in national office

Country of ref document: DE

WWE Wipo information: entry into national phase

Ref document number: 2006761083

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2006761083

Country of ref document: EP