<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Mar 5, 2014 at 1:32 AM, Ben Hood <span dir="ltr"><<a href="mailto:0x6e6562@gmail.com" target="_blank">0x6e6562@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="">On Sun, Mar 2, 2014 at 3:21 AM, Laing, Michael<br>

<<a href="mailto:michael.laing@nytimes.com">michael.laing@nytimes.com</a>> wrote:<br>
> Persistence might increase reliability when you plan to restart nodes and<br>
> need to regain state. We don't do that.<br>
<br>
</div>Are you referring to Rabbit nodes heres? Reading further into your<br>
description, it looks like the application state is maintained by<br>
Cassandra replication.<br></blockquote><div><br></div><div>Yes. Rabbit nodes.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div class=""><br>
> We target queue lengths of zero and are close most of the time. Anything<br>
> else stands out like a black spot on a white sheet.<br>
<br>
</div>How do you achieve this steady state? Have you calibrated your app in<br>
some fashion? Or do you apply flow control?<br></blockquote><div><br></div><div>Some of our fabrik apps apply flow control. For example, we apply flow control to the ingress of 'silver' service messages so that 'gold' service takes precedence. </div>
<div><br></div><div>Since our services are fully parallelized, if a bottleneck appears, we add more workers to that stage, distributed across the rabbit cluster. For example, our 'cache_pull' service has 9 workers in each core pipeline.</div>
<div><br></div><div>I think SEDA is a good inspiration for this kind of design - Cassandra is organized internally this way - <span class="">nyt</span>⨍aбrik is SEDA writ large with bigger chunks. Here's a SEDA link from the originator: <a href="http://matt-welsh.blogspot.com/2010/07/retrospective-on-seda.html">http://matt-welsh.blogspot.com/2010/07/retrospective-on-seda.html</a></div>
















<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class=""><br>
> So we never restart nodes that die. Just sync in new ones. Actually we have<br>
> not yet had any core nodes die in production.<br>
<br>
</div>Again - you're talking about Rabbit nodes right?<br></blockquote><div><br></div><div>Yup.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div class=""><br>
> Our instances are ridiculously small and inexpensive to run. We rely on this<br>
> global, headless, mutually supporting rabbit army for our reliability,<br>
> paired with a small Cassandra horde.<br>
<br>
</div>Seems like a simple yet effective approach given the scale you're targeting.<br></blockquote><div><br></div><div>Actually I think it will work for anyone that wants a global, reliable, public-facing bi-directional messaging platform that will scale up when it needs, down when it doesn't, and is presented as a standard service to internal customers. We're the ham in the sandwich - and much more reliable than the bread slices.</div>
<div><br></div><div>The back-end is 'pluggable' - couchbase might be an alternate choice. We've used riak and dynamodb but chose Cassandra because multi-datacenter facilities are available and free to use plus we have folks who can jump into any Java issues (not me).</div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class=""><div class="h5">_______________________________________________<br>
rabbitmq-discuss mailing list<br>
<a href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br>
<a href="https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a></div></div></blockquote></div></div></div>