| 
 | Oracle® Fusion Middleware Java API Reference for Oracle Coherence 12c (12.1.3.0.0) E47890-01 | |||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||
java.lang.Object
   com.tangosol.util.Base
com.tangosol.util.Base
       com.tangosol.net.cache.AbstractBundler
com.tangosol.net.cache.AbstractBundler
public abstract class AbstractBundler
An abstract base for processors that implement bundling strategy.
Assume that we receive a continuous and concurrent stream of individual operations on multiple threads in parallel. Let's also assume those individual operations have relatively high latency (network or database-related) and there are functionally analogous [bulk] operations that take a collection of arguments instead of a single one without causing the latency to grow linearly, as a function of the collection size. Examples of operations and topologies that satisfy these assumptions are:
NamedCache API for the partitioned cache service topology;NamedCache API for the partitioned cache service topology;CacheLoader API for the read-through backing map topology;CacheStore API for the write-through backing map topology.Under these assumptions, it's quite clear that the bundler could achieve a better utilization of system resources and better throughput if slightly delays the individual execution requests with a purpose of "bundling" them together and passing into a corresponding bulk operation. Additionally, the "bundled" request should be triggered if a bundle reaches a "preferred bundle size" threshold, eliminating a need to wait till a bundle timeout is reached.
Note: we assume that all bundle-able operations are idempotent and could be repeated if un-bundling is necessary due to a bundled operation failure.
| Nested Class Summary | |
|---|---|
| protected  class | AbstractBundler.BundleBundle represents a unit of optimized execution. | 
| protected static class | AbstractBundler.StatisticsStatistics class contains the latest bundler statistics. | 
| Field Summary | |
|---|---|
| static int | ADJUSTMENT_FREQUENCYFrequency of the adjustment attempts. | 
| protected  java.util.concurrent.atomic.AtomicInteger | m_countThreadsA counter for the total number of threads that have started any bundle related execution. | 
| protected  double | m_dPreviousSizeThresholdThe previous bundle size threshold value. | 
| protected  java.util.List | m_listBundleA pool of Bundle objects. | 
| Constructor Summary | |
|---|---|
| AbstractBundler()Construct the bundler. | |
| Method Summary | |
|---|---|
|  void | adjust()Adjust this Bundler's parameters according to the available statistical information. | 
|  long | getDelayMillis()Obtain the timeout delay value. | 
| protected  AbstractBundler.Bundle | getOpenBundle()Retrieve any Bundle that is currently in the open state. | 
|  int | getSizeThreshold()Obtain the bundle size threshold value. | 
|  int | getThreadThreshold()Obtains the minimum number of threads that will trigger the bundler to switch from a pass through to a bundled mode. | 
| protected abstract  AbstractBundler.Bundle | instantiateBundle()Instantiate a new Bundle object. | 
|  boolean | isAllowAutoAdjust()Check whether or not the auto-adjustment is allowed. | 
|  void | resetStatistics()Reset this Bundler statistics. | 
|  void | setAllowAutoAdjust(boolean fAutoAdjust)Specify whether or not the auto-adjustment is allowed.. | 
|  void | setDelayMillis(long lDelay)Specify the timeout delay value. | 
|  void | setSizeThreshold(int cSize)Specify the bundle size threshold value. | 
|  void | setThreadThreshold(int cThreads)Specify the minimum number of threads that will trigger the bundler to switch from a pass through to a bundled mode. | 
|  java.lang.String | toString()Provide a human readable description for the Bundler object (for debugging). | 
| protected  void | updateStatistics()Update the statistics for this Bundle. | 
| Field Detail | 
|---|
public static int ADJUSTMENT_FREQUENCY
protected double m_dPreviousSizeThreshold
protected java.util.List m_listBundle
protected java.util.concurrent.atomic.AtomicInteger m_countThreads
| Constructor Detail | 
|---|
public AbstractBundler()
| Method Detail | 
|---|
public int getSizeThreshold()
AbstractBundler.Bundle.getBundleSize() methodpublic void setSizeThreshold(int cSize)
cSize - the bundle size threshold value; must be positive value expressed in the same units as the value returned by the AbstractBundler.Bundle.getBundleSize() methodpublic int getThreadThreshold()
public void setThreadThreshold(int cThreads)
cThreads - the number of threads thresholdpublic long getDelayMillis()
public void setDelayMillis(long lDelay)
lDelay - the timeout delay value in millisecondspublic boolean isAllowAutoAdjust()
public void setAllowAutoAdjust(boolean fAutoAdjust)
fAutoAdjust - true if the auto-adjustment should be allowed; false otherwiseprotected void updateStatistics()
public void resetStatistics()
public void adjust()
public java.lang.String toString()
protected AbstractBundler.Bundle getOpenBundle()
protected abstract AbstractBundler.Bundle instantiateBundle()
| 
 | Oracle® Fusion Middleware Java API Reference for Oracle Coherence 12c (12.1.3.0.0) E47890-01 | |||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||