This commit is contained in:
Rahee Peshawaria 2018-12-11 17:45:14 -08:00
Родитель 91fd93c653
Коммит ea738e0fa5
2 изменённых файлов: 149 добавлений и 82 удалений

Просмотреть файл

@ -2,8 +2,8 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export Architecture.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="8.5in" height="11in" viewBox="0 0 612 792"
xml:space="preserve" color-interpolation-filters="sRGB" class="st13">
xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="8.3941in" height="5.44479in"
viewBox="0 0 604.375 392.025" xml:space="preserve" color-interpolation-filters="sRGB" class="st13">
<v:documentProperties v:langID="1033" v:viewMarkup="false">
<v:userDefs>
<v:ud v:nameU="msvNoAutoConnect" v:val="VT0(1):26"/>
@ -46,7 +46,7 @@
<v:pageProperties v:drawingScale="1" v:pageScale="1" v:drawingUnits="19" v:shadowOffsetX="9" v:shadowOffsetY="-9"/>
<v:layer v:name="Flowchart" v:index="0"/>
<v:layer v:name="Connector" v:index="1"/>
<g id="group1-1" transform="translate(9,-549)" v:mID="1" v:groupContext="group">
<g id="group1-1" transform="translate(18.75,-144.625)" v:mID="1" v:groupContext="group">
<title>Sheet.1</title>
<g id="shape2-2" v:mID="2" v:groupContext="shape" v:layerMember="0">
<title>Disk storage</title>
@ -58,10 +58,10 @@
<v:userDefs>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
</v:userDefs>
<path d="M0 745.2 L0 784.8 A36 7.2 -180 1 0 72 784.8 L72 745.2 A36 7.2 -180 0 0 0 745.2 Z" class="st1"/>
<path d="M0 745.2 L0 784.8 A36 7.2 -180 1 0 72 784.8 L72 745.2 A36 7.2 -180 0 0 0 745.2" class="st2"/>
<path d="M0 745.2 A36 7.2 -180 1 0 72 745.2" class="st2"/>
<path d="M0 748.8 A36 7.2 -180 1 0 72 748.8" class="st2"/>
<path d="M0 345.22 L0 384.82 A36 7.2 -180 1 0 72 384.82 L72 345.22 A36 7.2 -180 0 0 0 345.22 Z" class="st1"/>
<path d="M0 345.22 L0 384.82 A36 7.2 -180 1 0 72 384.82 L72 345.22 A36 7.2 -180 0 0 0 345.22" class="st2"/>
<path d="M0 345.22 A36 7.2 -180 1 0 72 345.22" class="st2"/>
<path d="M0 348.82 A36 7.2 -180 1 0 72 348.82" class="st2"/>
</g>
<g id="shape3-7" v:mID="3" v:groupContext="shape" v:layerMember="0" transform="translate(18,0)">
<title>Disk storage.6</title>
@ -73,10 +73,10 @@
<v:userDefs>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
</v:userDefs>
<path d="M0 745.2 L0 784.8 A36 7.2 -180 1 0 72 784.8 L72 745.2 A36 7.2 -180 0 0 0 745.2 Z" class="st1"/>
<path d="M0 745.2 L0 784.8 A36 7.2 -180 1 0 72 784.8 L72 745.2 A36 7.2 -180 0 0 0 745.2" class="st2"/>
<path d="M0 745.2 A36 7.2 -180 1 0 72 745.2" class="st2"/>
<path d="M0 748.8 A36 7.2 -180 1 0 72 748.8" class="st2"/>
<path d="M0 345.22 L0 384.82 A36 7.2 -180 1 0 72 384.82 L72 345.22 A36 7.2 -180 0 0 0 345.22 Z" class="st1"/>
<path d="M0 345.22 L0 384.82 A36 7.2 -180 1 0 72 384.82 L72 345.22 A36 7.2 -180 0 0 0 345.22" class="st2"/>
<path d="M0 345.22 A36 7.2 -180 1 0 72 345.22" class="st2"/>
<path d="M0 348.82 A36 7.2 -180 1 0 72 348.82" class="st2"/>
</g>
<g id="shape4-12" v:mID="4" v:groupContext="shape" v:layerMember="0" transform="translate(36,0)">
<title>Disk storage.7</title>
@ -88,24 +88,24 @@
<v:userDefs>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
</v:userDefs>
<path d="M0 745.2 L0 784.8 A36 7.2 -180 1 0 72 784.8 L72 745.2 A36 7.2 -180 0 0 0 745.2 Z" class="st1"/>
<path d="M0 745.2 L0 784.8 A36 7.2 -180 1 0 72 784.8 L72 745.2 A36 7.2 -180 0 0 0 745.2" class="st2"/>
<path d="M0 745.2 A36 7.2 -180 1 0 72 745.2" class="st2"/>
<path d="M0 748.8 A36 7.2 -180 1 0 72 748.8" class="st2"/>
<path d="M0 345.22 L0 384.82 A36 7.2 -180 1 0 72 384.82 L72 345.22 A36 7.2 -180 0 0 0 345.22 Z" class="st1"/>
<path d="M0 345.22 L0 384.82 A36 7.2 -180 1 0 72 384.82 L72 345.22 A36 7.2 -180 0 0 0 345.22" class="st2"/>
<path d="M0 345.22 A36 7.2 -180 1 0 72 345.22" class="st2"/>
<path d="M0 348.82 A36 7.2 -180 1 0 72 348.82" class="st2"/>
</g>
</g>
<g id="shape5-17" v:mID="5" v:groupContext="shape" transform="translate(135,-657)">
<g id="shape5-17" v:mID="5" v:groupContext="shape" transform="translate(144.75,-252.625)">
<title>Rectangle.42</title>
<desc>Immortal Coordinator</desc>
<v:userDefs>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(4,4,4,4)"/>
<v:textRect cx="67.5" cy="756" width="135" height="72"/>
<rect x="0" y="720" width="135" height="72" class="st3"/>
<text x="22.27" y="748.8" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Immortal <tspan
<v:textRect cx="67.5" cy="356.025" width="135" height="72"/>
<rect x="0" y="320.025" width="135" height="72" class="st3"/>
<text x="22.27" y="348.82" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Immortal <tspan
x="8.62" dy="1.2em" class="st5">Coordinator</tspan></text> </g>
<g id="group6-21" transform="translate(306,-549)" v:mID="6" v:groupContext="group">
<g id="group6-21" transform="translate(315.75,-144.625)" v:mID="6" v:groupContext="group">
<title>Sheet.6</title>
<g id="shape7-22" v:mID="7" v:groupContext="shape" v:layerMember="0">
<title>Disk storage</title>
@ -117,10 +117,10 @@
<v:userDefs>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
</v:userDefs>
<path d="M0 745.2 L0 784.8 A36 7.2 -180 1 0 72 784.8 L72 745.2 A36 7.2 -180 0 0 0 745.2 Z" class="st1"/>
<path d="M0 745.2 L0 784.8 A36 7.2 -180 1 0 72 784.8 L72 745.2 A36 7.2 -180 0 0 0 745.2" class="st2"/>
<path d="M0 745.2 A36 7.2 -180 1 0 72 745.2" class="st2"/>
<path d="M0 748.8 A36 7.2 -180 1 0 72 748.8" class="st2"/>
<path d="M0 345.22 L0 384.82 A36 7.2 -180 1 0 72 384.82 L72 345.22 A36 7.2 -180 0 0 0 345.22 Z" class="st1"/>
<path d="M0 345.22 L0 384.82 A36 7.2 -180 1 0 72 384.82 L72 345.22 A36 7.2 -180 0 0 0 345.22" class="st2"/>
<path d="M0 345.22 A36 7.2 -180 1 0 72 345.22" class="st2"/>
<path d="M0 348.82 A36 7.2 -180 1 0 72 348.82" class="st2"/>
</g>
<g id="shape8-27" v:mID="8" v:groupContext="shape" v:layerMember="0" transform="translate(18,0)">
<title>Disk storage.6</title>
@ -132,10 +132,10 @@
<v:userDefs>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
</v:userDefs>
<path d="M0 745.2 L0 784.8 A36 7.2 -180 1 0 72 784.8 L72 745.2 A36 7.2 -180 0 0 0 745.2 Z" class="st1"/>
<path d="M0 745.2 L0 784.8 A36 7.2 -180 1 0 72 784.8 L72 745.2 A36 7.2 -180 0 0 0 745.2" class="st2"/>
<path d="M0 745.2 A36 7.2 -180 1 0 72 745.2" class="st2"/>
<path d="M0 748.8 A36 7.2 -180 1 0 72 748.8" class="st2"/>
<path d="M0 345.22 L0 384.82 A36 7.2 -180 1 0 72 384.82 L72 345.22 A36 7.2 -180 0 0 0 345.22 Z" class="st1"/>
<path d="M0 345.22 L0 384.82 A36 7.2 -180 1 0 72 384.82 L72 345.22 A36 7.2 -180 0 0 0 345.22" class="st2"/>
<path d="M0 345.22 A36 7.2 -180 1 0 72 345.22" class="st2"/>
<path d="M0 348.82 A36 7.2 -180 1 0 72 348.82" class="st2"/>
</g>
<g id="shape9-32" v:mID="9" v:groupContext="shape" v:layerMember="0" transform="translate(36,0)">
<title>Disk storage.7</title>
@ -147,24 +147,24 @@
<v:userDefs>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
</v:userDefs>
<path d="M0 745.2 L0 784.8 A36 7.2 -180 1 0 72 784.8 L72 745.2 A36 7.2 -180 0 0 0 745.2 Z" class="st1"/>
<path d="M0 745.2 L0 784.8 A36 7.2 -180 1 0 72 784.8 L72 745.2 A36 7.2 -180 0 0 0 745.2" class="st2"/>
<path d="M0 745.2 A36 7.2 -180 1 0 72 745.2" class="st2"/>
<path d="M0 748.8 A36 7.2 -180 1 0 72 748.8" class="st2"/>
<path d="M0 345.22 L0 384.82 A36 7.2 -180 1 0 72 384.82 L72 345.22 A36 7.2 -180 0 0 0 345.22 Z" class="st1"/>
<path d="M0 345.22 L0 384.82 A36 7.2 -180 1 0 72 384.82 L72 345.22 A36 7.2 -180 0 0 0 345.22" class="st2"/>
<path d="M0 345.22 A36 7.2 -180 1 0 72 345.22" class="st2"/>
<path d="M0 348.82 A36 7.2 -180 1 0 72 348.82" class="st2"/>
</g>
</g>
<g id="shape10-37" v:mID="10" v:groupContext="shape" transform="translate(432,-657)">
<g id="shape10-37" v:mID="10" v:groupContext="shape" transform="translate(441.75,-252.625)">
<title>Rectangle.50</title>
<desc>Immortal Coordinator</desc>
<v:userDefs>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(4,4,4,4)"/>
<v:textRect cx="67.5" cy="756" width="135" height="72"/>
<rect x="0" y="720" width="135" height="72" class="st3"/>
<text x="22.27" y="748.8" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Immortal <tspan
<v:textRect cx="67.5" cy="356.025" width="135" height="72"/>
<rect x="0" y="320.025" width="135" height="72" class="st3"/>
<text x="22.27" y="348.82" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Immortal <tspan
x="8.62" dy="1.2em" class="st5">Coordinator</tspan></text> </g>
<g id="group11-41" transform="translate(141.75,-435)" v:mID="11" v:groupContext="group">
<g id="group11-41" transform="translate(151.5,-30.625)" v:mID="11" v:groupContext="group">
<title>Sheet.11</title>
<g id="group12-42" transform="translate(0,-1.5)" v:mID="12" v:groupContext="group">
<title>Sheet.12</title>
@ -175,19 +175,19 @@
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(4,4,4,4)"/>
<v:textRect cx="60.75" cy="771.75" width="121.5" height="40.5"/>
<rect x="0" y="751.5" width="121.5" height="40.5" class="st6"/>
<text x="5.46" y="778.95" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Application</text> </g>
<v:textRect cx="60.75" cy="371.775" width="121.5" height="40.5"/>
<rect x="0" y="351.525" width="121.5" height="40.5" class="st6"/>
<text x="5.46" y="378.97" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Application</text> </g>
<g id="shape14-46" v:mID="14" v:groupContext="shape" transform="translate(0,-40.5)">
<title>Rectangle.51</title>
<desc>Ambrosia Binding</desc>
<desc>AMBROSIA Binding</desc>
<v:userDefs>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(4,4,4,4)"/>
<v:textRect cx="60.75" cy="765" width="121.5" height="54"/>
<rect x="0" y="738" width="121.5" height="54" class="st6"/>
<text x="14.21" y="757.8" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Ambrosia <tspan
<v:textRect cx="60.75" cy="365.025" width="121.5" height="54"/>
<rect x="0" y="338.025" width="121.5" height="54" class="st6"/>
<text x="7.08" y="357.82" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>AMBROSIA <tspan
x="24.15" dy="1.2em" class="st5">Binding</tspan></text> </g>
</g>
<g id="shape15-50" v:mID="15" v:groupContext="shape">
@ -195,10 +195,10 @@
<v:userDefs>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
</v:userDefs>
<rect x="0" y="696" width="121.5" height="96" class="st7"/>
<rect x="0" y="296.025" width="121.5" height="96" class="st7"/>
</g>
</g>
<g id="group16-52" transform="translate(438.75,-435)" v:mID="16" v:groupContext="group">
<g id="group16-52" transform="translate(448.5,-30.625)" v:mID="16" v:groupContext="group">
<title>Sheet.16</title>
<g id="group17-53" transform="translate(0,-1.5)" v:mID="17" v:groupContext="group">
<title>Sheet.17</title>
@ -209,19 +209,19 @@
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(4,4,4,4)"/>
<v:textRect cx="60.75" cy="771.75" width="121.5" height="40.5"/>
<rect x="0" y="751.5" width="121.5" height="40.5" class="st6"/>
<text x="5.46" y="778.95" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Application</text> </g>
<v:textRect cx="60.75" cy="371.775" width="121.5" height="40.5"/>
<rect x="0" y="351.525" width="121.5" height="40.5" class="st6"/>
<text x="5.46" y="378.97" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Application</text> </g>
<g id="shape19-57" v:mID="19" v:groupContext="shape" transform="translate(0,-40.5)">
<title>Rectangle.51</title>
<desc>Ambrosia Binding</desc>
<desc>AMBROSIA Binding</desc>
<v:userDefs>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(4,4,4,4)"/>
<v:textRect cx="60.75" cy="765" width="121.5" height="54"/>
<rect x="0" y="738" width="121.5" height="54" class="st6"/>
<text x="14.21" y="757.8" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Ambrosia <tspan
<v:textRect cx="60.75" cy="365.025" width="121.5" height="54"/>
<rect x="0" y="338.025" width="121.5" height="54" class="st6"/>
<text x="7.08" y="357.82" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>AMBROSIA <tspan
x="24.15" dy="1.2em" class="st5">Binding</tspan></text> </g>
</g>
<g id="shape20-61" v:mID="20" v:groupContext="shape">
@ -229,56 +229,56 @@
<v:userDefs>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
</v:userDefs>
<rect x="0" y="696" width="121.5" height="96" class="st7"/>
<rect x="0" y="296.025" width="121.5" height="96" class="st7"/>
</g>
</g>
<g id="shape21-63" v:mID="21" v:groupContext="shape" v:layerMember="1" transform="translate(193.5,-657)">
<g id="shape21-63" v:mID="21" v:groupContext="shape" v:layerMember="1" transform="translate(203.25,-252.625)">
<title>Dynamic connector.61</title>
<path d="M9 799.55 L9 799.91 L9 910.09" class="st8"/>
<path d="M9 399.57 L9 399.93 L9 510.11" class="st8"/>
</g>
<g id="shape22-74" v:mID="22" v:groupContext="shape" v:layerMember="1" transform="translate(270,-684)">
<g id="shape22-74" v:mID="22" v:groupContext="shape" v:layerMember="1" transform="translate(279.75,-279.625)">
<title>Dynamic connector.63</title>
<path d="M7.55 783 L7.91 783 L154.09 783" class="st8"/>
<path d="M7.55 383.02 L7.91 383.02 L154.09 383.02" class="st8"/>
</g>
<g id="shape23-81" v:mID="23" v:groupContext="shape" v:layerMember="1" transform="translate(490.5,-657)">
<g id="shape23-81" v:mID="23" v:groupContext="shape" v:layerMember="1" transform="translate(500.25,-252.625)">
<title>Dynamic connector.64</title>
<path d="M9 799.55 L9 799.91 L9 910.09" class="st8"/>
<path d="M9 399.57 L9 399.93 L9 510.11" class="st8"/>
</g>
<g id="shape24-88" v:mID="24" v:groupContext="shape" v:layerMember="1" transform="translate(135,-657)">
<g id="shape24-88" v:mID="24" v:groupContext="shape" v:layerMember="1" transform="translate(144.75,-252.625)">
<title>Dynamic connector.66</title>
<path d="M-7.55 792 L-7.91 792 L-72 792 L-72 838.09" class="st8"/>
<path d="M-7.55 392.02 L-7.91 392.02 L-72 392.02 L-72 438.11" class="st8"/>
</g>
<g id="shape25-95" v:mID="25" v:groupContext="shape" v:layerMember="1" transform="translate(432,-657)">
<g id="shape25-95" v:mID="25" v:groupContext="shape" v:layerMember="1" transform="translate(441.75,-252.625)">
<title>Dynamic connector.68</title>
<path d="M-7.55 792 L-7.91 792 L-54 792 L-54 838.09" class="st8"/>
<path d="M-7.55 392.02 L-7.91 392.02 L-54 392.02 L-54 438.11" class="st8"/>
</g>
<g id="shape26-102" v:mID="26" v:groupContext="shape" transform="translate(126,-423)">
<g id="shape26-102" v:mID="26" v:groupContext="shape" transform="translate(135.75,-18.625)">
<title>Rectangle.71</title>
<v:userDefs>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
</v:userDefs>
<rect x="0" y="468" width="153" height="324" class="st10"/>
<rect x="0" y="68.0247" width="153" height="324" class="st10"/>
</g>
<g id="shape27-104" v:mID="27" v:groupContext="shape" transform="translate(423,-423)">
<g id="shape27-104" v:mID="27" v:groupContext="shape" transform="translate(432.75,-18.625)">
<title>Rectangle.72</title>
<v:userDefs>
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
</v:userDefs>
<rect x="0" y="468" width="153" height="324" class="st10"/>
<rect x="0" y="68.0247" width="153" height="324" class="st10"/>
</g>
<g id="shape28-106" v:mID="28" v:groupContext="shape" transform="translate(127,-754)">
<g id="shape28-106" v:mID="28" v:groupContext="shape" transform="translate(136.75,-349.625)">
<title>Sheet.28</title>
<desc>Immortal 1</desc>
<v:textBlock v:margins="rect(4,4,4,4)"/>
<v:textRect cx="76" cy="782" width="152" height="20"/>
<rect x="0" y="772" width="152" height="20" class="st11"/>
<text x="20.73" y="789.2" class="st12" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Immortal 1</text> </g>
<g id="shape29-109" v:mID="29" v:groupContext="shape" transform="translate(423,-754)">
<v:textRect cx="76" cy="382.025" width="152" height="20"/>
<rect x="0" y="372.025" width="152" height="20" class="st11"/>
<text x="20.73" y="389.22" class="st12" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Immortal 1</text> </g>
<g id="shape29-109" v:mID="29" v:groupContext="shape" transform="translate(432.75,-349.625)">
<title>Sheet.29</title>
<desc>Immortal 2</desc>
<v:textBlock v:margins="rect(4,4,4,4)"/>
<v:textRect cx="76" cy="782" width="152" height="20"/>
<rect x="0" y="772" width="152" height="20" class="st11"/>
<text x="20.73" y="789.2" class="st12" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Immortal 2</text> </g>
<v:textRect cx="76" cy="382.025" width="152" height="20"/>
<rect x="0" y="372.025" width="152" height="20" class="st11"/>
<text x="20.73" y="389.22" class="st12" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Immortal 2</text> </g>
</g>
</svg>

