<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 26 Mar 2015, at 14:42, Przemysław Wycisk <<a href="mailto:p.wycisk@livechatinc.com" class="">p.wycisk@livechatinc.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">We have two ideas how to solve that problem:</div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">- write an application (lets call it Y), which can store all needed data to restart a X application, there could be several instances of Y on several machines, which will have to be up to date with X application's state to restart it without lose of data,</div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">- keep exact mirror of X application on several machines, only one responsive, other only for keeping processes, and state data. Mirrors would just create mirror processes and update its state up to master X application.<span class="Apple-converted-space"> </span><br class="">On master X application crash, one of mirrors would just "unlock" and run as master.</div></div></blockquote></div><div class=""><br class=""></div><div class="">What I suggest you do first is to analyze your system requirements from a failure recovery standpoint: what level of service outage can you live with?</div><div class=""><br class=""></div><div class="">Mirroring state in real-time is of course possible, but as you’ve noted, very expensive.</div><div class=""><br class=""></div><div class="">In the old AXD 301, the basic redundancy mechanism was asynchronous stable-state replication, combined with an audit after failure. In that particular system, we had ca 15 seconds before protocol timers would start firing and a service outage becoming noticeable*. We went through the various data items and decided which data could be reconstituted from other data, and which couldn’t. We also assessed the probability of certain failures and calculated the amount of data loss that would be acceptable given the availability level we were aiming for.</div><div class=""><br class=""></div><div class="">In other words, we had neither a hot nor cold standby, but something in between - warm standby.</div><div class=""><br class=""></div><div class="">BR,</div><div class="">Ulf W</div><div class=""><br class=""></div><div class="">* This was possible because the actual data stream handling was physically separate from the control layer.</div><br class=""><div apple-content-edited="true" class="">
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;  "><div class=""><div class="">Ulf Wiger, Co-founder & Developer Advocate, Feuerlabs Inc.</div><div class=""><a href="http://feuerlabs.com" class="">http://feuerlabs.com</a></div></div><div class=""><br class=""></div></span><br class="Apple-interchange-newline">

</div>
<br class=""></body></html>