feat: docs for new parallel architecture (#872)
* feat: docs for new parallel architecture Signed-off-by: OxalisCu <2127298698@qq.com> * feat: add s2s architecture svg & fix misrepresentation --------- Signed-off-by: OxalisCu <2127298698@qq.com>
This commit is contained in:
parent
66ca8e71f0
commit
0700f9d7ce
|
@ -29,6 +29,7 @@ function sidebar(): DefaultTheme.SidebarItem[] {
|
|||
{ text: '快速上手', link: '/zh/guide/getting-started' },
|
||||
{ text: '配置', link: '/zh/guide/config' },
|
||||
{ text: '迁移模式选择', link: '/zh/guide/mode' },
|
||||
{ text: '架构与性能说明', link: '/zh/guide/architecture' },
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
|
@ -0,0 +1,565 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- 由 Microsoft Visio, SVG Export 生成 改进5.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="14.701in" height="5.27124in"
|
||||
viewBox="0 0 1058.47 379.529" xml:space="preserve" color-interpolation-filters="sRGB" class="st21">
|
||||
<v:documentProperties v:langID="2052" v:metric="true" v:viewMarkup="false">
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="msvSubprocessMaster" v:prompt="" v:val="VT4(Rectangle)"/>
|
||||
<v:ud v:nameU="msvNoAutoConnect" v:val="VT0(1):26"/>
|
||||
</v:userDefs>
|
||||
</v:documentProperties>
|
||||
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
.st1 {fill:#90aadb;stroke:#90aadb;stroke-width:0.25}
|
||||
.st2 {fill:#feffff;font-family:微软雅黑;font-size:0.833336em}
|
||||
.st3 {font-size:1em}
|
||||
.st4 {fill:none;stroke:#90aadb;stroke-dasharray:15,9;stroke-width:1}
|
||||
.st5 {fill:none;stroke:none;stroke-width:0.25}
|
||||
.st6 {fill:#4672c4;font-family:Calibri;font-size:1.00001em;font-weight:bold}
|
||||
.st7 {marker-end:url(#mrkr4-36);stroke:#90aadb;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
|
||||
.st8 {fill:#90aadb;fill-opacity:1;stroke:#90aadb;stroke-opacity:1;stroke-width:0.28409090909091}
|
||||
.st9 {fill:#a8d08d;font-family:Calibri;font-size:1.00001em;font-weight:bold}
|
||||
.st10 {fill:#ed7d31;font-family:Calibri;font-size:1.00001em;font-weight:bold}
|
||||
.st11 {fill:#ed7d31;font-family:Calibri;font-size:1.00001em}
|
||||
.st12 {fill:#a8d08d;stroke:#a8d08d;stroke-width:0.25}
|
||||
.st13 {fill:#feffff;font-family:微软雅黑;font-size:0.75em}
|
||||
.st14 {fill:#fbe5d5;stroke:#f4b183;stroke-width:0.25}
|
||||
.st15 {fill:#ed7d31;stroke:#ed7d31;stroke-width:0.25}
|
||||
.st16 {fill:#feffff;font-family:Arial;font-size:0.833336em}
|
||||
.st17 {fill:#ffc000;stroke:#ffd965;stroke-width:0.25}
|
||||
.st18 {fill:#c55a11;stroke:#ed7d31;stroke-width:0.25}
|
||||
.st19 {marker-end:url(#mrkr4-129);stroke:#c5e0b3;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
|
||||
.st20 {fill:#c5e0b3;fill-opacity:1;stroke:#c5e0b3;stroke-opacity:1;stroke-width:0.28409090909091}
|
||||
.st21 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<defs id="Markers">
|
||||
<g id="lend4">
|
||||
<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"/>
|
||||
</g>
|
||||
<marker id="mrkr4-36" class="st8" v:arrowType="4" v:arrowSize="2" v:setback="7.04" refX="-7.04" orient="auto"
|
||||
markerUnits="strokeWidth" overflow="visible">
|
||||
<use xlink:href="#lend4" transform="scale(-3.52,-3.52) "/>
|
||||
</marker>
|
||||
<marker id="mrkr4-129" class="st20" v:arrowType="4" v:arrowSize="2" v:setback="7.04" refX="-7.04" orient="auto"
|
||||
markerUnits="strokeWidth" overflow="visible">
|
||||
<use xlink:href="#lend4" transform="scale(-3.52,-3.52) "/>
|
||||
</marker>
|
||||
</defs>
|
||||
<g v:mID="0" v:index="1" v:groupContext="foregroundPage">
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="msvThemeOrder" v:val="VT0(0):26"/>
|
||||
</v:userDefs>
|
||||
<title>页-1</title>
|
||||
<v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394"
|
||||
v:shadowOffsetY="-8.50394"/>
|
||||
<v:layer v:name="连接线" v:index="0"/>
|
||||
<g id="shape19-1" v:mID="19" v:groupContext="shape" transform="translate(45.0019,-235.356)">
|
||||
<title>矩形.19</title>
|
||||
<desc>Cluster node 1 (slot 0–5460)</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="56.4242" cy="348.388" width="112.85" height="62.2817"/>
|
||||
<rect x="0" y="317.248" width="112.848" height="62.2817" class="st1"/>
|
||||
<text x="21.56" y="345.39" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Cluster node 1<v:newlineChar/><tspan
|
||||
x="25.56" dy="1.2em" class="st3">(slot 0</tspan>–5460)</text> </g>
|
||||
<g id="shape20-5" v:mID="20" v:groupContext="shape" transform="translate(45.0019,-155.946)">
|
||||
<title>矩形.20</title>
|
||||
<desc>Cluster node 2 (slot 5461–10922)</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="56.4242" cy="348.388" width="112.85" height="62.2817"/>
|
||||
<rect x="0" y="317.248" width="112.848" height="62.2817" class="st1"/>
|
||||
<text x="21.56" y="345.39" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Cluster node 2<v:newlineChar/><tspan
|
||||
x="13.83" dy="1.2em" class="st3">(slot 5461</tspan>–10922)</text> </g>
|
||||
<g id="shape21-9" v:mID="21" v:groupContext="shape" transform="translate(44.4743,-75.928)">
|
||||
<title>矩形.3</title>
|
||||
<desc>Cluster node 3 (slot 10923-16383)</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="56.4242" cy="348.388" width="112.85" height="62.2817"/>
|
||||
<rect x="0" y="317.248" width="112.848" height="62.2817" class="st1"/>
|
||||
<text x="21.56" y="345.39" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Cluster node 3<v:newlineChar/><tspan
|
||||
x="11.43" dy="1.2em" class="st3">(slot 10923</tspan>-16383)</text> </g>
|
||||
<g id="shape22-13" v:mID="22" v:groupContext="shape" transform="translate(23.2126,-48.7559)">
|
||||
<title>矩形.22</title>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<path d="M0 379.53 L152 379.53 L152 99.47 L0 99.47 L0 379.53 Z" class="st4"/>
|
||||
</g>
|
||||
<g id="shape23-15" v:mID="23" v:groupContext="shape" transform="translate(29.7638,-303.15)">
|
||||
<title>工作表.23</title>
|
||||
<desc>Source</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="69.4488" cy="369.529" width="138.9" height="20"/>
|
||||
<rect x="0" y="359.529" width="138.898" height="20" class="st5"/>
|
||||
<text x="52.5" y="373.13" class="st6" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Source</text> </g>
|
||||
<g id="shape26-18" v:mID="26" v:groupContext="shape" transform="translate(864.836,-191.339)">
|
||||
<title>矩形</title>
|
||||
<desc>Cluster node 1 (slot 0–8191)</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="56.4242" cy="348.388" width="112.85" height="62.2817"/>
|
||||
<rect x="0" y="317.248" width="112.848" height="62.2817" class="st1"/>
|
||||
<text x="21.56" y="345.39" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Cluster node 1<v:newlineChar/><tspan
|
||||
x="25.56" dy="1.2em" class="st3">(slot 0</tspan>–8191)</text> </g>
|
||||
<g id="shape27-22" v:mID="27" v:groupContext="shape" transform="translate(864.836,-112.409)">
|
||||
<title>矩形.2</title>
|
||||
<desc>Cluster node 2 (slot 8192–16383)</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="56.4242" cy="348.388" width="112.85" height="62.2817"/>
|
||||
<rect x="0" y="317.248" width="112.848" height="62.2817" class="st1"/>
|
||||
<text x="21.56" y="345.39" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Cluster node 2<v:newlineChar/><tspan
|
||||
x="13.83" dy="1.2em" class="st3">(slot 8192</tspan>–16383)</text> </g>
|
||||
<g id="shape28-26" v:mID="28" v:groupContext="shape" transform="translate(845.26,-92.126)">
|
||||
<title>矩形.26</title>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<path d="M0 379.53 L152 379.53 L152 181.1 L0 181.1 L0 379.53 Z" class="st4"/>
|
||||
</g>
|
||||
<g id="shape29-28" v:mID="29" v:groupContext="shape" transform="translate(846.028,-256.535)">
|
||||
<title>工作表.29</title>
|
||||
<desc>Destination</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="75.2323" cy="364.423" width="150.47" height="30.2133"/>
|
||||
<rect x="0" y="349.316" width="150.465" height="30.2133" class="st5"/>
|
||||
<text x="46.3" y="368.02" class="st6" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Destination</text> </g>
|
||||
<g id="shape36-31" v:mID="36" v:groupContext="shape" v:layerMember="0" transform="translate(157.85,-261.78)">
|
||||
<title>动态连接线.82</title>
|
||||
<path d="M0 372.58 L45.45 372.34" class="st7"/>
|
||||
</g>
|
||||
<g id="shape56-37" v:mID="56" v:groupContext="shape" v:layerMember="0" transform="translate(808.047,-229.799)">
|
||||
<title>动态连接线.56</title>
|
||||
<path d="M0 386.38 L49.75 386.79" class="st7"/>
|
||||
</g>
|
||||
<g id="shape71-42" v:mID="71" v:groupContext="shape" v:layerMember="0" transform="translate(157.85,-194.173)">
|
||||
<title>动态连接线</title>
|
||||
<path d="M0 386.62 L45.45 386.62" class="st7"/>
|
||||
</g>
|
||||
<g id="shape81-47" v:mID="81" v:groupContext="shape" transform="translate(512.189,-311.288)">
|
||||
<title>工作表.81</title>
|
||||
<desc>Write by slot</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="369.529" width="152" height="20"/>
|
||||
<rect x="0" y="359.529" width="152" height="20" class="st5"/>
|
||||
<text x="43.91" y="373.13" class="st9" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Write by slot</text> </g>
|
||||
<g id="shape118-50" v:mID="118" v:groupContext="shape" transform="translate(192.181,-323.15)">
|
||||
<title>工作表.118</title>
|
||||
<desc>Cluster Reader</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="369.529" width="152" height="20"/>
|
||||
<rect x="0" y="359.529" width="152" height="20" class="st5"/>
|
||||
<text x="39.41" y="373.13" class="st10" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Cluster Reader</text> </g>
|
||||
<g id="shape119-53" v:mID="119" v:groupContext="shape" transform="translate(366.205,-323.15)">
|
||||
<title>工作表.119</title>
|
||||
<desc>Main</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="369.529" width="152" height="20"/>
|
||||
<rect x="0" y="359.529" width="152" height="20" class="st5"/>
|
||||
<text x="63.1" y="373.13" class="st10" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Main</text> </g>
|
||||
<g id="shape120-56" v:mID="120" v:groupContext="shape" transform="translate(672,-286.458)">
|
||||
<title>工作表.120</title>
|
||||
<desc>Cluster Writer</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="369.529" width="152" height="20"/>
|
||||
<rect x="0" y="359.529" width="152" height="20" class="st5"/>
|
||||
<text x="40.87" y="373.13" class="st10" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Cluster Writer</text> </g>
|
||||
<g id="shape149-59" v:mID="149" v:groupContext="shape" transform="translate(192.181,-297.185)">
|
||||
<title>工作表.149</title>
|
||||
<desc>Goroutinue</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="369.529" width="152" height="20"/>
|
||||
<rect x="0" y="359.529" width="152" height="20" class="st5"/>
|
||||
<text x="47.97" y="373.13" class="st11" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Goroutinue</text> </g>
|
||||
<g id="shape180-62" v:mID="180" v:groupContext="shape" v:layerMember="0" transform="translate(157.323,-118.959)">
|
||||
<title>动态连接线.180</title>
|
||||
<path d="M0 386.52 L45.98 386.69" class="st7"/>
|
||||
</g>
|
||||
<g id="shape189-67" v:mID="189" v:groupContext="shape" transform="translate(192.181,-107.004)">
|
||||
<title>工作表.189</title>
|
||||
<desc>Goroutinue</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="369.529" width="152" height="20"/>
|
||||
<rect x="0" y="359.529" width="152" height="20" class="st5"/>
|
||||
<text x="47.97" y="373.13" class="st11" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Goroutinue</text> </g>
|
||||
<g id="group198-70" transform="translate(623.622,-206.092)" v:mID="198" v:groupContext="group">
|
||||
<title>工作表.198</title>
|
||||
<g id="shape38-71" v:mID="38" v:groupContext="shape" transform="translate(6.39488E-14,-17.6604)">
|
||||
<title>矩形.38</title>
|
||||
<desc>Writer Channel 1</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="35.5314" cy="359.722" width="71.07" height="39.6146"/>
|
||||
<rect x="0" y="339.915" width="71.0628" height="39.6146" class="st12"/>
|
||||
<text x="22.09" y="357.02" class="st13" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Writer<v:newlineChar/><tspan
|
||||
x="14" dy="1.2em" class="st3">Channel 1</tspan></text> </g>
|
||||
<g id="shape195-75" v:mID="195" v:groupContext="shape" transform="translate(68.7401,0)">
|
||||
<title>矩形.148</title>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<rect x="0" y="307.271" width="115.685" height="72.2579" class="st14"/>
|
||||
</g>
|
||||
<g id="shape196-77" v:mID="196" v:groupContext="shape" transform="translate(50.5827,-50.0157)">
|
||||
<title>工作表.196</title>
|
||||
<desc>Goroutinue</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="369.529" width="152" height="20"/>
|
||||
<rect x="0" y="359.529" width="152" height="20" class="st5"/>
|
||||
<text x="47.97" y="373.13" class="st11" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Goroutinue</text> </g>
|
||||
<g id="shape197-80" v:mID="197" v:groupContext="shape" transform="translate(83.8345,-12.2933)">
|
||||
<title>矩形.150</title>
|
||||
<desc>Standalone Writer 1</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="42.7482" cy="361.492" width="85.5" height="36.0748"/>
|
||||
<rect x="0" y="343.455" width="85.4964" height="36.0748" class="st15"/>
|
||||
<text x="17.45" y="358.49" class="st16" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Standalone<v:newlineChar/><tspan
|
||||
x="25.25" dy="1.2em" class="st3">Writer 1</tspan></text> </g>
|
||||
</g>
|
||||
<g id="group199-84" transform="translate(623.622,-103.348)" v:mID="199" v:groupContext="group">
|
||||
<title>工作表.199</title>
|
||||
<g id="shape200-85" v:mID="200" v:groupContext="shape" transform="translate(6.39488E-14,-17.6604)">
|
||||
<title>矩形.38</title>
|
||||
<desc>Writer Channel 2</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="35.5314" cy="359.722" width="71.07" height="39.6146"/>
|
||||
<rect x="0" y="339.915" width="71.0628" height="39.6146" class="st12"/>
|
||||
<text x="22.09" y="357.02" class="st13" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Writer<v:newlineChar/><tspan
|
||||
x="14" dy="1.2em" class="st3">Channel 2</tspan></text> </g>
|
||||
<g id="shape201-89" v:mID="201" v:groupContext="shape" transform="translate(68.7401,0)">
|
||||
<title>矩形.148</title>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<rect x="0" y="307.271" width="115.685" height="72.2579" class="st14"/>
|
||||
</g>
|
||||
<g id="shape202-91" v:mID="202" v:groupContext="shape" transform="translate(50.5827,-50.0157)">
|
||||
<title>工作表.202</title>
|
||||
<desc>Goroutinue</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="369.529" width="152" height="20"/>
|
||||
<rect x="0" y="359.529" width="152" height="20" class="st5"/>
|
||||
<text x="47.97" y="373.13" class="st11" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Goroutinue</text> </g>
|
||||
<g id="shape203-94" v:mID="203" v:groupContext="shape" transform="translate(83.8345,-12.2933)">
|
||||
<title>矩形.150</title>
|
||||
<desc>Standalone Writer 2</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="42.7482" cy="361.492" width="85.5" height="36.0748"/>
|
||||
<rect x="0" y="343.455" width="85.4964" height="36.0748" class="st15"/>
|
||||
<text x="17.45" y="358.49" class="st16" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Standalone<v:newlineChar/><tspan
|
||||
x="25.25" dy="1.2em" class="st3">Writer 2</tspan></text> </g>
|
||||
</g>
|
||||
<g id="group208-98" transform="translate(192.181,-150.958)" v:mID="208" v:groupContext="group">
|
||||
<title>工作表.208</title>
|
||||
<g id="shape173-99" v:mID="173" v:groupContext="shape" transform="translate(128.295,-16.2712)">
|
||||
<title>矩形.173</title>
|
||||
<desc>Reader Channel 2</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="35.5314" cy="359.035" width="71.07" height="40.9886"/>
|
||||
<rect x="0" y="338.541" width="71.0628" height="40.9886" class="st17"/>
|
||||
<text x="18.72" y="356.04" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Reader<v:newlineChar/><tspan
|
||||
x="11.6" dy="1.2em" class="st3">Channel 2</tspan></text> </g>
|
||||
<g id="shape174-103" v:mID="174" v:groupContext="shape" transform="translate(193.677,-1.89054E-05)">
|
||||
<title>矩形.174</title>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<rect x="0" y="307.271" width="115.685" height="72.2579" class="st14"/>
|
||||
</g>
|
||||
<g id="shape175-105" v:mID="175" v:groupContext="shape" transform="translate(175.52,-49.3401)">
|
||||
<title>工作表.175</title>
|
||||
<desc>Goroutinue</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="369.529" width="152" height="20"/>
|
||||
<rect x="0" y="359.529" width="152" height="20" class="st5"/>
|
||||
<text x="47.97" y="373.13" class="st11" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Goroutinue</text> </g>
|
||||
<g id="shape176-108" v:mID="176" v:groupContext="shape" transform="translate(211.338,-11.6772)">
|
||||
<title>矩形.176</title>
|
||||
<desc>Parse, Filter, Function</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="40.1813" cy="361.492" width="80.37" height="36.0748"/>
|
||||
<rect x="0" y="343.455" width="80.3625" height="36.0748" class="st18"/>
|
||||
<text x="11.49" y="358.49" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Parse, Filter, <tspan
|
||||
x="19.4" dy="1.2em" class="st3">Function</tspan></text> </g>
|
||||
<g id="shape177-112" v:mID="177" v:groupContext="shape" transform="translate(18.1575,0)">
|
||||
<title>矩形.177</title>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<rect x="0" y="307.271" width="115.685" height="72.2579" class="st14"/>
|
||||
</g>
|
||||
<g id="shape178-114" v:mID="178" v:groupContext="shape" transform="translate(7.99361E-14,-50.0157)">
|
||||
<title>工作表.178</title>
|
||||
<desc>Goroutinue</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="369.529" width="152" height="20"/>
|
||||
<rect x="0" y="359.529" width="152" height="20" class="st5"/>
|
||||
<text x="47.97" y="373.13" class="st11" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Goroutinue</text> </g>
|
||||
<g id="shape179-117" v:mID="179" v:groupContext="shape" transform="translate(33.2518,-12.2933)">
|
||||
<title>矩形.179</title>
|
||||
<desc>Standalone Reader 2</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="42.7482" cy="361.492" width="85.5" height="36.0748"/>
|
||||
<rect x="0" y="343.455" width="85.4964" height="36.0748" class="st15"/>
|
||||
<text x="17.45" y="358.49" class="st16" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Standalone<v:newlineChar/><tspan
|
||||
x="22.18" dy="1.2em" class="st3">Reader 2</tspan></text> </g>
|
||||
<g id="shape205-121" v:mID="205" v:groupContext="shape" transform="translate(309.551,-18.1299)">
|
||||
<title>矩形.205</title>
|
||||
<desc>Write</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="22.3898" cy="364.718" width="44.78" height="29.622"/>
|
||||
<rect x="0" y="349.907" width="44.7796" height="29.622" class="st12"/>
|
||||
<text x="9.36" y="367.72" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Write</text> </g>
|
||||
</g>
|
||||
<g id="shape210-124" v:mID="210" v:groupContext="shape" v:layerMember="0" transform="translate(546.512,-280.11)">
|
||||
<title>动态连接线.210</title>
|
||||
<path d="M0 379.53 L70.75 413.06" class="st19"/>
|
||||
</g>
|
||||
<g id="shape211-130" v:mID="211" v:groupContext="shape" v:layerMember="0" transform="translate(546.512,-183.899)">
|
||||
<title>动态连接线.211</title>
|
||||
<path d="M0 379.53 L35.42 352.12 A2.3622 2.3622 0 1 1 39.16 349.23 L71.54 324.18" class="st19"/>
|
||||
</g>
|
||||
<g id="shape212-135" v:mID="212" v:groupContext="shape" v:layerMember="0" transform="translate(546.512,-88.2421)">
|
||||
<title>动态连接线.212</title>
|
||||
<path d="M0 379.53 L73.98 230.52" class="st19"/>
|
||||
</g>
|
||||
<g id="shape213-140" v:mID="213" v:groupContext="shape" v:layerMember="0" transform="translate(546.512,-280.11)">
|
||||
<title>动态连接线.213</title>
|
||||
<path d="M0 379.53 L49.07 468.18 A2.3622 2.3622 0 0 1 51.36 472.31 L73.7 512.66" class="st19"/>
|
||||
</g>
|
||||
<g id="shape214-145" v:mID="214" v:groupContext="shape" v:layerMember="0" transform="translate(546.512,-183.899)">
|
||||
<title>动态连接线.214</title>
|
||||
<path d="M0 379.53 L35.12 399.15 A2.3622 2.3622 0 0 1 39.24 401.45 L70.96 419.18" class="st19"/>
|
||||
</g>
|
||||
<g id="shape215-150" v:mID="215" v:groupContext="shape" v:layerMember="0" transform="translate(546.512,-88.2421)">
|
||||
<title>动态连接线.215</title>
|
||||
<path d="M0 379.53 L71.29 330.92" class="st19"/>
|
||||
</g>
|
||||
<g id="shape216-155" v:mID="216" v:groupContext="shape" transform="translate(192.181,-104.641)">
|
||||
<title>工作表.216</title>
|
||||
<desc>Goroutinue</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="369.529" width="152" height="20"/>
|
||||
<rect x="0" y="359.529" width="152" height="20" class="st5"/>
|
||||
<text x="47.97" y="373.13" class="st11" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Goroutinue</text> </g>
|
||||
<g id="group218-158" transform="translate(192.181,-55.3012)" v:mID="218" v:groupContext="group">
|
||||
<title>工作表.218</title>
|
||||
<g id="shape188-159" v:mID="188" v:groupContext="shape" transform="translate(18.1575,0)">
|
||||
<title>矩形.188</title>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<rect x="0" y="307.271" width="115.685" height="72.2579" class="st14"/>
|
||||
</g>
|
||||
<g id="shape185-161" v:mID="185" v:groupContext="shape" transform="translate(193.677,-1.89054E-05)">
|
||||
<title>矩形.185</title>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<rect x="0" y="307.271" width="115.685" height="72.2579" class="st14"/>
|
||||
</g>
|
||||
<g id="shape186-163" v:mID="186" v:groupContext="shape" transform="translate(175.52,-49.3401)">
|
||||
<title>工作表.186</title>
|
||||
<desc>Goroutinue</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="369.529" width="152" height="20"/>
|
||||
<rect x="0" y="359.529" width="152" height="20" class="st5"/>
|
||||
<text x="47.97" y="373.13" class="st11" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Goroutinue</text> </g>
|
||||
<g id="shape187-166" v:mID="187" v:groupContext="shape" transform="translate(211.338,-11.6772)">
|
||||
<title>矩形.187</title>
|
||||
<desc>Parse, Filter, Function</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="40.1813" cy="361.492" width="80.37" height="36.0748"/>
|
||||
<rect x="0" y="343.455" width="80.3625" height="36.0748" class="st18"/>
|
||||
<text x="11.49" y="358.49" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Parse, Filter, <tspan
|
||||
x="19.4" dy="1.2em" class="st3">Function</tspan></text> </g>
|
||||
<g id="shape190-170" v:mID="190" v:groupContext="shape" transform="translate(33.2518,-12.2933)">
|
||||
<title>矩形.190</title>
|
||||
<desc>Standalone Reader 3</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="42.7482" cy="361.492" width="85.5" height="36.0748"/>
|
||||
<rect x="0" y="343.455" width="85.4964" height="36.0748" class="st15"/>
|
||||
<text x="17.45" y="358.49" class="st16" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Standalone<v:newlineChar/><tspan
|
||||
x="22.18" dy="1.2em" class="st3">Reader 3</tspan></text> </g>
|
||||
<g id="shape206-174" v:mID="206" v:groupContext="shape" transform="translate(309.551,-18.1299)">
|
||||
<title>矩形.206</title>
|
||||
<desc>Write</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="22.3898" cy="364.718" width="44.78" height="29.622"/>
|
||||
<rect x="0" y="349.907" width="44.7796" height="29.622" class="st12"/>
|
||||
<text x="9.36" y="367.72" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Write</text> </g>
|
||||
<g id="shape184-177" v:mID="184" v:groupContext="shape" transform="translate(128.295,-16.2712)">
|
||||
<title>矩形.184</title>
|
||||
<desc>Reader Channel 2</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="35.5314" cy="359.035" width="71.07" height="40.9886"/>
|
||||
<rect x="0" y="338.541" width="71.0628" height="40.9886" class="st17"/>
|
||||
<text x="18.72" y="356.04" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Reader<v:newlineChar/><tspan
|
||||
x="11.6" dy="1.2em" class="st3">Channel 2</tspan></text> </g>
|
||||
<g id="shape217-181" v:mID="217" v:groupContext="shape" transform="translate(0,-49.4232)">
|
||||
<title>工作表.217</title>
|
||||
<desc>Goroutinue</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="369.529" width="152" height="20"/>
|
||||
<rect x="0" y="359.529" width="152" height="20" class="st5"/>
|
||||
<text x="47.97" y="373.13" class="st11" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Goroutinue</text> </g>
|
||||
</g>
|
||||
<g id="group220-184" transform="translate(192.181,-247.169)" v:mID="220" v:groupContext="group">
|
||||
<title>工作表.220</title>
|
||||
<g id="shape85-185" v:mID="85" v:groupContext="shape" transform="translate(309.551,-18.1299)">
|
||||
<title>矩形.85</title>
|
||||
<desc>Write</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="22.3898" cy="364.718" width="44.78" height="29.622"/>
|
||||
<rect x="0" y="349.907" width="44.7796" height="29.622" class="st12"/>
|
||||
<text x="9.36" y="367.72" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Write</text> </g>
|
||||
<g id="shape4-188" v:mID="4" v:groupContext="shape" transform="translate(128.295,-16.2712)">
|
||||
<title>矩形.7</title>
|
||||
<desc>Reader Channel 1</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="35.5314" cy="359.035" width="71.07" height="40.9886"/>
|
||||
<rect x="0" y="338.541" width="71.0628" height="40.9886" class="st17"/>
|
||||
<text x="18.72" y="356.04" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Reader<v:newlineChar/><tspan
|
||||
x="11.6" dy="1.2em" class="st3">Channel 1</tspan></text> </g>
|
||||
<g id="shape82-192" v:mID="82" v:groupContext="shape" transform="translate(193.677,-1.89054E-05)">
|
||||
<title>矩形.82</title>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<rect x="0" y="307.271" width="115.685" height="72.2579" class="st14"/>
|
||||
</g>
|
||||
<g id="shape84-194" v:mID="84" v:groupContext="shape" transform="translate(175.52,-49.3401)">
|
||||
<title>工作表.84</title>
|
||||
<desc>Goroutinue</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="369.529" width="152" height="20"/>
|
||||
<rect x="0" y="359.529" width="152" height="20" class="st5"/>
|
||||
<text x="47.97" y="373.13" class="st11" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Goroutinue</text> </g>
|
||||
<g id="shape57-197" v:mID="57" v:groupContext="shape" transform="translate(211.338,-11.6772)">
|
||||
<title>矩形.57</title>
|
||||
<desc>Parse, Filter, Function</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="40.1813" cy="361.492" width="80.37" height="36.0748"/>
|
||||
<rect x="0" y="343.455" width="80.3625" height="36.0748" class="st18"/>
|
||||
<text x="11.49" y="358.49" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Parse, Filter, <tspan
|
||||
x="19.4" dy="1.2em" class="st3">Function</tspan></text> </g>
|
||||
<g id="shape148-201" v:mID="148" v:groupContext="shape" transform="translate(18.1575,0)">
|
||||
<title>矩形.148</title>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<rect x="0" y="307.271" width="115.685" height="72.2579" class="st14"/>
|
||||
</g>
|
||||
<g id="shape150-203" v:mID="150" v:groupContext="shape" transform="translate(33.2518,-12.2933)">
|
||||
<title>矩形.150</title>
|
||||
<desc>Standalone Reader 1</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="42.7482" cy="361.492" width="85.5" height="36.0748"/>
|
||||
<rect x="0" y="343.455" width="85.4964" height="36.0748" class="st15"/>
|
||||
<text x="17.45" y="358.49" class="st16" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Standalone<v:newlineChar/><tspan
|
||||
x="22.18" dy="1.2em" class="st3">Reader 1</tspan></text> </g>
|
||||
<g id="shape219-207" v:mID="219" v:groupContext="shape" transform="translate(0,-48.9726)">
|
||||
<title>工作表.219</title>
|
||||
<desc>Goroutinue</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="369.529" width="152" height="20"/>
|
||||
<rect x="0" y="359.529" width="152" height="20" class="st5"/>
|
||||
<text x="47.97" y="373.13" class="st11" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Goroutinue</text> </g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 34 KiB |
|
@ -0,0 +1,279 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- 由 Microsoft Visio, SVG Export 生成 architecture-s2s.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="12.7989in" height="1.93468in"
|
||||
viewBox="0 0 921.518 139.297" xml:space="preserve" color-interpolation-filters="sRGB" class="st21">
|
||||
<v:documentProperties v:langID="2052" v:metric="true" v:viewMarkup="false">
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="msvSubprocessMaster" v:prompt="" v:val="VT4(Rectangle)"/>
|
||||
<v:ud v:nameU="msvNoAutoConnect" v:val="VT0(1):26"/>
|
||||
</v:userDefs>
|
||||
</v:documentProperties>
|
||||
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
.st1 {fill:#a8d08d;stroke:#a8d08d;stroke-width:0.25}
|
||||
.st2 {fill:#feffff;font-family:微软雅黑;font-size:0.833336em}
|
||||
.st3 {fill:#ffc000;stroke:#ffd965;stroke-width:0.25}
|
||||
.st4 {font-size:1em}
|
||||
.st5 {fill:#90aadb;stroke:#90aadb;stroke-width:0.25}
|
||||
.st6 {fill:#feffff;font-family:微软雅黑;font-size:0.75em}
|
||||
.st7 {fill:#fbe5d5;stroke:#f4b183;stroke-width:0.25}
|
||||
.st8 {fill:#ed7d31;stroke:#ed7d31;stroke-width:0.25}
|
||||
.st9 {fill:#feffff;font-family:Arial;font-size:0.833336em}
|
||||
.st10 {fill:none;stroke:none;stroke-width:0.25}
|
||||
.st11 {fill:#ed7d31;font-family:Calibri;font-size:1.00001em}
|
||||
.st12 {fill:#c55a11;stroke:#ed7d31;stroke-width:0.25}
|
||||
.st13 {marker-end:url(#mrkr4-53);stroke:#4672c4;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
|
||||
.st14 {fill:#4672c4;fill-opacity:1;stroke:#4672c4;stroke-opacity:1;stroke-width:0.28409090909091}
|
||||
.st15 {marker-end:url(#mrkr4-59);stroke:#c5e0b3;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
|
||||
.st16 {fill:#c5e0b3;fill-opacity:1;stroke:#c5e0b3;stroke-opacity:1;stroke-width:0.28409090909091}
|
||||
.st17 {fill:#ed7d31;font-family:Calibri;font-size:1.00001em;font-weight:bold}
|
||||
.st18 {fill:#a8d08d;font-family:Calibri;font-size:1.00001em;font-weight:bold}
|
||||
.st19 {fill:none;stroke:#90aadb;stroke-dasharray:15,9;stroke-width:1}
|
||||
.st20 {fill:#4672c4;font-family:Calibri;font-size:1.00001em;font-weight:bold}
|
||||
.st21 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<defs id="Markers">
|
||||
<g id="lend4">
|
||||
<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"/>
|
||||
</g>
|
||||
<marker id="mrkr4-53" class="st14" v:arrowType="4" v:arrowSize="2" v:setback="7.04" refX="-7.04" orient="auto"
|
||||
markerUnits="strokeWidth" overflow="visible">
|
||||
<use xlink:href="#lend4" transform="scale(-3.52,-3.52) "/>
|
||||
</marker>
|
||||
<marker id="mrkr4-59" class="st16" v:arrowType="4" v:arrowSize="2" v:setback="7.04" refX="-7.04" orient="auto"
|
||||
markerUnits="strokeWidth" overflow="visible">
|
||||
<use xlink:href="#lend4" transform="scale(-3.52,-3.52) "/>
|
||||
</marker>
|
||||
</defs>
|
||||
<g v:mID="0" v:index="1" v:groupContext="foregroundPage">
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="msvThemeOrder" v:val="VT0(0):26"/>
|
||||
</v:userDefs>
|
||||
<title>页-1</title>
|
||||
<v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394"
|
||||
v:shadowOffsetY="-8.50394"/>
|
||||
<v:layer v:name="连接线" v:index="0"/>
|
||||
<g id="shape222-1" v:mID="222" v:groupContext="shape" transform="translate(470.895,-46.3553)">
|
||||
<title>矩形.85</title>
|
||||
<desc>Write</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="22.3898" cy="124.486" width="44.78" height="29.622"/>
|
||||
<rect x="0" y="109.675" width="44.7796" height="29.622" class="st1"/>
|
||||
<text x="9.36" y="127.49" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Write</text> </g>
|
||||
<g id="shape223-4" v:mID="223" v:groupContext="shape" transform="translate(289.639,-40.672)">
|
||||
<title>矩形.7</title>
|
||||
<desc>Reader Channel</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="35.5314" cy="118.803" width="71.07" height="40.9886"/>
|
||||
<rect x="0" y="98.3086" width="71.0628" height="40.9886" class="st3"/>
|
||||
<text x="18.72" y="115.8" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Reader<v:newlineChar/><tspan
|
||||
x="16.01" dy="1.2em" class="st4">Channel</tspan></text> </g>
|
||||
<g id="shape235-8" v:mID="235" v:groupContext="shape" transform="translate(31.3159,-36.8583)">
|
||||
<title>矩形.235</title>
|
||||
<desc>Redis Standalone</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="56.4242" cy="114.919" width="112.85" height="48.7559"/>
|
||||
<rect x="0" y="90.5413" width="112.848" height="48.7559" class="st5"/>
|
||||
<text x="15.02" y="117.92" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Redis Standalone</text> </g>
|
||||
<g id="shape237-11" v:mID="237" v:groupContext="shape" transform="translate(776.645,-36.7884)">
|
||||
<title>矩形.237</title>
|
||||
<desc>Redis Standalone</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="56.4242" cy="114.919" width="112.85" height="48.7559"/>
|
||||
<rect x="0" y="90.5413" width="112.848" height="48.7559" class="st5"/>
|
||||
<text x="15.02" y="117.92" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Redis Standalone</text> </g>
|
||||
<g id="shape231-14" v:mID="231" v:groupContext="shape" transform="translate(555.188,-41.359)">
|
||||
<title>矩形.38</title>
|
||||
<desc>Writer Channel</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="35.5314" cy="119.49" width="71.07" height="39.6146"/>
|
||||
<rect x="0" y="99.6826" width="71.0628" height="39.6146" class="st1"/>
|
||||
<text x="22.09" y="116.79" class="st6" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Writer<v:newlineChar/><tspan
|
||||
x="17.97" dy="1.2em" class="st4">Channel</tspan></text> </g>
|
||||
<g id="group250-18" transform="translate(161.344,-25.0374)" v:mID="250" v:groupContext="group">
|
||||
<title>工作表.250</title>
|
||||
<g id="shape227-19" v:mID="227" v:groupContext="shape" transform="translate(18.1575,2.84217E-14)">
|
||||
<title>矩形.148</title>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<rect x="0" y="67.0394" width="115.685" height="72.2579" class="st7"/>
|
||||
</g>
|
||||
<g id="shape228-21" v:mID="228" v:groupContext="shape" transform="translate(33.2518,-12.2933)">
|
||||
<title>矩形.150</title>
|
||||
<desc>Standalone Reader</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="42.7482" cy="121.26" width="85.5" height="36.0748"/>
|
||||
<rect x="0" y="103.222" width="85.4964" height="36.0748" class="st8"/>
|
||||
<text x="17.45" y="118.26" class="st9" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Standalone<v:newlineChar/><tspan
|
||||
x="26.35" dy="1.2em" class="st4">Reader</tspan></text> </g>
|
||||
<g id="shape229-25" v:mID="229" v:groupContext="shape" transform="translate(0,-48.9726)">
|
||||
<title>工作表.229</title>
|
||||
<desc>Goroutinue</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="129.297" width="152" height="20"/>
|
||||
<rect x="0" y="119.297" width="152" height="20" class="st10"/>
|
||||
<text x="47.97" y="132.9" class="st11" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Goroutinue</text> </g>
|
||||
</g>
|
||||
<g id="group251-28" transform="translate(336.863,-25.0374)" v:mID="251" v:groupContext="group">
|
||||
<title>工作表.251</title>
|
||||
<g id="shape224-29" v:mID="224" v:groupContext="shape" transform="translate(18.1575,0)">
|
||||
<title>矩形.82</title>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<rect x="0" y="67.0394" width="115.685" height="72.2579" class="st7"/>
|
||||
</g>
|
||||
<g id="shape225-31" v:mID="225" v:groupContext="shape" transform="translate(7.99361E-14,-49.34)">
|
||||
<title>工作表.225</title>
|
||||
<desc>Goroutinue</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="129.297" width="152" height="20"/>
|
||||
<rect x="0" y="119.297" width="152" height="20" class="st10"/>
|
||||
<text x="47.97" y="132.9" class="st11" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Goroutinue</text> </g>
|
||||
<g id="shape226-34" v:mID="226" v:groupContext="shape" transform="translate(35.8187,-11.6772)">
|
||||
<title>矩形.57</title>
|
||||
<desc>Parse, Filter, Function</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="40.1813" cy="121.26" width="80.37" height="36.0748"/>
|
||||
<rect x="0" y="103.222" width="80.3625" height="36.0748" class="st12"/>
|
||||
<text x="11.49" y="118.26" class="st2" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Parse, Filter, <tspan
|
||||
x="19.4" dy="1.2em" class="st4">Function</tspan></text> </g>
|
||||
</g>
|
||||
<g id="group252-38" transform="translate(607.283,-25.0374)" v:mID="252" v:groupContext="group">
|
||||
<title>工作表.252</title>
|
||||
<g id="shape232-39" v:mID="232" v:groupContext="shape" transform="translate(18.1575,0)">
|
||||
<title>矩形.148</title>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<rect x="0" y="67.0394" width="115.685" height="72.2579" class="st7"/>
|
||||
</g>
|
||||
<g id="shape233-41" v:mID="233" v:groupContext="shape" transform="translate(-6.39488E-14,-50.0157)">
|
||||
<title>工作表.233</title>
|
||||
<desc>Goroutinue</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="129.297" width="152" height="20"/>
|
||||
<rect x="0" y="119.297" width="152" height="20" class="st10"/>
|
||||
<text x="47.97" y="132.9" class="st11" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Goroutinue</text> </g>
|
||||
<g id="shape234-44" v:mID="234" v:groupContext="shape" transform="translate(33.2518,-12.2933)">
|
||||
<title>矩形.150</title>
|
||||
<desc>Standalone Writer</desc>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="42.7482" cy="121.26" width="85.5" height="36.0748"/>
|
||||
<rect x="0" y="103.222" width="85.4964" height="36.0748" class="st8"/>
|
||||
<text x="17.45" y="118.26" class="st9" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Standalone<v:newlineChar/><tspan
|
||||
x="29.42" dy="1.2em" class="st4">Writer</tspan></text> </g>
|
||||
</g>
|
||||
<g id="shape253-48" v:mID="253" v:groupContext="shape" v:layerMember="0" transform="translate(144.164,-68.2879)">
|
||||
<title>动态连接线</title>
|
||||
<path d="M0 146.35 L12.67 146.35 L12.67 146.42 L28.3 146.42" class="st13"/>
|
||||
</g>
|
||||
<g id="shape254-54" v:mID="254" v:groupContext="shape" v:layerMember="0" transform="translate(515.674,-54.0797)">
|
||||
<title>动态连接线.254</title>
|
||||
<path d="M0 132.21 L32.47 132.21" class="st15"/>
|
||||
</g>
|
||||
<g id="shape255-60" v:mID="255" v:groupContext="shape" v:layerMember="0" transform="translate(741.125,-54.0797)">
|
||||
<title>动态连接线.255</title>
|
||||
<path d="M0 132.21 L28.48 132.21" class="st13"/>
|
||||
</g>
|
||||
<g id="shape256-65" v:mID="256" v:groupContext="shape" transform="translate(161.344,-101.047)">
|
||||
<title>工作表.256</title>
|
||||
<desc>Standalone Reader</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="129.297" width="152" height="20"/>
|
||||
<rect x="0" y="119.297" width="152" height="20" class="st10"/>
|
||||
<text x="28.69" y="132.9" class="st17" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Standalone Reader</text> </g>
|
||||
<g id="shape257-68" v:mID="257" v:groupContext="shape" transform="translate(336.863,-101.047)">
|
||||
<title>工作表.257</title>
|
||||
<desc>Main</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="129.297" width="152" height="20"/>
|
||||
<rect x="0" y="119.297" width="152" height="20" class="st10"/>
|
||||
<text x="63.1" y="132.9" class="st17" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Main</text> </g>
|
||||
<g id="shape258-71" v:mID="258" v:groupContext="shape" transform="translate(607.283,-101.047)">
|
||||
<title>工作表.258</title>
|
||||
<desc>Standalone Writer</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="129.297" width="152" height="20"/>
|
||||
<rect x="0" y="119.297" width="152" height="20" class="st10"/>
|
||||
<text x="30.15" y="132.9" class="st17" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Standalone Writer</text> </g>
|
||||
<g id="shape259-74" v:mID="259" v:groupContext="shape" transform="translate(459.881,-101.047)">
|
||||
<title>工作表.259</title>
|
||||
<desc>Write directly</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="76" cy="129.297" width="152" height="20"/>
|
||||
<rect x="0" y="119.297" width="152" height="20" class="st10"/>
|
||||
<text x="41.75" y="132.9" class="st18" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Write directly</text> </g>
|
||||
<g id="shape264-77" v:mID="264" v:groupContext="shape" transform="translate(19,-19)">
|
||||
<title>矩形.26</title>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<path d="M0 139.3 L138.9 139.3 L138.9 45.19 L0 45.19 L0 139.3 Z" class="st19"/>
|
||||
</g>
|
||||
<g id="shape265-79" v:mID="265" v:groupContext="shape" transform="translate(19,-88.3701)">
|
||||
<title>工作表.265</title>
|
||||
<desc>Source</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="69.4488" cy="129.297" width="138.9" height="20"/>
|
||||
<rect x="0" y="119.297" width="138.898" height="20" class="st10"/>
|
||||
<text x="52.5" y="132.9" class="st20" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Source</text> </g>
|
||||
<g id="shape266-82" v:mID="266" v:groupContext="shape" transform="translate(763.62,-19)">
|
||||
<title>矩形.266</title>
|
||||
<v:userDefs>
|
||||
<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
|
||||
<v:ud v:nameU="visMasterStencil" v:prompt="" v:val="VT4(Basic_M.vssx)"/>
|
||||
</v:userDefs>
|
||||
<path d="M0 139.3 L138.9 139.3 L138.9 45.19 L0 45.19 L0 139.3 Z" class="st19"/>
|
||||
</g>
|
||||
<g id="shape270-84" v:mID="270" v:groupContext="shape" transform="translate(763.62,-88.3701)">
|
||||
<title>工作表.270</title>
|
||||
<desc>Destination</desc>
|
||||
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
|
||||
<v:textRect cx="69.4488" cy="129.297" width="138.9" height="20"/>
|
||||
<rect x="0" y="119.297" width="138.898" height="20" class="st10"/>
|
||||
<text x="40.52" y="132.9" class="st20" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Destination</text> </g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 16 KiB |
|
@ -0,0 +1,88 @@
|
|||
# 架构与性能说明
|
||||
|
||||
## 架构图
|
||||
|
||||
当源端和目的端都为集群(Cluster)时,同步架构图如下。
|
||||
|
||||

|
||||
|
||||
当源端和目的端为单实例节点(Standalone)时,同步架构图如下。
|
||||
|
||||

|
||||
|
||||
## 架构说明
|
||||
|
||||
从架构图可以看到,数据从源端(Source)同步到目的端(Destination),主要经过 Cluster Reader、Main、Cluster Writer 三部分处理。
|
||||
|
||||
### Cluster Reader
|
||||
|
||||
Cluster Reader 即集群读入类,其根据源端分片数量创建同等数量的 Standalone Reader,每个 Standalone Reader 开启一个协程(Goroutinue)并行的从每个源端分片进行读入,并将数据存入相应的管道(Reader Channel)交付给下一环节处理。
|
||||
|
||||
### Main
|
||||
|
||||
Main 即主函数,其根据 Reader Channel 数量开启多个协程,并行的对管道中数据分别执行 Parse、Filter、Function 操作,再调用 Cluster Writer 的 Write 方法,将数据分发给写入端。
|
||||
|
||||
- Parse:数据包解析
|
||||
|
||||
- Filter:filter 功能,过滤操作
|
||||
|
||||
- Function:funtion 功能,执行 lua 函数
|
||||
|
||||
### Cluster Writer
|
||||
|
||||
Cluster Writer 即集群写入类,根据目的端分片数量创建同等数量的 Standalone Writer,Cluster Writer 的 Write 方法可以将数据分发到对应 slot 的 Standalone Writer 的管道中(Writer Channel),Standalone Writer 再将数据写入到目的端。
|
||||
|
||||
## 性能和资源占用
|
||||
|
||||
### 测试环境
|
||||
|
||||
- 服务器:ecs.i4g.8xlarge 32核,磁盘读入速度 2.4 GB/s,写入速度 1.5 GB/s
|
||||
|
||||
- 源端和目的端 Redis 集群:1 GB 12 分片
|
||||
|
||||
### 测试工具
|
||||
|
||||
- redis-benchmark:redis 的压力测试工具,为源端创造持续的写入流量
|
||||
|
||||
分别对 redisshake 两种模式 sync 和 scan,数据同步全量同步和增量同步两个阶段设计了测试案例。对于全量同步阶段,需要提前写入数据到源端,再开启 redisshake 同步;对于增量同步阶段,先开启 redisshake 开始同步,再利用 redis-benchmark 持续产生写入流量。
|
||||
|
||||
其中,sync 模式下,全量同步阶段同步一个 rdb 文件,增量同步阶段则是 aof 数据流;在 scan 模式下,全量同步采用 scan 遍历源端数据库,增量同步阶段则是开启 ksn 进行键值同步。
|
||||
|
||||
对于增量同步阶段,redis-benchmark 脚本设置如下,产生的写请求大概为 1500k/s,可以占满 ECS 服务器的前 16 个 cpu 内核。
|
||||
|
||||
```bash
|
||||
taskset -c 0-15 redis-benchmark \
|
||||
--threads 16 -r 10000000 -n 1000000000 -t set \
|
||||
-h host -a 'username:password' \
|
||||
--cluster -c 256 -d 8 -P 2
|
||||
```
|
||||
|
||||
测试结果可见 [RedisShake 云端性能测试结果](https://github.com/OxalisCu/RedisShake/tree/benchmark-backup-cloud/demo)
|
||||
|
||||
### 性能数据
|
||||
|
||||
对于源端集群和目的端集群同步两种方式的同步速率也进行了对比。
|
||||
|
||||
- 12c-12c:一个 redisshake 采用 Cluster 模式同步
|
||||
|
||||
- 12(s-s):每个分片启动一个 redisshake 分别采用 Standalone 模式同步
|
||||
|
||||
测试得到同步速率如下,bench 代表 redis-benchmark 产生的写入流量速率,scan 模式下设置 count = 10。
|
||||
|
||||
| | bench | 12c-12c | 12(s-s) | 12c-12c/12(s-s) |
|
||||
| --------------- | ----- | ------- | --------------- | --------------- |
|
||||
| **sync + aof** | 1599k | 1520k | 12*(130k)=1560k | 0.97 |
|
||||
| **sync + rdb** | | 1498k | 12*(220k)=2640k | 0.57 |
|
||||
| **scan + ksn** | 1084k | 1081k | 12*(95k)=1140k | 0.95 |
|
||||
| **scan + scan** | | 665k | 12*(58k)=696k | 0.95 |
|
||||
|
||||
### 资源消耗
|
||||
|
||||
cpu 占用和 disk 读写速率采用 htop 工具监测,network 收发速率采用 iftop 工具监测,得到结果如下。
|
||||
|
||||
| | cpu | network | disk |
|
||||
| --------------- | ----------------------------------- | ------------------------------------ | ---------- |
|
||||
| **sync + aof** | 16 核占用 70%-90%,总使用率 1276.9% | 发送速率 1340Mb/s,接收速率 998Mb/s | 155.91MB/s |
|
||||
| **sync + rdb** | 32 核占用 50%-60%,总使用率 1605.0% | 发送速率 435Mb/s,接收速率 82.1 Mb/s | 113.53KB/s |
|
||||
| **scan + ksn** | 16 核占用 90%-100%,总使用率 1911.4% | 发送速率 2100Mb/s,接收速率 1330 Mb/s | 172.07KB/s |
|
||||
| **scan + scan** | 32 核占用 40%-60%,总使用率 1297.2% | 发送速率 1130Mb/s,接收速率 533Mb/s | 155.78KB/s |
|
Loading…
Reference in New Issue