|
Berkeley DB Java Edition Examples version 4.0.103 |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectje.rep.quote.StockQuotes
je.rep.quote.RouterDrivenStockQuotes
public class RouterDrivenStockQuotes
This class is based on StockQuotes
and illustrates use of an
HA-aware router (implemented by HARouter
), in conjunction with the
Monitor
class, to direct
application requests, based upon the type of request (read or write) and the
state (Master or Replica) of a node in the replication group. This example
is meant to illustrate how a software load balancer might be integrated with
JE HA, where HARouter
plays the role of the load balancer for
purposes of the example.
Be sure to read the Example Overview
first to put this
example into context.
In this example, unlike StockQuotes
, only the HARouter has a
console associated with it. It accepts commands typed into its console and
forwards them as appropriate to the Master and Replicas in the group. The
logic for tracking the Master resides in HARouter
, and
information about the state of the replication group is supplied by the
Monitor
. While this example
uses just one HARouter instance for the entire group, production
applications could use multiple router instances to avoid single points of
failure.
Each node, which in this example is an instance of
RouterDrivenStockQuotes
, establishes a server socket on which
it can listen for requests from HARouter. The node that is currently the
Master will expect both write and read requests from HARouter, while nodes
that are Replicas will only expect read requests from the router.
The request flow between nodes in this example is shown below.
------------ Read requests | HARouter |------------------------------------|| | Instance |---------------------|| || ------------ || || || || || || Write requests || || \/ || || --------------------------- || || | RouterDrivenStockQuotes | || || | Instance 1: Master | || || --------------------------- \/ || --------------------------- || | RouterDrivenStockQuotes | || | Instance 2: Replica | || --------------------------- \/ --------------------------- | RouterDrivenStockQuotes | | Instance 3: Replica | --------------------------- ...more Replica instances...
This example is intended to be illustrative. It forwards requests as text, and receives responses in text form. Actual applications may for example, forward HTTP requests, or use some other application level network protocol to forward such requests.
Please review the javadoc in StockQuotes
for a detailed description
of the arguments that must be supplied at startup. The only difference is
that you must use the name of this class when invoking the JVM. For example,
the first node can be started as follows:
java je.rep.quote.RouterDrivenStockQuotes -env /tmp/stockQuotes1 \ -nodeName n1 \ -nodeHost node.acme.com:5001 \ -helperHost node.acme.com:5001In addition to starting the nodes, you will also need to start the
HARouter
as described in its javadoc.
HARouter
Method Summary | |
---|---|
static void |
main(String[] argv)
|
Methods inherited from class je.rep.quote.StockQuotes |
---|
quit |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method Detail |
---|
public static void main(String[] argv) throws Exception
Exception
|
Berkeley DB Java Edition Examples version 4.0.103 |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |