|
||||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectcom.alisoft.xplatform.asf.cache.memcached.client.SockIOPool
public class SockIOPool
This class is a connection pool for maintaning a pool of persistent
connections
to memcached servers.
The pool must be initialized prior to use. This should typically be early on
in the lifecycle of the JVM instance.
static
{
String[] serverlist = { "cache0.server.com:12345",
"cache1.server.com:12345" };
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(serverlist);
pool.initialize();
}
static
{
String[] serverlist = { "cache0.server.com:12345",
"cache1.server.com:12345" };
Integer[] weights = { new Integer(5), new Integer(2) };
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(serverlist);
pool.setWeights(weights);
pool.initialize();
}
static
{
String[] serverlist = { "cache0.server.com:12345",
"cache1.server.com:12345" };
Integer[] weights = { new Integer(5), new Integer(2) };
int initialConnections = 10;
int minSpareConnections = 5;
int maxSpareConnections = 50;
long maxIdleTime = 1000 * 60 * 30; // 30 minutes
long maxBusyTime = 1000 * 60 * 5; // 5 minutes
long maintThreadSleep = 1000 * 5; // 5 seconds
int socketTimeOut = 1000 * 3; // 3 seconds to block on reads
int socketConnectTO = 1000 * 3; // 3 seconds to block on initial connections. If 0, then will use blocking connect (default)
boolean failover = false; // turn off auto-failover in event of server down
boolean nagleAlg = false; // turn off Nagle's algorithm on all sockets in pool
boolean aliveCheck = false; // disable health check of socket on checkout
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(serverlist);
pool.setWeights(weights);
pool.setInitConn(initialConnections);
pool.setMinConn(minSpareConnections);
pool.setMaxConn(maxSpareConnections);
pool.setMaxIdle(maxIdleTime);
pool.setMaxBusyTime(maxBusyTime);
pool.setMaintSleep(maintThreadSleep);
pool.setSocketTO(socketTimeOut);
pool.setNagle(nagleAlg);
pool.setHashingAlg(SockIOPool.NEW_COMPAT_HASH);
pool.setAliveCheck(true);
pool.initialize();
}
The easiest manner in which to initialize the pool is to set the servers and
rely on defaults as in the first example.
SockIOPool.SockIO sock = SockIOPool.getInstance().getSock( key );
try {
sock.write( "version\r\n" );
sock.flush();
System.out.println( "Version: " + sock.readLine() );
}
catch (IOException ioe) { System.out.println( "io exception thrown" ) };
sock.close();
优化过的Socket资源池,解决并发低效问题
| 嵌套类摘要 | |
|---|---|
protected static class |
SockIOPool.MaintThread
Class which extends thread and handles maintenance of the pool. |
static class |
SockIOPool.SockIO
MemCached Java client, utility class for Socket IO. |
| 字段摘要 | |
|---|---|
static int |
CONSISTENT_HASH
|
static long |
MAX_RETRY_DELAY
|
static int |
NATIVE_HASH
|
static int |
NEW_COMPAT_HASH
|
static int |
OLD_COMPAT_HASH
|
static java.util.Random |
random
|
| 构造方法摘要 | |
|---|---|
protected |
SockIOPool()
|
| 方法摘要 | ||
|---|---|---|
protected
|
addSocketToPool(java.util.concurrent.ConcurrentMap<java.lang.String,java.util.concurrent.ConcurrentMap<SockIOPool.SockIO,T>> pool,
java.lang.String host,
SockIOPool.SockIO socket,
T oldValue,
T newValue,
boolean needReplace)
Adds a socket and value to a given pool for the given host. |
|
protected void |
clearHostFromPool(java.lang.String host)
Closes and removes all sockets from specified pool for host. |
|
protected void |
closeSocketPool()
Closes all sockets in the passed in pool. |
|
protected SockIOPool.SockIO |
createSocket(java.lang.String host)
Creates a new SockIO obj for the given server. |
|
boolean |
getAliveCheck()
Returns the current status of the aliveCheck flag. |
|
SockIOPool.SockIO |
getConnection(java.lang.String host)
Returns a SockIO object from the pool for the passed in host. |
|
boolean |
getFailback()
Returns current state of failover flag. |
|
boolean |
getFailover()
Returns current state of failover flag. |
|
int |
getHashingAlg()
Returns current status of customHash flag |
|
java.lang.String |
getHost(java.lang.String key)
|
|
java.lang.String |
getHost(java.lang.String key,
java.lang.Integer hashcode)
Gets the host that a particular key / hashcode resides on. |
|
int |
getInitConn()
Returns the current setting for the initial number of connections per server in the available pool. |
|
static SockIOPool |
getInstance()
Single argument version of factory used for back compat. |
|
static SockIOPool |
getInstance(java.lang.String poolName)
Factory to create/retrieve new pools given a unique poolName. |
|
long |
getMaintSleep()
Returns the current maint thread sleep time. |
|
long |
getMaxBusy()
Returns the current max busy setting. |
|
int |
getMaxConn()
Returns the maximum number of spare connections allowed in available pool. |
|
long |
getMaxIdle()
Returns the current max idle setting. |
|
int |
getMinConn()
Returns the minimum number of spare connections in available pool. |
|
boolean |
getNagle()
Returns current status of nagle flag |
|
static SockIOPool |
getNewInstance(java.lang.String poolName)
get new Instance form pool |
|
static java.lang.String |
getPoolUsage(java.lang.String poolName)
|
|
java.lang.String[] |
getServers()
Returns the current list of all cache servers. |
|
SockIOPool.SockIO |
getSock(java.lang.String key)
Returns appropriate SockIO object given string cache key. |
|
SockIOPool.SockIO |
getSock(java.lang.String key,
java.lang.Integer hashCode)
Returns appropriate SockIO object given string cache key and optional hashcode. |
|
int |
getSocketConnectTO()
Returns the socket timeout for connect. |
|
int |
getSocketTO()
Returns the socket timeout for reads. |
|
java.lang.Integer[] |
getWeights()
Returns the current list of weights. |
|
void |
initialize()
Initializes the pool. |
|
boolean |
isInitialized()
Returns state of pool. |
|
static void |
removeInstance(java.lang.String poolName)
|
|
protected void |
selfMaint()
Runs self maintenance on all internal pools. |
|
void |
setAliveCheck(boolean aliveCheck)
Sets the aliveCheck flag for the pool. |
|
void |
setFailback(boolean failback)
Sets the failback flag for the pool. |
|
void |
setFailover(boolean failover)
Sets the failover flag for the pool. |
|
void |
setHashingAlg(int alg)
Sets the hashing algorithm we will use. |
|
void |
setInitConn(int initConn)
Sets the initial number of connections per server in the available pool. |
|
void |
setMaintSleep(long maintSleep)
Set the sleep time between runs of the pool maintenance thread. |
|
void |
setMaxBusyTime(long maxBusyTime)
Sets the max busy time for threads in the busy pool. |
|
void |
setMaxConn(int maxConn)
Sets the maximum number of spare connections allowed in our available pool. |
|
void |
setMaxIdle(long maxIdle)
Sets the max idle time for threads in the available pool. |
|
void |
setMinConn(int minConn)
Sets the minimum number of spare connections to maintain in our available pool. |
|
void |
setNagle(boolean nagle)
Sets the Nagle alg flag for the pool. |
|
void |
setServers(java.lang.String[] servers)
Sets the list of all cache servers. |
|
void |
setSocketConnectTO(int socketConnectTO)
Sets the socket timeout for connect. |
|
void |
setSocketTO(int socketTO)
Sets the socket timeout for reads. |
|
void |
setWeights(java.lang.Integer[] weights)
Sets the list of weights to apply to the server list. |
|
void |
shutDown()
Shuts down the pool. |
|
protected void |
startMaintThread()
Starts the maintenance thread. |
|
protected void |
stopMaintThread()
Stops the maintenance thread. |
|
protected void |
updateStatusPool(java.lang.String host,
SockIOPool.SockIO socket,
int newStatus)
|
|
| 从类 java.lang.Object 继承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 字段详细信息 |
|---|
public static final int NATIVE_HASH
public static final int OLD_COMPAT_HASH
public static final int NEW_COMPAT_HASH
public static final int CONSISTENT_HASH
public static final long MAX_RETRY_DELAY
public static final java.util.Random random
| 构造方法详细信息 |
|---|
protected SockIOPool()
| 方法详细信息 |
|---|
public static SockIOPool getInstance(java.lang.String poolName)
poolName - unique name of the pool
public static java.lang.String getPoolUsage(java.lang.String poolName)
public static SockIOPool getNewInstance(java.lang.String poolName)
poolName -
public static void removeInstance(java.lang.String poolName)
public static SockIOPool getInstance()
public void initialize()
protected SockIOPool.SockIO createSocket(java.lang.String host)
host - host:port to connect to
public java.lang.String getHost(java.lang.String key)
key -
public java.lang.String getHost(java.lang.String key,
java.lang.Integer hashcode)
key - hashcode -
public SockIOPool.SockIO getSock(java.lang.String key)
key - hashcode for cache key
public SockIOPool.SockIO getSock(java.lang.String key,
java.lang.Integer hashCode)
key - hashcode for cache keyhashCode - if not null, then the int hashcode to use
public SockIOPool.SockIO getConnection(java.lang.String host)
host - host from which to retrieve object
protected <T> boolean addSocketToPool(java.util.concurrent.ConcurrentMap<java.lang.String,java.util.concurrent.ConcurrentMap<SockIOPool.SockIO,T>> pool,
java.lang.String host,
SockIOPool.SockIO socket,
T oldValue,
T newValue,
boolean needReplace)
pool - pool to add tohost - host this socket is connected tosocket - socket to add
protected void updateStatusPool(java.lang.String host,
SockIOPool.SockIO socket,
int newStatus)
host - socket - oldStatus - newStatus - protected void clearHostFromPool(java.lang.String host)
pool - pool to clearhost - host to clearprotected void closeSocketPool()
pool - pool to closepublic void shutDown()
protected void startMaintThread()
protected void stopMaintThread()
protected void selfMaint()
public boolean isInitialized()
true if initialized.public void setServers(java.lang.String[] servers)
servers - String array of servers [host:port]public java.lang.String[] getServers()
public void setWeights(java.lang.Integer[] weights)
weights - Integer array of weightspublic java.lang.Integer[] getWeights()
public void setInitConn(int initConn)
initConn - int number of connectionspublic int getInitConn()
public void setMinConn(int minConn)
minConn - number of connectionspublic int getMinConn()
public void setMaxConn(int maxConn)
maxConn - number of connectionspublic int getMaxConn()
public void setMaxIdle(long maxIdle)
maxIdle - idle time in mspublic long getMaxIdle()
public void setMaxBusyTime(long maxBusyTime)
maxBusyTime - idle time in mspublic long getMaxBusy()
public void setMaintSleep(long maintSleep)
maintSleep - sleep time in mspublic long getMaintSleep()
public void setSocketTO(int socketTO)
socketTO - timeout in mspublic int getSocketTO()
public void setSocketConnectTO(int socketConnectTO)
socketConnectTO - timeout in mspublic int getSocketConnectTO()
public void setFailover(boolean failover)
failover - true/falsepublic boolean getFailover()
public void setFailback(boolean failback)
failback - true/falsepublic boolean getFailback()
public void setAliveCheck(boolean aliveCheck)
aliveCheck - true/falsepublic boolean getAliveCheck()
public void setNagle(boolean nagle)
nagle - true/falsepublic boolean getNagle()
public void setHashingAlg(int alg)
alg - int value representing hashing algorithmpublic int getHashingAlg()
|
||||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||