open-consul/contributing/persistence/overview.svg

1 line
22 KiB
XML

<svg id="graph-div" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="771" style="max-width: 660.4375px;" viewBox="0 0 660.4375 771"><style>#graph-div{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#graph-div .error-icon{fill:#552222;}#graph-div .error-text{fill:#552222;stroke:#552222;}#graph-div .edge-thickness-normal{stroke-width:2px;}#graph-div .edge-thickness-thick{stroke-width:3.5px;}#graph-div .edge-pattern-solid{stroke-dasharray:0;}#graph-div .edge-pattern-dashed{stroke-dasharray:3;}#graph-div .edge-pattern-dotted{stroke-dasharray:2;}#graph-div .marker{fill:#333333;stroke:#333333;}#graph-div .marker.cross{stroke:#333333;}#graph-div svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#graph-div .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#graph-div .cluster-label text{fill:#333;}#graph-div .cluster-label span{color:#333;}#graph-div .label text,#graph-div span{fill:#333;color:#333;}#graph-div .node rect,#graph-div .node circle,#graph-div .node ellipse,#graph-div .node polygon,#graph-div .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#graph-div .node .label{text-align:center;}#graph-div .node.clickable{cursor:pointer;}#graph-div .arrowheadPath{fill:#333333;}#graph-div .edgePath .path{stroke:#333333;stroke-width:1.5px;}#graph-div .flowchart-link{stroke:#333333;fill:none;}#graph-div .edgeLabel{background-color:#e8e8e8;text-align:center;}#graph-div .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#graph-div .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#graph-div .cluster text{fill:#333;}#graph-div .cluster span{color:#333;}#graph-div div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80,100%,96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#graph-div .node rect{fill:rgb(220,71,125);stroke-width:1;stroke:black;}#graph-div .node .label{color:white;}#graph-div .cluster rect{fill:#f0f0f0;stroke-width:1px;stroke:#333;}#graph-div .edgeLabel{background-color:#f0f0f0;}#graph-div:root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#graph-div .req &gt; *{fill:transparent !important;color:#000 !important;stroke-width:1 !important;}#graph-div .req span{fill:transparent !important;color:#000 !important;stroke-width:1 !important;}</style><g><g class="output"><g class="clusters"><g class="cluster" id="flowchart-Follower-64680" transform="translate(142.787109375,432.5)" style="opacity: 1;"><rect width="269.57421875" height="661" x="-134.787109375" y="-330.5"></rect><g class="label" transform="translate(0, -316.5)" id="graph-divText"><g transform="translate(-30.9296875,-12)"><foreignObject width="61.859375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Follower</div></foreignObject></g></g></g><g class="cluster" id="flowchart-Leader-64681" transform="translate(475.005859375,504)" style="opacity: 1;"><rect width="354.86328125" height="518" x="-177.431640625" y="-259"></rect><g class="label" transform="translate(0, -245)" id="graph-divText"><g transform="translate(-24.546875,-12)"><foreignObject width="49.09375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Leader</div></foreignObject></g></g></g></g><g class="edgePaths"><g class="edgePath LS-requestLeader LE-RPCLeader" id="L-requestLeader-RPCLeader" style="opacity: 1;"><path class="path" d="M465.796875,171L465.796875,177.16666666666666C465.796875,183.33333333333334,465.796875,195.66666666666666,465.796875,208C465.796875,220.33333333333334,465.796875,232.66666666666666,465.796875,243C465.796875,253.33333333333334,465.796875,261.6666666666667,465.796875,265.8333333333333L465.796875,270" marker-end="url(#arrowhead102011)" style="fill:none"></path><defs><marker id="arrowhead102011" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-requestFollower LE-RPCFollower" id="L-requestFollower-RPCFollower" style="opacity: 1;"><path class="path" d="M120.80078125,52L120.80078125,56.166666666666664C120.80078125,60.333333333333336,120.80078125,68.66666666666667,120.80078125,77C120.80078125,85.33333333333333,120.80078125,93.66666666666667,120.80078125,102C120.80078125,110.33333333333333,120.80078125,118.66666666666667,120.80078125,122.83333333333333L120.80078125,127" marker-end="url(#arrowhead102012)" style="fill:none"></path><defs><marker id="arrowhead102012" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-RPCLeader LE-RaftLeader" id="L-RPCLeader-RaftLeader" style="opacity: 1;"><path class="path" d="M444.887844279661,314L439.02697960805085,320.1666666666667C433.1661149364407,326.3333333333333,421.4443855932204,338.6666666666667,415.58352092161016,351C409.72265625,363.3333333333333,409.72265625,375.6666666666667,409.72265625,381.8333333333333L409.72265625,388" marker-end="url(#arrowhead102013)" style="fill:none"></path><defs><marker id="arrowhead102013" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-RPCLeader LE-StateStoreLeader" id="L-RPCLeader-StateStoreLeader" style="opacity: 1;"><path class="path" d="M486.705905720339,314L492.56677039194915,320.1666666666667C498.4276350635593,326.3333333333333,510.1493644067796,338.6666666666667,516.0102290783899,354.6666666666667C521.87109375,370.6666666666667,521.87109375,390.3333333333333,521.87109375,410C521.87109375,429.6666666666667,521.87109375,449.3333333333333,521.87109375,469C521.87109375,488.6666666666667,521.87109375,508.3333333333333,521.87109375,526C521.87109375,543.6666666666666,521.87109375,559.3333333333334,521.87109375,575C521.87109375,590.6666666666666,521.87109375,606.3333333333334,521.87109375,622C521.87109375,637.6666666666666,521.87109375,653.3333333333334,524.4742215203901,665.3333333333334C527.0773492907801,677.3333333333334,532.2836048315603,685.6666666666666,534.8867326019504,689.8333333333334L537.4898603723404,694" marker-end="url(#arrowhead102014)" style="fill:none"></path><defs><marker id="arrowhead102014" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-RaftLeader LE-FSMLeader" id="L-RaftLeader-FSMLeader" style="opacity: 1;"><path class="path" d="M434.71484375,418.6293434528164L459.0286458333333,427.02445287734696C483.3424479166667,435.41956230187753,531.9700520833334,452.2097811509388,556.2838541666666,470.43822390880274C580.59765625,488.6666666666667,580.59765625,508.3333333333333,580.59765625,526C580.59765625,543.6666666666666,580.59765625,559.3333333333334,580.59765625,571.3333333333334C580.59765625,583.3333333333334,580.59765625,591.6666666666666,580.59765625,595.8333333333334L580.59765625,600" marker-end="url(#arrowhead102015)" style="fill:none"></path><defs><marker id="arrowhead102015" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-FSMLeader LE-StateStoreLeader" id="L-FSMLeader-StateStoreLeader" style="opacity: 1;"><path class="path" d="M580.59765625,644L580.59765625,648.1666666666666C580.59765625,652.3333333333334,580.59765625,660.6666666666666,577.9945284796099,669C575.3914007092199,677.3333333333334,570.1851451684397,685.6666666666666,567.5820173980496,689.8333333333334L564.9788896276596,694" marker-end="url(#arrowhead102016)" style="fill:none"></path><defs><marker id="arrowhead102016" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-RaftLeader LE-RaftFollower" id="L-RaftLeader-RaftFollower" style="opacity: 1;"><path class="path" d="M409.72265625,432L409.72265625,438.1666666666667C409.72265625,444.3333333333333,409.72265625,456.6666666666667,374.4440104166667,471.6282474499059C339.1653645833333,486.58982823314517,268.6080729166667,504.1796564662904,233.32942708333334,512.974570582863L198.05078125,521.7694846994356" marker-end="url(#arrowhead102017)" style="fill:none;stroke-width:2px;stroke-dasharray:3;"></path><defs><marker id="arrowhead102017" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-RPCFollower LE-RPCLeader" id="L-RPCFollower-RPCLeader" style="opacity: 1;"><path class="path" d="M140.28674523305085,171L145.7487199858757,177.16666666666666C151.21069473870057,183.33333333333334,162.13464424435028,195.66666666666666,167.59661899717514,208C173.05859375,220.33333333333334,173.05859375,232.66666666666666,217.86393229166666,246.02696343345656C262.6692708333333,259.38726020024643,352.2799479166667,273.7745204004928,397.0852864583333,280.96815050061605L441.890625,288.16178060073923" marker-end="url(#arrowhead102018)" style="fill:none"></path><defs><marker id="arrowhead102018" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-RPCFollower LE-StateStoreFollower" id="L-RPCFollower-StateStoreFollower" style="opacity: 1;"><path class="path" d="M101.31481726694915,171L95.85284251412429,177.16666666666666C90.39086776129943,183.33333333333334,79.46691825564972,195.66666666666666,74.00494350282486,208C68.54296875,220.33333333333334,68.54296875,232.66666666666666,68.54296875,246.66666666666666C68.54296875,260.6666666666667,68.54296875,276.3333333333333,68.54296875,294C68.54296875,311.6666666666667,68.54296875,331.3333333333333,68.54296875,351C68.54296875,370.6666666666667,68.54296875,390.3333333333333,68.54296875,410C68.54296875,429.6666666666667,68.54296875,449.3333333333333,68.54296875,469C68.54296875,488.6666666666667,68.54296875,508.3333333333333,68.54296875,526C68.54296875,543.6666666666666,68.54296875,559.3333333333334,68.54296875,575C68.54296875,590.6666666666666,68.54296875,606.3333333333334,68.54296875,622C68.54296875,637.6666666666666,68.54296875,653.3333333333334,71.20219691932624,665.3333333333334C73.86142508865248,677.3333333333334,79.17988142730496,685.6666666666666,81.8391095966312,689.8333333333334L84.49833776595744,694" marker-end="url(#arrowhead102019)" style="fill:none"></path><defs><marker id="arrowhead102019" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-RaftFollower LE-FSMFollower" id="L-RaftFollower-FSMFollower" style="opacity: 1;"><path class="path" d="M173.05859375,550L173.05859375,554.1666666666666C173.05859375,558.3333333333334,173.05859375,566.6666666666666,173.05859375,575C173.05859375,583.3333333333334,173.05859375,591.6666666666666,173.05859375,595.8333333333334L173.05859375,600" marker-end="url(#arrowhead102020)" style="fill:none"></path><defs><marker id="arrowhead102020" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-FSMFollower LE-StateStoreFollower" id="L-FSMFollower-StateStoreFollower" style="opacity: 1;"><path class="path" d="M173.05859375,644L173.05859375,648.1666666666666C173.05859375,652.3333333333334,173.05859375,660.6666666666666,166.45225232712767,669C159.8459109042553,677.3333333333334,146.63322805851064,685.6666666666666,140.0268866356383,689.8333333333334L133.42054521276594,694" marker-end="url(#arrowhead102021)" style="fill:none"></path><defs><marker id="arrowhead102021" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g></g><g class="edgeLabels"><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><rect rx="0" ry="0" width="0" height="0"></rect><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-requestLeader-RPCLeader" class="edgeLabel L-LS-requestLeader' L-LE-RPCLeader"></span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><rect rx="0" ry="0" width="0" height="0"></rect><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-requestFollower-RPCFollower" class="edgeLabel L-LS-requestFollower' L-LE-RPCFollower"></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(409.72265625,351)" style="opacity: 1;"><g transform="translate(-18.8828125,-12)" class="label"><rect rx="0" ry="0" width="37.765625" height="24"></rect><foreignObject width="37.765625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-RPCLeader-RaftLeader" class="edgeLabel L-LS-RPCLeader' L-LE-RaftLeader">write</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(521.87109375,528)" style="opacity: 1;"><g transform="translate(-16.1328125,-12)" class="label"><rect rx="0" ry="0" width="32.265625" height="24"></rect><foreignObject width="32.265625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-RPCLeader-StateStoreLeader" class="edgeLabel L-LS-RPCLeader' L-LE-StateStoreLeader">read</span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><rect rx="0" ry="0" width="0" height="0"></rect><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-RaftLeader-FSMLeader" class="edgeLabel L-LS-RaftLeader' L-LE-FSMLeader"></span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><rect rx="0" ry="0" width="0" height="0"></rect><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-FSMLeader-StateStoreLeader" class="edgeLabel L-LS-FSMLeader' L-LE-StateStoreLeader"></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(409.72265625,469)" style="opacity: 1;"><g transform="translate(-92.1484375,-12)" class="label"><rect rx="0" ry="0" width="184.296875" height="24"></rect><foreignObject width="184.296875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-RaftLeader-RaftFollower" class="edgeLabel L-LS-RaftLeader' L-LE-RaftFollower">consensus and replication</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(173.05859375,208)" style="opacity: 1;"><g transform="translate(-84.515625,-12)" class="label"><rect rx="0" ry="0" width="169.03125" height="24"></rect><foreignObject width="169.03125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-RPCFollower-RPCLeader" class="edgeLabel L-LS-RPCFollower' L-LE-RPCLeader">forward write to leader</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(68.54296875,469)" style="opacity: 1;"><g transform="translate(-16.1328125,-12)" class="label"><rect rx="0" ry="0" width="32.265625" height="24"></rect><foreignObject width="32.265625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-RPCFollower-StateStoreFollower" class="edgeLabel L-LS-RPCFollower' L-LE-StateStoreFollower">read</span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><rect rx="0" ry="0" width="0" height="0"></rect><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-RaftFollower-FSMFollower" class="edgeLabel L-LS-RaftFollower' L-LE-FSMFollower"></span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><rect rx="0" ry="0" width="0" height="0"></rect><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-FSMFollower-StateStoreFollower" class="edgeLabel L-LS-FSMFollower' L-LE-StateStoreFollower"></span></div></foreignObject></g></g></g><g class="nodes"><g class="node default" id="flowchart-RPCFollower-64653" transform="translate(120.80078125,149)" style="opacity: 1;"><rect rx="0" ry="0" x="-23.90625" y="-22" width="47.8125" height="44" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-13.90625,-12)"><foreignObject width="27.8125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">RPC</div></foreignObject></g></g></g><g class="node default" id="flowchart-RaftFollower-64667" transform="translate(173.05859375,528)" style="opacity: 1;"><rect rx="0" ry="0" x="-24.9921875" y="-22" width="49.984375" height="44" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-14.9921875,-12)"><foreignObject width="29.984375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Raft</div></foreignObject></g></g></g><g class="node default" id="flowchart-StateStoreFollower-64668" transform="translate(98.5390625,716)" style="opacity: 1;"><rect rx="0" ry="0" x="-49.953125" y="-22" width="99.90625" height="44" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-39.953125,-12)"><foreignObject width="79.90625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">State Store</div></foreignObject></g></g></g><g class="node default" id="flowchart-FSMFollower-64669" transform="translate(173.05859375,622)" style="opacity: 1;"><rect rx="0" ry="0" x="-23.7265625" y="-22" width="47.453125" height="44" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-13.7265625,-12)"><foreignObject width="27.453125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">FSM</div></foreignObject></g></g></g><g class="node default" id="flowchart-RPCLeader-64651" transform="translate(465.796875,292)" style="opacity: 1;"><rect rx="0" ry="0" x="-23.90625" y="-22" width="47.8125" height="44" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-13.90625,-12)"><foreignObject width="27.8125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">RPC</div></foreignObject></g></g></g><g class="node default" id="flowchart-RaftLeader-64655" transform="translate(409.72265625,410)" style="opacity: 1;"><rect rx="0" ry="0" x="-24.9921875" y="-22" width="49.984375" height="44" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-14.9921875,-12)"><foreignObject width="29.984375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Raft</div></foreignObject></g></g></g><g class="node default" id="flowchart-StateStoreLeader-64656" transform="translate(551.234375,716)" style="opacity: 1;"><rect rx="0" ry="0" x="-49.953125" y="-22" width="99.90625" height="44" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-39.953125,-12)"><foreignObject width="79.90625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">State Store</div></foreignObject></g></g></g><g class="node default" id="flowchart-FSMLeader-64657" transform="translate(580.59765625,622)" style="opacity: 1;"><rect rx="0" ry="0" x="-23.7265625" y="-22" width="47.453125" height="44" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-13.7265625,-12)"><foreignObject width="27.453125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">FSM</div></foreignObject></g></g></g><g class="node req" id="flowchart-requestLeader-64650" transform="translate(465.796875,149)" style="opacity: 1;"><rect rx="0" ry="0" x="-37.078125" y="-22" width="74.15625" height="44" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-27.078125,-12)"><foreignObject width="54.15625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">request</div></foreignObject></g></g></g><g class="node req" id="flowchart-requestFollower-64652" transform="translate(120.80078125,30)" style="opacity: 1;"><rect rx="0" ry="0" x="-37.078125" y="-22" width="74.15625" height="44" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-27.078125,-12)"><foreignObject width="54.15625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">request</div></foreignObject></g></g></g></g></g></g></svg>