До

Ширина:  |  Высота:  |  Размер: 15 KiB

После

Ширина:  |  Высота:  |  Размер: 15 KiB

Просмотреть файл

@ -38,9 +38,9 @@ Table of Contents
* [Getting started]()
* [Windows]()
* [Kubernetes]()
* [Reference]()
* [Language Support]()
* [Usage]()
* [Reference](#reference)
* [Language Support](#language-support)
* [Usage](#usage)
## AMBROSIA Concepts
@ -58,14 +58,19 @@ The basic building blocks of AMBROSIA are *Immortals*, reliable distributed obje
## How it works
The figure below outlines the basic architecture of an AMBROSIA application, showing two communicating AMBROSIA services, called Immortals. Each inner box in the figure represents a separate process running as part of the Immortal. Each instance of an Immortal exists as a software object and thread of control running inside of an application process. An Immortal instance communicates with other Immortal instances through an *Immortal Coordinator* process, which durably logs the instance's RPCs and encapsulates the low-level networking required to send RPCs. The position of requests in the log determines the order in which they are submitted to the application process for execution and then re-execution upon recovery.
FINISHME - Add architecture diagram of immortal and immortal coordinator
![Ambrosia Architecture](Architecture.svg)
In addition, the language specific AMBROSIA binding provides a state serializer. To avoid replaying from the start of the service during recovery, the Immortal Coordinator occasionally checkpoints the state of the Immortal, which includes the application state. The way this serialization is provided can vary from language to language, or even amongst bindings for the same language.
## Features
Here is a list of features that AMBROSIA provides to application developers:
Here is a list of features that AMBROSIA provides to application developers and deployers:
FINISHME - feature list
* Register Instance, Add Replica
* Debug Instance
* Active Active
* Live Upgrades, Test Upgrades
* RPC
* Asynchronous RPC (beta)
Quick Start: Fetch a binary distribution
----------------------------------------
@ -89,3 +94,65 @@ Running a Sample
----------------
FINISHME - AmbrosiaDocs.md content will move here!!
## Reference
### Language Support
AMBROSIA currently supports C# on both .NET Core and .NET Framework. We plan to exand this support with AMBROSIA bindings for other languages in the future.
### Usage
```
Usage: Ambrosia.exe RegisterInstance [OPTIONS]
Options:
-i, --instanceName=VALUE The instance name [REQUIRED].
--rp, --receivePort=VALUE
The service receive from port [REQUIRED].
--sp, --sendPort=VALUE The service send to port. [REQUIRED]
-l, --log=VALUE The service log path.
--cs, --createService=VALUE
[A - AutoRecovery | N - NoRecovery | Y -
AlwaysRecover].
--ps, --pauseAtStart Is pause at start enabled.
--npl, --noPersistLogs Is persistent logging disabled.
--lts, --logTriggerSize=VALUE
Log trigger size (in MBs).
--aa, --activeActive Is active-active enabled.
--cv, --currentVersion=VALUE
The current version #.
--uv, --upgradeVersion=VALUE
The upgrade version #.
-h, --help show this message and exit
Usage: Ambrosia.exe AddReplica [OPTIONS]
Options:
-r, --replicaNum=VALUE The replica # [REQUIRED].
-i, --instanceName=VALUE The instance name [REQUIRED].
--rp, --receivePort=VALUE
The service receive from port [REQUIRED].
--sp, --sendPort=VALUE The service send to port. [REQUIRED]
-l, --log=VALUE The service log path.
--cs, --createService=VALUE
[A - AutoRecovery | N - NoRecovery | Y -
AlwaysRecover].
--ps, --pauseAtStart Is pause at start enabled.
--npl, --noPersistLogs Is persistent logging disabled.
--lts, --logTriggerSize=VALUE
Log trigger size (in MBs).
--aa, --activeActive Is active-active enabled.
--cv, --currentVersion=VALUE
The current version #.
--uv, --upgradeVersion=VALUE
The upgrade version #.
-h, --help show this message and exit
Usage: Ambrosia.exe DebugInstance [OPTIONS]
Options:
-i, --instanceName=VALUE The instance name [REQUIRED].
--rp, --receivePort=VALUE
The service receive from port [REQUIRED].
--sp, --sendPort=VALUE The service send to port. [REQUIRED]
-l, --log=VALUE The service log path.
-c, --checkpoint=VALUE The checkpoint # to load.
--cv, --currentVersion=VALUE
The version # to debug.
--tu, --testingUpgrade Is testing upgrade.
-h, --help show this message and exit
```