Author: hiranya
Date: Mon Dec 27 05:18:27 2010
New Revision: 1052999
URL: http://svn.apache.org/viewvc?rev=1052999&view=rev
Log:
throttling samples
Modified:
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples.xml
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample364.xml
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample370.xml
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample371.xml
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample372.xml
Modified:
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples.xml
URL:
http://svn.apache.org/viewvc/synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples.xml?rev=1052999&r1=1052998&r2=1052999&view=diff
==============================================================================
--- synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples.xml
(original)
+++ synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples.xml
Mon Dec 27 05:18:27 2010
@@ -145,15 +145,15 @@
<li><a href="samples/sample361.html">Sample 361:
Introduction to dbreport mediator</a></li>
<li><a href="samples/sample362.html">Sample 362:
Perform database lookups and updates in the same mediation sequence</a></li>
<li><a href="samples/sample363.html">Sample 363:
Reusable database connection pools</a></li>
- <li><a href="#Sample364">Sample 364: Executing
database Stored Procedures</a></li>
+ <li><a href="samples/sample364.html">Sample 364:
Executing database Stored Procedures</a></li>
</ul>
</p>
<h4>Throttle Mediator</h4>
<p>
<ul>
- <li><a href="#Sample370">Sample 370: Introduction to
throttle mediator and concurrency throttling</a></li>
- <li><a href="#Sample371">Sample 371: Restricting
requests based on policies</a></li>
- <li><a href="#Sample372">Sample 372: Use of both
concurrency throttling and request rate based throttling </a></li>
+ <li><a href="samples/sample370.html">Sample 370:
Introduction to throttle mediator and concurrency throttling</a></li>
+ <li><a href="samples/sample371.html">Sample 371:
Restricting requests based on policies</a></li>
+ <li><a href="samples/sample372.html">Sample 372: Use
of both concurrency throttling and request rate based throttling </a></li>
</ul>
</p>
<h4>Class Mediator (Writing Mediation Logic in Java)</h4>
Modified:
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample364.xml
URL:
http://svn.apache.org/viewvc/synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample364.xml?rev=1052999&r1=1052998&r2=1052999&view=diff
==============================================================================
---
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample364.xml
(original)
+++
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample364.xml
Mon Dec 27 05:18:27 2010
@@ -23,7 +23,7 @@
<title>Apache Synapse - Sample 364</title>
</properties>
<body>
- <section name="Sample 364: ">
+ <section name="Sample 364: Executing Database Stored Procedures">
<div class="xmlConf"><definitions
xmlns="http://ws.apache.org/ns/synapse">
<sequence name="main">
@@ -90,13 +90,16 @@
</definitions></div>
<subsection name="Objective">
<p>
-
+ Demonstrate how to invoke a database stored procedure from
Synapse
</p>
</subsection>
<subsection name="Pre-requisites">
<p>
<ul>
<li>
+ Setup a MySQL database as described in the
database setup guide
+ </li>
+ <li>
Deploy the SimpleStockQuoteService in the sample
Axis2 server and start Axis2
</li>
<li>
@@ -110,11 +113,24 @@
</p>
</subsection>
<subsection name="Executing the Client">
- <div class="command">ant stockquote
-Daddurl=http://localhost:9000/services/SimpleStockQuoteService
-Dtrpurl=http://localhost:8280/</div>
-
- <div class="consoleOutput">Sat Nov 18 21:01:23 IST 2006
SimpleStockQuoteService :: Generating quote for : IBM</div>
-
- <div class="consoleOutput">Standard :: Stock price =
$95.26454380258552</div>
+ <p>
+ This scenario is very similar to <a
href="sample363.html">sample 363</a>, but makes
+ use of stored procedures to lookup and update the database
instead of simple
+ SQL queries. Note that we are still using the dblookup and
dbreport mediators
+ to access the database but the statements are simply
calling a stored procedure in
+ MySQL (the syntax to call a stored procedue is database
engine specific).
+ </p>
+ <p>
+ To try this sample out, invoke the sample client as
follows.
+ </p>
+ <div class="command">ant stockquote
-Daddurl=http://localhost:9000/services/SimpleStockQuoteService
-Dtrpurl=http://localhost:8280/ -Dsymbol=IBM</div>
+ <p>
+ Synapse will invoke the two stored procedures as the
response is mediated back
+ to the client. You will see the following output on the
Synapse console.
+ </p>
+ <div class="consoleOutput">INFO LogMediator text = ** Looking
up from the Database ** ...
+INFO LogMediator text = Company ID - c1 ...
+INFO LogMediator text = Stock price - 183.3635460215262</div>
</subsection>
</section>
<p><a href="../samples.html">Back to Catalog</a></p>
Modified:
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample370.xml
URL:
http://svn.apache.org/viewvc/synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample370.xml?rev=1052999&r1=1052998&r2=1052999&view=diff
==============================================================================
---
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample370.xml
(original)
+++
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample370.xml
Mon Dec 27 05:18:27 2010
@@ -23,7 +23,7 @@
<title>Apache Synapse - Sample 370</title>
</properties>
<body>
- <section name="Sample 370: ">
+ <section name="Sample 370: Introduction to Throttle Mediator and
Concurrency Throttling">
<div class="xmlConf"><definitions
xmlns="http://ws.apache.org/ns/synapse">
<sequence name="main">
@@ -71,7 +71,8 @@
</definitions></div>
<subsection name="Objective">
<p>
-
+ Showcase the ability of Synapse to throttle incoming
requests based on the
+ concurrency level
</p>
</subsection>
<subsection name="Pre-requisites">
@@ -91,11 +92,23 @@
</p>
</subsection>
<subsection name="Executing the Client">
- <div class="command">ant stockquote
-Daddurl=http://localhost:9000/services/SimpleStockQuoteService
-Dtrpurl=http://localhost:8280/</div>
-
- <div class="consoleOutput">Sat Nov 18 21:01:23 IST 2006
SimpleStockQuoteService :: Generating quote for : IBM</div>
-
- <div class="consoleOutput">Standard :: Stock price =
$95.26454380258552</div>
+ <p>
+ Above configuration specifies a throttle mediator inside
the in mediator.
+ Therefore, all request messages directed to the main
sequence will be subjected
+ to throttling. Throttle mediator has 'policy', 'onAccept'
and 'onReject' tags at
+ top level. The 'policy' tag specifies the throttling
policy for throttling messages.
+ This sample policy only contains a component called
'MaximumConcurrentAccess'.
+ This indicates the maximum number of concurrent requests
that can pass through
+ Synapse on a single unit of time. To test concurrency
throttling, it is required
+ to send concurrent requests to Synapse. With this
configuration if Synapse receives
+ 20 requests concurrently from clients, then approximately
half of those will succeed
+ while the others being throttled. The client command to
try this is as follows.
+ </p>
+ <div class="command">ant stockquote -Dsymbol=IBM -Dmode=quote
-Daddurl=http://localhost:8280/</div>
+ <p>
+ It's not that easy to try this sample out using the sample
Axis2 client. For
+ better results, consider using a load testing tool like
Apache Bench or Java Bench.
+ </p>
</subsection>
</section>
<p><a href="../samples.html">Back to Catalog</a></p>
Modified:
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample371.xml
URL:
http://svn.apache.org/viewvc/synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample371.xml?rev=1052999&r1=1052998&r2=1052999&view=diff
==============================================================================
---
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample371.xml
(original)
+++
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample371.xml
Mon Dec 27 05:18:27 2010
@@ -23,7 +23,7 @@
<title>Apache Synapse - Sample 371</title>
</properties>
<body>
- <section name="Sample 371: ">
+ <section name="Sample 371: Restricting Requests Based on Policies">
<div class="xmlConf"><definitions
xmlns="http://ws.apache.org/ns/synapse">
<sequence name="main">
@@ -117,7 +117,7 @@
</definitions></div>
<subsection name="Objective">
<p>
-
+ Demonstrate how to throttle incoming requests based on
complex policies
</p>
</subsection>
<subsection name="Pre-requisites">
@@ -137,11 +137,38 @@
</p>
</subsection>
<subsection name="Executing the Client">
- <div class="command">ant stockquote
-Daddurl=http://localhost:9000/services/SimpleStockQuoteService
-Dtrpurl=http://localhost:8280/</div>
-
- <div class="consoleOutput">Sat Nov 18 21:01:23 IST 2006
SimpleStockQuoteService :: Generating quote for : IBM</div>
-
- <div class="consoleOutput">Standard :: Stock price =
$95.26454380258552</div>
+ <p>
+ Above configuration specifies a throttle mediator inside
the in mediator.
+ Therefore, all request messages directed to the main
sequence will be subjected
+ to throttling. Throttle mediator has policy, onAccept and
onReject tags at the
+ top level. Policy tag specifies the throttling policy
against which all messages
+ will be evaluated. It contains some IP address ranges and
the maximum number of
+ messages to be allowed for those ranges within a time
period given in 'UnitTime'
+ tag. 'ProhibitTimePeriod' tag specifies the time period to
prohibit further
+ requests after the received request count exceeds the
specified time. Now run the
+ client 5 times repetitively using the following command to
see how throttling works.
+ </p>
+ <div class="command">ant stockquote -Dsymbol=IBM -Dmode=quote
-Daddurl=http://localhost:8280/</div>
+ <p>
+ For the first four requests you will get the quote prices
for IBM as follows.
+ </p>
+ <div class="consoleOutput">[java] Standard :: Stock price =
$177.20143371883802</div>
+ <p>
+ Fifth request will not be sent to the Axis2 server and the
client will receive
+ the following fault.
+ </p>
+ <div class="consoleOutput">[java] org.apache.axis2.AxisFault:
**Access Denied**</div>
+ <p>
+ Maximum number of requests within 800000 milliseconds is
specified as 4 for any
+ server (including localhost) other than the explicitly
specified ones. Therefore,
+ our fifth request is denied by the throttle mediator. You
can verify this by looking
+ at the Synapse console.
+ </p>
+ <div class="consoleOutput">[HttpServerWorker-1] INFO
LogMediator - text = **Access Accept**
+[HttpServerWorker-2] INFO LogMediator - text = **Access Accept**
+[HttpServerWorker-3] INFO LogMediator - text = **Access Accept**
+[HttpServerWorker-4] INFO LogMediator - text = **Access Accept**
+[HttpServerWorker-5] INFO LogMediator - text = **Access Denied**</div>
</subsection>
</section>
<p><a href="../samples.html">Back to Catalog</a></p>
Modified:
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample372.xml
URL:
http://svn.apache.org/viewvc/synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample372.xml?rev=1052999&r1=1052998&r2=1052999&view=diff
==============================================================================
---
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample372.xml
(original)
+++
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample372.xml
Mon Dec 27 05:18:27 2010
@@ -23,7 +23,7 @@
<title>Apache Synapse - Sample 372</title>
</properties>
<body>
- <section name="Sample 372: ">
+ <section name="Sample 372: Use of Concurrency Throttling and Request
Rate Based Throttling">
<div class="xmlConf"><definitions
xmlns="http://ws.apache.org/ns/synapse">
<registry
provider="org.apache.synapse.registry.url.SimpleURLRegistry">
@@ -74,7 +74,8 @@
</definitions></div>
<subsection name="Objective">
<p>
-
+ Showcase how to use the concurrency throttling in
conjunction with request rate
+ throttling
</p>
</subsection>
<subsection name="Pre-requisites">
@@ -94,11 +95,23 @@
</p>
</subsection>
<subsection name="Executing the Client">
- <div class="command">ant stockquote
-Daddurl=http://localhost:9000/services/SimpleStockQuoteService
-Dtrpurl=http://localhost:8280/</div>
-
- <div class="consoleOutput">Sat Nov 18 21:01:23 IST 2006
SimpleStockQuoteService :: Generating quote for : IBM</div>
-
- <div class="consoleOutput">Standard :: Stock price =
$95.26454380258552</div>
+ <p>
+ This is a combination of <a href="sample370.html">sample
370</a> and
+ <a href="sample371.html">sample 371</a>. In this case the
throttle policy is loaded
+ from the 'throttle_policy.xml' file which is fetched from
the registry. To verify
+ the functionality, it requires running a load test. The
all enabled request from
+ the concurrency throttling will be controlled by the
access rate base throttling
+ according to the policy.
+ </p>
+ <p>
+ Run the client as follows.
+ </p>
+ <div class="command">ant stockquote
-Daddurl=http://localhost:8280/services/StockQuoteProxy</div>
+ <p>
+ You will get same results as in <a
href="sample371.html">sample 371</a>. If you
+ run the load test, results will be different due to the
effect of concurrency
+ throttling.
+ </p>
</subsection>
</section>
<p><a href="../samples.html">Back to Catalog</a></p>