<div><span id="internal-source-marker_0.12906860699877143"><span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Hi all,</span><br></span></div>
<div><b id="internal-source-marker_0.12906860699877143"><span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">I want to introduce some ideas about Swift.</span></b></div>
<div><span style="font-size:15px;white-space:pre-wrap;font-family:Arial"> </span></div><div><b><span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Let’s assume we have huge amount of data stored in Swift (e.g. 10Pb). This data are dynamically changed by users. So we need to reduce network load caused by replication and intensive data uploading/downloading. </span><br>

<span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">My proposal is to create so called “Ring of rings”. For example we have 2 data centers with deployed Swift. We can distinguish some nodes for serving “Ring of rings” (actually we need only Proxy Servers).</span><br>

<span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap"></span><br><span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">“Ring of rings” structure.</span><br>

<span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Each data center corresponds to zone (load balancer’s ip address and port ). Replica count is 1. </span><br>

<span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap"></span><br><span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Load balancers for each data center have to rewrite</span><br>

<span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">/<device>/<partition>/<account>/<container>/<object> </span><br>

<span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">to</span><br><span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">/<version>/<account>/<container>/<object></span><span style="font-size:9px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:super;white-space:pre-wrap"></span><br>

<span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Example for Nginx:</span><br><span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">      rewrite ^/.+/[0-9]+/(.+)$ /v1/$1 break;
      rewrite ^/.+/[0-9]+/(.+)/(.+)$ /v1/$1/$2 break;<br>      rewrite ^/.+/[0-9]+/(.+)/(.+)/(.+)$ /v1/$1/$2/$3 break;</span><br><span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap"></span><br>

<span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Concept architecture </span><a href="https://docs.google.com/drawings/pub?id=1RRqsTxfd0jtfUofFaGuwjyxCBUQ2keWzDzjle1kbqB4&w=1161&h=732" target="_blank"><span style="font-size:15px;font-family:Arial;color:rgb(17,85,204);font-weight:normal;vertical-align:baseline;white-space:pre-wrap">https://docs.google.com/drawings/pub?id=1RRqsTxfd0jtfUofFaGuwjyxCBUQ2keWzDzjle1kbqB4&w=1161&h=732</span></a><span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap"></span><br>

<span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap"></span><br><span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">So we can use Ring to determine data center to send http request to.</span><br>

<span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap"></span><br><span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">What do you think about this scheme?</span><br>

<span style="font-size:15px;font-family:Arial;font-weight:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Feedback from the OpenStack/Swift community would be very appreciated.</span></b></div><div>

<br></div>-- <br>Kind regards<div>Dmitry Ukov</div><div>IT Engineer</div><div><div>Mirantis, Inc.</div></div><div><br></div><br>