A portion of the disclosure of this patent document may contain material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
In many business organizations, large scale server applications are utilized by multiple user groups (e.g., a human resources group, an accounting group, etc.) for interacting among one another and for performing various functions. As changes in the number of users (or groups of users) using server applications in an organization occur, “scaling” may need to be implemented to accommodate the changes. One scaling approach is to add more power (i.e., processors machines and/or memory) to support a given entity (i.e., users or applications). This is known as “scaling up”. Another scaling approach is to add more machines (i.e., servers) to support a given entity (i.e., users or applications). This is known as “scaling out.” A third approach is a combination of the first two approaches (i.e., “scaling up” and “scaling out”). Current implementations of the aforementioned scaling approaches however, suffer from a number of drawbacks. For example, when scaling up such that all users in a system are equally likely to interact with one another, current implementations which distribute users evenly across all of an available number of servers will result in the amount of network traffic between servers to increase significantly and can cause an organization's computer system to choke in spite of an increased number of available machines. It is with respect to these considerations and others that the various embodiments of the present invention have been made.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended as an aid in determining the scope of the claimed subject matter.
Embodiments are provided for scaling up and scaling out of a server architecture for large scale real-time applications is provided. A group of users may be provisioned by assigning them to a server pool and allotting them to a group. Grouped users help to reduce inter-server communication when they are serviced by the same server in the pool. High availability may be provided by choosing a primary server and one or more secondary servers from the pool. In addition users belonging to the same group may be serviced by the same server. Operations taken on the primary server are synchronously replicated to secondary servers so that when a primary server fails, a secondary server may be chosen as the primary for the group. Servers for multiple user groups may be load balanced to account for changes in either the number of users or the number of servers in a pool. Multiple pools may be paired for disaster recovery. These and other features and advantages will be apparent from a reading of the following detailed description and a review of the associated drawings. It is to be understood that both the foregoing general description and the following detailed description are illustrative only and are not restrictive of the invention as claimed.
Scaling up and scaling out of a server architecture for large scale real-time applications is provided. A group of users may be provisioned by assigning them to a server pool and allotting them to a group. Grouped users help to reduce inter-server communication when they are serviced by the same server in the pool. High availability may be provided by choosing a primary server and one or more secondary servers from the pool. In addition users belonging to the same group may be serviced by the same server. Operations taken on the primary server are synchronously replicated to secondary servers so that when a primary server fails, a secondary server may be chosen as the primary for the group. Servers for multiple user groups may be load balanced to account for changes in either the number of users or the number of servers in a pool. Multiple pools may be paired for disaster recovery.
In the following detailed description, references are made to the accompanying drawings that form a part hereof, and in which are shown by way of illustrations specific embodiments or examples. These embodiments may be combined, other embodiments may be utilized, and structural changes may be made without departing from the spirit or scope of the present invention. The following detailed description is therefore not to be taken in a limiting sense, and the scope of the present invention is defined by the appended claims and their equivalents.
Referring now to the drawings, in which like numerals represent like elements through the several figures, various aspects of the present invention will be described.
The server architecture 10 includes servers 40, 50 and 60 which are in communication with each other. The set of the servers 40, 50 and 60 may collectively define a pool. Each of the servers 40, 50 and 60 may also function as both primary and secondary servers for different sets of tenant user groups. As defined herein a “tenant” may either be an organization or a sub-division of a large company. In accordance with the embodiments described herein, a pool may service multiple tenants (e.g., a single server pool may service multiple companies). In the server architecture 10, the server 40 may serve as a primary server for group 70 (which includes tenant user groups (UG) 1 and 2) and as a secondary server for group 76 (which includes tenant user groups (UG) 3, 4, 5 and 6). Similarly, the server 50 may serve as a primary server for group 72 (which includes tenant user groups (UG) 3 and 4) and as a secondary server for group 78 (which includes tenant user groups (UG) 1, 2, 5 and 6). Finally, the server 60 may serve as a primary server for group 74 (which includes tenant user groups (UG) 5 and 6) and as a secondary server for user group 80 (which includes tenant user groups (UG) 1, 2, 3 and 4). It should be understood that users in a user group have a static affinity to a pool. That is, when users are enabled for services in the server architecture 10, they are assigned to a server pool which would service them. A user (for example, the user 2) typically accesses applications and services from the primary server for the user's particular user group. For example, the user 2 in the server architecture 10 is part of UG 1 (i.e., tenant user group 1). Thus, the user 2 would typically access services and applications associated with UG 1 from the primary server 70.
Each of the servers 40, 50 and 60 may also store an application 20 which may be utilized for providing user provisioning, high availability, load balancing (which will be discussed below) and disaster recovery (which will discussed with respect to
For example, in providing user provisioning, the application 20 may be configured so that when users are assigned to a pool, they are also allotted to a group. It should be understood that, in accordance with an embodiment, grouping may be based on a number of constraints. These constraints may include: 1. Users of the same tenant should (but are not required to) be placed in the same group; and 2. The size of a group should not be greater than a pre-defined limit. It will be appreciated that by grouping users, the application 20 may facilitate a reduction of inter-server communication by having all of the users in a particular group serviced by the same machine.
In providing high availability, the application 20 may be configured to choose one primary server and one or more secondary servers (the number of secondary servers being based on the total number of servers in a pool and high availability guarantees granted) for each group of users. It should be understood that the higher the guarantee, the number of secondary servers which are chosen is increased. As discussed above, the aforementioned configuration allows all of the users in a particular group to be serviced by the same server. In providing high availability, it should be understood that any operation taken on a primary server is synchronously replicated (as shown by the curved arrows between the servers 40, 50 and 60) to the secondary servers. As a result, the loss of the primary server (e.g., due to failure) does not result in a loss of data. In particular, when a failure occurs on a primary server for a user group), one of the secondary servers may be chosen as the new primary for that user group. For example,
As discussed above, one server may serve as both a primary and/or secondary for multiple user groups. It should further be understood that one server may also be a primary for one group and a secondary for another group at the same time (i.e., simultaneously). However, a server may not be a primary as well as a secondary for the same group.
In providing a load balancing function for the server architecture 10, the application 20 may be configured to load balance servers by performing a calculation based on a ratio of a total number of tenant user groups and a total number of servers in a pool. For example, given N group of users and M number of servers, the load balancing function provided by the application 20 may attempt to make each server the primary server for N/M user groups. For example, as shown in
The routine 300 begins at operation 305, where the application 20 may be utilized to group tenant users assigned to a pool in a server architecture. It should be understood that by grouping the tenant users, the application 20 is utilized to reduce inter-server communication for the grouped tenant users because the tenant users are all being serviced by the same server in a pool.
From operation 305, the routine 300 continues to operation 310, where the application 20 may be utilized to choose a primary server and one or more secondary servers for each tenant user group. It should be understood that, in accordance with an embodiment, a single server may be simultaneously utilized as both a primary server and a secondary server for multiple tenant groups.
From operation 310, the routine 300 continues to operation 315, where the application 20 may be utilized to synchronously replicate operations taken on the primary server to one or more secondary servers.
From operation 315, the routine 300 continues to operation 320, where the application 20 may be utilized to choose new primary servers for the tenant user groups whose primary servers have failed, from among the secondary servers.
From operation 320, the routine 300 continues to operation 325, where the application 20 may be utilized to load balance the servers for the grouped tenant users. In particular, the application 20 may be configured to perform calculations for load balancing both the primary and secondary servers for each group of tenant users. The calculations may include taking a ratio of the number of tenant user groups and the number of servers in a pool.
From operation 325, the routine 300 continues to operation 330, where the application 20 may be utilized to pair server pools for disaster recovery. For example, when a majority of the servers in the pool 200 fail, the backup pool 250 will start servicing users of the pool 200. As described above with respect to
The computing device 400 may have additional features or functionality. For example, the computing device 400 may also include additional data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, solid state storage devices (“SSD”), flash memory or tape. Such additional storage is illustrated in
Generally, consistent with various embodiments, program modules may be provided which include routines, programs, components, data structures, and other types of structures that may perform particular tasks or that may implement particular abstract data types. Moreover, various embodiments may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. Various embodiments may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
Furthermore, various embodiments may be practiced in an electrical circuit comprising discrete electronic elements, packaged or integrated electronic chips containing logic gates, a circuit utilizing a microprocessor, or on a single chip containing electronic elements or microprocessors. For example, various embodiments may be practiced via a system-on-a-chip (“SOC”) where each or many of the components illustrated in
Various embodiments, for example, may be implemented as a computer process (method), a computing system, or as an article of manufacture, such as a computer program product or computer readable media. The computer program product may be a computer storage media readable by a computer system and encoding a computer program of instructions for executing a computer process.
The term computer readable media as used herein may include computer storage media. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. The system memory 404, removable storage 409, and non-removable storage 410 are all computer storage media examples (i.e., memory storage.) Computer storage media may include, but is not limited to, RAM, ROM, electrically erasable read-only memory (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store information and which can be accessed by the computing device 400. Any such computer storage media may be part of the computing device 400. The computing device 400 may also have input device(s) 412 such as a keyboard, a mouse, a pen, a sound input device (e.g., a microphone), a touch input device, etc. Output device(s) 414 such as a display, speakers, a printer, etc. may also be included. The aforementioned devices are examples and others may be used.
The term computer readable media as used herein may also include communication media. Communication media may be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media. The term “modulated data signal” may describe a signal that has one or more characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media may include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), infrared, and other wireless media.
Various embodiments are described above with reference to block diagrams and/or operational illustrations of methods, systems, and computer program products. The functions/acts noted in the blocks may occur out of the order as shown in any flow diagram. For example, two blocks shown in succession may in fact be executed substantially concurrently or the blocks may sometimes be executed in the reverse order, depending upon the functionality/acts involved.
While certain embodiments have been described, other embodiments may exist. Furthermore, although various embodiments have been described as being associated with data stored in memory and other storage mediums, data can also be stored on or read from other types of computer-readable media, such as secondary storage devices (i.e., hard disks, floppy disks, or a CD-ROM), a carrier wave from the Internet, or other forms of RAM or ROM. Further, the disclosed routines' operations may be modified in any manner, including by reordering operations and/or inserting or operations, without departing from the embodiments described herein.
It will be apparent to those skilled in the art that various modifications or variations may be made without departing from the scope or spirit of the embodiments described herein. Other embodiments will be apparent to those skilled in the art from consideration of the specification and practice of the embodiments described herein. Although the invention has been described in connection with various illustrative embodiments, those of ordinary skill in the art will understand that many modifications can be made thereto within the scope of the claims that follow. Accordingly, it is not intended that the scope of the invention in any way be limited by the above description, but instead be determined entirely by reference to the claims that follow.
Number | Date | Country | |
---|---|---|---|
Parent | 13676436 | Nov 2012 | US |
Child | 14886534 | US |