A portion of the disclosure of this patent document contains 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.
The present invention is generally related to computer systems and software such as middleware, and is particularly related to systems and methods for parallel multiplexing (herein referred to as muxing) between servers in a cluster.
Within any large organization, over the span of many years the organization often finds itself with a sprawling IT infrastructure that encompasses a variety of different computer hardware, operating-systems, and application software. Although each individual component of such infrastructure might itself be well-engineered and well-maintained, when attempts are made to interconnect such components, or to share common resources, it is often a difficult administration task. In recent years, organizations have turned their attention to technologies such as virtualization and centralized storage, and even more recently cloud computing, which can provide the basis for a shared infrastructure. However, there are few all-in-one platforms that are particularly suited for use in such environments. These are the general areas that embodiments of the invention are intended to address.
Systems and methods are provided for providing parallel muxing between servers in a cluster. One such system can include a cluster of one or more high performance computing systems, each including one or more processors and a high performance memory. The cluster communicates over an InfiniBand network. The system can also include a middleware environment, executing on the cluster, that includes one or more application server instances. The system can further include a plurality of multiplexers (herein referred to as a muxer), wherein each application server instance includes at least one muxer. Each muxer can receive information from a plurality of threads to transmit to a different muxer on a different application server instance over the Infiniband network using a plurality of parallel channels.
In the following description, the invention will be illustrated by way of example and not by way of limitation in the figures of the accompanying drawings. References to various embodiments in this disclosure are not necessarily to the same embodiment, and such references mean at least one. While specific implementations are discussed, it is understood that this is done for illustrative purposes only. A person skilled in the relevant art will recognize that other components and configurations may be used without departing from the scope and spirit of the invention.
Furthermore, in certain instances, numerous specific details will be set forth to provide a thorough description of the invention. However, it will be apparent to those skilled in the art that the invention may be practiced without these specific details. In other instances, well-known features have not been described in as much detail so as not to obscure the invention.
As described above, in recent years, organizations have turned their attention to technologies such as virtualization and centralized storage, and even more recently cloud computing, which can provide the basis for a shared infrastructure. However, there are few all-in-one platforms that are particularly suited for use in such environments. Described herein is a system and method for providing a middleware machine or similar platform (referred to herein in some implementations as “Exalogic”), which comprises a combination of high performance hardware, together with an application server or middleware environment, and additional features, to provide a complete Java EE application server complex which includes a massively parallel in-memory grid, can be provisioned quickly, and can scale on demand.
In particular, as described herein, systems and methods are provided for providing parallel muxing between servers in a cluster. One such system can include a cluster of one or more high performance computing systems, each including one or more processors and a high performance memory. The cluster communicates over an InfiniBand network. The system can also include a middleware environment, executing on the cluster, that includes one or more application server instances. The system can further include a plurality of muxers, wherein each application server instance includes at least one muxer. Each muxer can receive information from a plurality of threads to transmit to a different muxer on a different application server instance over the Infiniband network using a plurality of parallel channels.
T3 Connections (Parallel Muxing)
As described above, in accordance with an embodiment the platform supports the Internet Protocol over INFINIBAND (IPoIB) network in its backplane, wherein the network bandwidth of IB is 25 Gbps. Since a single connection, such as the T3 in Weblogic Server, is unable to fully utilize IB bandwidth for cluster communication, multiple connections have been created in parallel to better utilize network bandwidth. Multiple connections help in spreading out the session replication network traffic.
In accordance with an embodiment, a server, for example a WebLogic server using the T3 protocol, can aggregate messages from all threads into a single sender queue which is flushed over the network by a single thread. Lock contention can occur when multiple processes require the same lock to proceed, for example lock contention can occur between threads attempting to add messages into the sender queue. By creating multiple connections in parallel, lock contention is distributed over multiple connections, thus reducing the per connection lock contention. Also, there are multiple sender threads sending messages over to a remote server instance causing parallelization of work flow.
In accordance with an embodiment, implicit replication channels can be created by using the replication channel configured on a ClusterMBean as a template. The number of implicit channels created is based on the ServerMBean.getReplicationPorts ( ) attribute. The implicit channels copy over all the attributes from the ClusterMBean.ReplicationChannels while overriding the port information to keep it unique. The overriding port information is obtained from ServerMBean.getReplicationPorts ( ). Additionally, the system can include a utility function which can be used to determine if multiple channels are configured. The utility can make the determination once, automatically at regular intervals, in response to changes to the configuration, and/or at the direction of a user and cache the result for subsequent calls. The system can further create an exclusive Remote Method Invocation (RMI) stub for each replication channel configured (stub assigned for each connection). The system can hash the session ID to balance the replication request amongst all the stubs, for example by using round-robin or other similar balancing algorithm. The system can also ensure that replication calls are received on one of the replication channels configured for the server.
In accordance with an embodiment, using InfiniBand provides more bandwidth than prior systems which, effectively, provides a larger pipe through which data can be transmitted. To better utilize the larger pipe, multiple parallel logical connections, i.e., channels, can be used instead of a single logical connection. Multiple connections mean more concurrent activity can execute without the various executing threads blocking each other. This can be useful, for example for clustering; that is, where multiple servers are communicating with each other in a cluster. In a cluster, session data replication between servers is an important feature. Session data can include, for example, shopping cart or other user data that is specific to a particular visit, or session, to a website. By using multiple connections between servers in the cluster, in-memory session replication to each server can be effected more reliably and more efficiently. This preserves session data in case of server failure and improves the experience of the end user and the service provider.
In accordance with an embodiment, the method shown in
The present invention can be conveniently implemented using one or more conventional general purpose or specialized digital computer, computing device, machine, or microprocessor, including one or more processors, memory and/or non-transitory computer readable storage media programmed according to the teachings of the present disclosure. Appropriate software coding can readily be prepared by skilled programmers based on the teachings of the present disclosure, as will be apparent to those skilled in the software art.
In some embodiments, the present invention includes a computer program product which is a computer readable storage medium (media) having instructions stored thereon/in which can be used to program a computer to perform any of the processes of the present invention. The computer readable storage medium can include, but is not limited to, any type of disk including floppy disks, optical discs, DVD, CD-ROMs, microdrive, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, DRAMs, VRAMs, flash memory devices, magnetic or optical cards, nanosystems (including molecular memory ICs), or any type of media or device suitable for storing instructions and/or data.
The foregoing description of the present invention has been provided for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations will be apparent to the practitioner skilled in the art. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, thereby enabling others skilled in the art to understand the invention for various embodiments and with various modifications that are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the following claims and their equivalence.
This application is a continuation of U.S. patent application Ser. No. 13/109,871, entitled “SYSTEM AND METHOD FOR PARALLEL MULTIPLEXING BETWEEN SERVERS IN A CLUSTER”, filed on May 17, 2011, which is now U.S. Pat. No. 8,756,329, issued on Jun. 17, 2014, which claims the benefit of priority to U.S. Provisional Patent Application titled “MIDDLEWARE MACHINE PLATFORM”, Application No. 61/383,285, filed Sep. 15, 2010; and U.S. Provisional Patent Application titled “MIDDLEWARE MACHINE PLATFORM”, Application No. 61/384,227, filed Sep. 17, 2010; each of which above applications is herein incorporated by reference. This application is related to U.S. patent application Ser. No. 13/109,849, entitled “SYSTEM AND METHOD FOR ZERO BUFFER COPYING IN A MIDDLEWARE ENVIRONMENT”, filed May 17, 2011, which is now U.S. Pat. No. 8,856,460, issued Oct. 7, 2014; U.S. patent application Ser. No. 13/170,490, entitled “SYSTEM AND METHOD FOR PROVIDING SCATTER/GATHER DATA PROCESSING IN A MIDDLEWARE ENVIRONMENT”, filed Jun. 28, 2011; and U.S. patent application Ser. No. 13/167,636, entitled “SYSTEM AND METHOD FOR SUPPORTING LAZY DESERIALIZATION OF SESSION INFORMATION IN A SERVER CLUSTER”, filed Jun. 23, 2011; each of which above applications is herein incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
5109384 | Tseung | Apr 1992 | A |
5333274 | Amini | Jul 1994 | A |
6427161 | LiVecchi | Jul 2002 | B1 |
6895590 | Yadav | May 2005 | B2 |
6938085 | Belkin | Aug 2005 | B1 |
7394288 | Agarwal | Jul 2008 | B1 |
7554993 | Modi | Jun 2009 | B2 |
7831731 | Tang | Nov 2010 | B2 |
7991904 | McInyk | Aug 2011 | B2 |
8130776 | Sundararajan | Mar 2012 | B1 |
8131860 | Wong | Mar 2012 | B1 |
8578033 | Mallart | Nov 2013 | B2 |
8601057 | Han | Dec 2013 | B2 |
20020097954 | Maeno | Jul 2002 | A1 |
20020174136 | Cameron | Nov 2002 | A1 |
20030014480 | Pullara | Jan 2003 | A1 |
20030078958 | Pace | Apr 2003 | A1 |
20030110232 | Chen | Jun 2003 | A1 |
20030120822 | Langrind | Jun 2003 | A1 |
20040122953 | Kalmuk | Jun 2004 | A1 |
20040177126 | Maine | Sep 2004 | A1 |
20040205771 | Sudarshan et al. | Oct 2004 | A1 |
20050021354 | Brendle | Jan 2005 | A1 |
20050027901 | Simon | Feb 2005 | A1 |
20050038801 | Colrain | Feb 2005 | A1 |
20050094577 | Ashwood-Smith | May 2005 | A1 |
20050102412 | Hirsimaki | May 2005 | A1 |
20050223109 | Mamou | Oct 2005 | A1 |
20050234986 | Terek | Oct 2005 | A1 |
20050262215 | Kirov | Nov 2005 | A1 |
20060015600 | Piper | Jan 2006 | A1 |
20060031846 | Jacobs | Feb 2006 | A1 |
20060143525 | Kilian | Jun 2006 | A1 |
20060176884 | Fair | Aug 2006 | A1 |
20060190602 | Canali | Aug 2006 | A1 |
20060209899 | Cucchi | Sep 2006 | A1 |
20060248200 | Stanev | Nov 2006 | A1 |
20060294417 | Awasthi | Dec 2006 | A1 |
20070019868 | Takai et al. | Jan 2007 | A1 |
20070058669 | Hoffmann | Mar 2007 | A1 |
20070156869 | Galchev | Jul 2007 | A1 |
20070162559 | Biswas | Jul 2007 | A1 |
20070198684 | Mizushima | Aug 2007 | A1 |
20070203944 | Batra | Aug 2007 | A1 |
20070245005 | Banerjee | Oct 2007 | A1 |
20080044141 | Willis | Feb 2008 | A1 |
20080098018 | King | Apr 2008 | A1 |
20080098119 | Jindall | Apr 2008 | A1 |
20080098458 | Smith | Apr 2008 | A2 |
20080140844 | Halpern | Jun 2008 | A1 |
20080163124 | Bonev | Jul 2008 | A1 |
20080195664 | Maharajh | Aug 2008 | A1 |
20080286741 | Call | Nov 2008 | A1 |
20090019158 | Langen | Jan 2009 | A1 |
20090024764 | Atherton | Jan 2009 | A1 |
20090034537 | Colrain | Feb 2009 | A1 |
20090103504 | Inumaru | Apr 2009 | A1 |
20090150647 | Mejdrich | Jun 2009 | A1 |
20090172636 | Griffith | Jul 2009 | A1 |
20090182642 | Sundaresan | Jul 2009 | A1 |
20090327471 | Astele | Dec 2009 | A1 |
20100138208 | Hattori | Jun 2010 | A1 |
20100138531 | Kashyap | Jun 2010 | A1 |
20100198920 | Wong | Aug 2010 | A1 |
20100199259 | Quinn | Aug 2010 | A1 |
20110022694 | Dalal | Jan 2011 | A1 |
20110022882 | Jaehde | Jan 2011 | A1 |
20110029812 | Lu | Feb 2011 | A1 |
20110047413 | McGill et al. | Feb 2011 | A1 |
20110055510 | Fritz | Mar 2011 | A1 |
20110066737 | Mallart | Mar 2011 | A1 |
20110071981 | Ghosh | Mar 2011 | A1 |
20110082832 | Vadali et al. | Apr 2011 | A1 |
20110119673 | Bloch | May 2011 | A1 |
20110161457 | Sentinelli | Jun 2011 | A1 |
20110185021 | Han | Jul 2011 | A1 |
20110246582 | Dozsa et al. | Oct 2011 | A1 |
20120023557 | Bevan | Jan 2012 | A1 |
20120066400 | Reynolds | Mar 2012 | A1 |
20120066460 | Bihani | Mar 2012 | A1 |
20120131330 | Tonsing | May 2012 | A1 |
20120144045 | Revanuru | Jun 2012 | A1 |
20120218891 | Sundararajan | Aug 2012 | A1 |
20120239730 | Revanuru | Sep 2012 | A1 |
20130004002 | Duchscher | Jan 2013 | A1 |
20130014118 | Jones | Jan 2013 | A1 |
20140059226 | Messerli | Feb 2014 | A1 |
Number | Date | Country |
---|---|---|
101159539 | Apr 2008 | CN |
101408899 | Apr 2009 | CN |
101661499 | Mar 2010 | CN |
2492653 | Jan 2013 | GB |
2000-339287 | Dec 2000 | JP |
2003196229 | Jul 2003 | JP |
2007-226398 | Sep 2007 | JP |
2008507030 | Mar 2008 | JP |
2010128911 | Jun 2010 | JP |
2006046972 | May 2006 | WO |
Entry |
---|
Anonymous, What is Scatter-Gather DMA (Direct Memory Access)?, Jul. 22, 2010, 2 pages. |
Pfister, An Introduction to the InfiniBand Architecture, High Performance Mass Storage and Parallel I/O, Chapter 42, 2002, 617-632. |
Baldwin, The ByteBuffer Class in Java, Aug. 20, 2002, 14 pages. |
European Patent Office International Searching Authority, International Search Report and Written Opinion for PCT International Application No. PCT/US2013/067286, Feb. 5, 2014, 10 pages. |
European Patent Office International Searching Authority, International Search Report and Written Opinion for PCT International Application No. PCT/US2011/051697, Dec. 6, 2011, 11 pages. |
European Patent Office International Searching Authority, International Search Report and Written Opinion for PCT International Application No. PCT/US2011/051459, Dec. 6, 2011, 9 pages. |
State Intellectual Property Office of the People's Republic of China Search Report dated Dec. 15, 2015 for Chinese Application No. 201180039809.X, 2 pages. |
State Intellectual Property Office of the People's Republic of China Search Report dated Dec. 18, 2015 for Chinese Application No. 201180039804.7, 2 pages. |
United States Patent and Trademark Office, Office Action Dated March 11, 2016 for U.S. Appl. No. 13/170,490, 17 Pages. |
Number | Date | Country | |
---|---|---|---|
20140280988 A1 | Sep 2014 | US |
Number | Date | Country | |
---|---|---|---|
61383285 | Sep 2010 | US | |
61384227 | Sep 2010 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13109871 | May 2011 | US |
Child | 14288722 | US |