Update 分布式.md
调整配图的配色和画法:换成更浅的蓝、青、紫和暖灰,去掉阴影,方框加同色细描边,箭头改为实心。
|
Before Width: | Height: | Size: 109 KiB After Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 163 KiB After Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 167 KiB After Width: | Height: | Size: 171 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 58 KiB |
@@ -1,23 +1,23 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="600" height="448" viewBox="0 0 600 448">
|
||||
<style>
|
||||
text { font-family: "PingFang SC", "Microsoft YaHei", Helvetica, Arial, sans-serif; fill: #666; font-size: 13px; }
|
||||
text { font-family: "PingFang SC", "Microsoft YaHei", Helvetica, Arial, sans-serif; fill: #3F3F3F; font-size: 13px; }
|
||||
.head { font-weight: bold; text-anchor: middle; }
|
||||
.msg { text-anchor: middle; font-size: 12px; }
|
||||
.note { font-size: 12px; fill: #C0605A; }
|
||||
.ok { fill: #6A9F68; }
|
||||
.title { font-weight: bold; font-size: 15px; fill: #777; text-anchor: middle; }
|
||||
.title { font-weight: bold; font-size: 15px; fill: #333; text-anchor: middle; }
|
||||
.life { stroke: #BBB; stroke-width: 1; stroke-dasharray: 4 4; }
|
||||
.arrow { stroke: #666; stroke-width: 1.3; fill: none; marker-end: url(#a); }
|
||||
.arrow { stroke: #555; stroke-width: 1.1; fill: none; marker-end: url(#a); }
|
||||
.reply { stroke-dasharray: 5 4; }
|
||||
.lost { stroke: #C0605A; marker-end: url(#x); }
|
||||
.shadow { fill: #DADADA; }
|
||||
</style>
|
||||
<defs>
|
||||
<marker id="a" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#666" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#555"/>
|
||||
</marker>
|
||||
<marker id="x" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#C0605A" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#C0605A"/>
|
||||
</marker>
|
||||
</defs>
|
||||
<rect width="100%" height="100%" fill="#FFFFFF"/>
|
||||
@@ -26,23 +26,19 @@
|
||||
<line x1="230" y1="76" x2="230" y2="428" class="life"/>
|
||||
<line x1="370" y1="76" x2="370" y2="428" class="life"/>
|
||||
<line x1="510" y1="76" x2="510" y2="428" class="life"/>
|
||||
<rect x="51" y="47" width="82" height="30" rx="6" class="shadow"/>
|
||||
<rect x="49" y="45" width="82" height="30" rx="6" fill="#B0E3E6"/>
|
||||
<rect x="49" y="45" width="82" height="30" rx="6" fill="#C6ECE9" stroke="#7DBCB7"/>
|
||||
<text x="90" y="64.5" class="head">客户端 1</text>
|
||||
<rect x="196" y="47" width="72" height="30" rx="6" class="shadow"/>
|
||||
<rect x="194" y="45" width="72" height="30" rx="6" fill="#B1DDF0"/>
|
||||
<rect x="194" y="45" width="72" height="30" rx="6" fill="#C6E4FB" stroke="#7FB2D6"/>
|
||||
<text x="230" y="64.5" class="head">锁服务</text>
|
||||
<rect x="331" y="47" width="82" height="30" rx="6" class="shadow"/>
|
||||
<rect x="329" y="45" width="82" height="30" rx="6" fill="#B0E3E6"/>
|
||||
<rect x="329" y="45" width="82" height="30" rx="6" fill="#C6ECE9" stroke="#7DBCB7"/>
|
||||
<text x="370" y="64.5" class="head">客户端 2</text>
|
||||
<rect x="476" y="47" width="72" height="30" rx="6" class="shadow"/>
|
||||
<rect x="474" y="45" width="72" height="30" rx="6" fill="#B1DDF0"/>
|
||||
<rect x="474" y="45" width="72" height="30" rx="6" fill="#C6E4FB" stroke="#7FB2D6"/>
|
||||
<text x="510" y="64.5" class="head">存储</text>
|
||||
<line x1="94" y1="100" x2="226" y2="100" class="arrow"/>
|
||||
<text x="160" y="94" class="msg">获取锁</text>
|
||||
<line x1="226" y1="134" x2="94" y2="134" class="arrow reply"/>
|
||||
<text x="160" y="128" class="msg">成功,令牌 33</text>
|
||||
<rect x="85" y="158" width="10" height="150" fill="#DDD7F6" stroke="#9188D8"/>
|
||||
<rect x="85" y="158" width="10" height="150" fill="#E6E3FA" stroke="#9F94D5"/>
|
||||
<text x="102" y="237" class="note"></text>
|
||||
<text x="78" y="172" class="note" text-anchor="end">GC 停顿</text>
|
||||
<text x="240" y="206" class="note" text-anchor="start">锁过期</text>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.1 KiB |
@@ -1,23 +1,23 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="640" height="592" viewBox="0 0 640 592">
|
||||
<style>
|
||||
text { font-family: "PingFang SC", "Microsoft YaHei", Helvetica, Arial, sans-serif; fill: #666; font-size: 13px; }
|
||||
text { font-family: "PingFang SC", "Microsoft YaHei", Helvetica, Arial, sans-serif; fill: #3F3F3F; font-size: 13px; }
|
||||
.head { font-weight: bold; text-anchor: middle; }
|
||||
.msg { text-anchor: middle; font-size: 12px; }
|
||||
.note { font-size: 12px; fill: #C0605A; }
|
||||
.ok { fill: #6A9F68; }
|
||||
.title { font-weight: bold; font-size: 15px; fill: #777; text-anchor: middle; }
|
||||
.title { font-weight: bold; font-size: 15px; fill: #333; text-anchor: middle; }
|
||||
.life { stroke: #BBB; stroke-width: 1; stroke-dasharray: 4 4; }
|
||||
.arrow { stroke: #666; stroke-width: 1.3; fill: none; marker-end: url(#a); }
|
||||
.arrow { stroke: #555; stroke-width: 1.1; fill: none; marker-end: url(#a); }
|
||||
.reply { stroke-dasharray: 5 4; }
|
||||
.lost { stroke: #C0605A; marker-end: url(#x); }
|
||||
.shadow { fill: #DADADA; }
|
||||
</style>
|
||||
<defs>
|
||||
<marker id="a" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#666" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#555"/>
|
||||
</marker>
|
||||
<marker id="x" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#C0605A" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#C0605A"/>
|
||||
</marker>
|
||||
</defs>
|
||||
<rect width="100%" height="100%" fill="#FFFFFF"/>
|
||||
@@ -27,20 +27,15 @@
|
||||
<line x1="320" y1="76" x2="320" y2="572" class="life"/>
|
||||
<line x1="448" y1="76" x2="448" y2="572" class="life"/>
|
||||
<line x1="576" y1="76" x2="576" y2="572" class="life"/>
|
||||
<rect x="14" y="47" width="104" height="30" rx="6" class="shadow"/>
|
||||
<rect x="12" y="45" width="104" height="30" rx="6" fill="#B0E3E6"/>
|
||||
<rect x="12" y="45" width="104" height="30" rx="6" fill="#C6ECE9" stroke="#7DBCB7"/>
|
||||
<text x="64" y="64.5" class="head">Proposer A</text>
|
||||
<rect x="142" y="47" width="104" height="30" rx="6" class="shadow"/>
|
||||
<rect x="140" y="45" width="104" height="30" rx="6" fill="#B1DDF0"/>
|
||||
<rect x="140" y="45" width="104" height="30" rx="6" fill="#C6E4FB" stroke="#7FB2D6"/>
|
||||
<text x="192" y="64.5" class="head">Acceptor X</text>
|
||||
<rect x="270" y="47" width="104" height="30" rx="6" class="shadow"/>
|
||||
<rect x="268" y="45" width="104" height="30" rx="6" fill="#B1DDF0"/>
|
||||
<rect x="268" y="45" width="104" height="30" rx="6" fill="#C6E4FB" stroke="#7FB2D6"/>
|
||||
<text x="320" y="64.5" class="head">Acceptor Y</text>
|
||||
<rect x="398" y="47" width="104" height="30" rx="6" class="shadow"/>
|
||||
<rect x="396" y="45" width="104" height="30" rx="6" fill="#B1DDF0"/>
|
||||
<rect x="396" y="45" width="104" height="30" rx="6" fill="#C6E4FB" stroke="#7FB2D6"/>
|
||||
<text x="448" y="64.5" class="head">Acceptor Z</text>
|
||||
<rect x="526" y="47" width="104" height="30" rx="6" class="shadow"/>
|
||||
<rect x="524" y="45" width="104" height="30" rx="6" fill="#B0E3E6"/>
|
||||
<rect x="524" y="45" width="104" height="30" rx="6" fill="#C6ECE9" stroke="#7DBCB7"/>
|
||||
<text x="576" y="64.5" class="head">Proposer B</text>
|
||||
<line x1="68" y1="100" x2="188" y2="100" class="arrow"/>
|
||||
<text x="128" y="94" class="msg">Prepare(2)</text>
|
||||
|
||||
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.0 KiB |
@@ -1,23 +1,23 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="600" height="408" viewBox="0 0 600 408">
|
||||
<style>
|
||||
text { font-family: "PingFang SC", "Microsoft YaHei", Helvetica, Arial, sans-serif; fill: #666; font-size: 13px; }
|
||||
text { font-family: "PingFang SC", "Microsoft YaHei", Helvetica, Arial, sans-serif; fill: #3F3F3F; font-size: 13px; }
|
||||
.head { font-weight: bold; text-anchor: middle; }
|
||||
.msg { text-anchor: middle; font-size: 12px; }
|
||||
.note { font-size: 12px; fill: #C0605A; }
|
||||
.ok { fill: #6A9F68; }
|
||||
.title { font-weight: bold; font-size: 15px; fill: #777; text-anchor: middle; }
|
||||
.title { font-weight: bold; font-size: 15px; fill: #333; text-anchor: middle; }
|
||||
.life { stroke: #BBB; stroke-width: 1; stroke-dasharray: 4 4; }
|
||||
.arrow { stroke: #666; stroke-width: 1.3; fill: none; marker-end: url(#a); }
|
||||
.arrow { stroke: #555; stroke-width: 1.1; fill: none; marker-end: url(#a); }
|
||||
.reply { stroke-dasharray: 5 4; }
|
||||
.lost { stroke: #C0605A; marker-end: url(#x); }
|
||||
.shadow { fill: #DADADA; }
|
||||
</style>
|
||||
<defs>
|
||||
<marker id="a" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#666" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#555"/>
|
||||
</marker>
|
||||
<marker id="x" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#C0605A" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#C0605A"/>
|
||||
</marker>
|
||||
</defs>
|
||||
<rect width="100%" height="100%" fill="#FFFFFF"/>
|
||||
@@ -25,14 +25,11 @@
|
||||
<line x1="100" y1="76" x2="100" y2="388" class="life"/>
|
||||
<line x1="300" y1="76" x2="300" y2="388" class="life"/>
|
||||
<line x1="500" y1="76" x2="500" y2="388" class="life"/>
|
||||
<rect x="66" y="47" width="72" height="30" rx="6" class="shadow"/>
|
||||
<rect x="64" y="45" width="72" height="30" rx="6" fill="#B0E3E6"/>
|
||||
<rect x="64" y="45" width="72" height="30" rx="6" fill="#C6ECE9" stroke="#7DBCB7"/>
|
||||
<text x="100" y="64.5" class="head">生产者</text>
|
||||
<rect x="266" y="47" width="72" height="30" rx="6" class="shadow"/>
|
||||
<rect x="264" y="45" width="72" height="30" rx="6" fill="#B1DDF0"/>
|
||||
<rect x="264" y="45" width="72" height="30" rx="6" fill="#C6E4FB" stroke="#7FB2D6"/>
|
||||
<text x="300" y="64.5" class="head">Broker</text>
|
||||
<rect x="466" y="47" width="72" height="30" rx="6" class="shadow"/>
|
||||
<rect x="464" y="45" width="72" height="30" rx="6" fill="#B0E3E6"/>
|
||||
<rect x="464" y="45" width="72" height="30" rx="6" fill="#C6ECE9" stroke="#7DBCB7"/>
|
||||
<text x="500" y="64.5" class="head">消费者</text>
|
||||
<line x1="104" y1="100" x2="296" y2="100" class="arrow"/>
|
||||
<text x="200" y="94" class="msg">① 发送半消息</text>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 2.8 KiB |
@@ -1,42 +1,42 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="740" height="400" viewBox="0 0 740 400">
|
||||
<style>
|
||||
text { font-family: "PingFang SC", "Microsoft YaHei", Helvetica, Arial, sans-serif; fill: #666; font-size: 12px; }
|
||||
.title { font-weight: bold; font-size: 15px; fill: #777; text-anchor: middle; }
|
||||
text { font-family: "PingFang SC", "Microsoft YaHei", Helvetica, Arial, sans-serif; fill: #3F3F3F; font-size: 12px; }
|
||||
.title { font-weight: bold; font-size: 15px; fill: #333; text-anchor: middle; }
|
||||
.b { font-weight: bold; }
|
||||
.c { text-anchor: middle; }
|
||||
.e { text-anchor: end; }
|
||||
.note { fill: #C0605A; }
|
||||
.ok { fill: #6A9F68; }
|
||||
.sub { font-size: 11px; fill: #888; }
|
||||
.sub { font-size: 11px; fill: #6E6E6E; }
|
||||
.mono { font-family: Menlo, Consolas, monospace; }
|
||||
.arrow { stroke: #666; stroke-width: 1.3; fill: none; marker-end: url(#a); }
|
||||
.arrow { stroke: #555; stroke-width: 1.1; fill: none; marker-end: url(#a); }
|
||||
.red { stroke: #C0605A; marker-end: url(#r); }
|
||||
.green { stroke: #6A9F68; marker-end: url(#g); }
|
||||
.dash { stroke-dasharray: 5 4; }
|
||||
.line { stroke: #666; stroke-width: 1.3; fill: none; }
|
||||
.line { stroke: #555; stroke-width: 1.1; fill: none; }
|
||||
.frame { fill: none; stroke: #999; stroke-width: 1; stroke-dasharray: 4 3; }
|
||||
.shadow { fill: #DADADA; }
|
||||
</style>
|
||||
<defs>
|
||||
<marker id="a" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#666" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#555"/>
|
||||
</marker>
|
||||
<marker id="r" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#C0605A" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#C0605A"/>
|
||||
</marker>
|
||||
<marker id="g" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#6A9F68" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#6A9F68"/>
|
||||
</marker>
|
||||
</defs>
|
||||
<rect width="100%" height="100%" fill="#FFFFFF"/>
|
||||
|
||||
<text x="370" y="28" class="title">一次 RPC 调用</text>
|
||||
<rect x="285" y="44" width="170" height="70" rx="5" fill="#E6E6E6" stroke="#B5B5B5" stroke-width="1.2"/>
|
||||
<rect x="285" y="44" width="170" height="22" rx="5" fill="#B5B5B5" opacity="0.35"/>
|
||||
<rect x="285" y="44" width="170" height="70" rx="5" fill="#EAE9E7" stroke="#BFBEBA" stroke-width="1.2"/>
|
||||
<rect x="285" y="44" width="170" height="22" rx="5" fill="#BFBEBA" opacity="0.35"/>
|
||||
<text x="370" y="59" class="c b">注册中心</text>
|
||||
<rect x="291" y="72" width="158" height="16" rx="3" fill="#FFFFFF" stroke="#B5B5B5" stroke-width="0.6"/>
|
||||
<rect x="291" y="72" width="158" height="16" rx="3" fill="#FFFFFF" stroke="#BFBEBA" stroke-width="0.6"/>
|
||||
<text x="297" y="84" class="sub">库存服务 10.0.0.8</text>
|
||||
<rect x="291" y="92" width="158" height="16" rx="3" fill="#FFFFFF" stroke="#B5B5B5" stroke-width="0.6"/>
|
||||
<rect x="291" y="92" width="158" height="16" rx="3" fill="#FFFFFF" stroke="#BFBEBA" stroke-width="0.6"/>
|
||||
<text x="297" y="104" class="sub">库存服务 10.0.0.9</text>
|
||||
<rect x="20" y="170" width="270" height="190" rx="8" class="frame"/>
|
||||
<text x="30" y="188" class="b">订单服务(调用方)</text>
|
||||
@@ -50,15 +50,15 @@
|
||||
<text x="40" y="280" class="sub">序列化后从缓存的地址中选一个实例</text>
|
||||
<rect x="450" y="170" width="270" height="190" rx="8" class="frame"/>
|
||||
<text x="460" y="188" class="b">库存服务(服务方)</text>
|
||||
<rect x="477" y="214" width="46" height="13" rx="3" fill="#B1DDF0" stroke="#7FB4D0" stroke-width="1.2"/>
|
||||
<circle cx="484" cy="220.5" r="2" fill="#7FB4D0"/>
|
||||
<line x1="491" y1="220.5" x2="516" y2="220.5" stroke="#7FB4D0" stroke-width="1"/>
|
||||
<rect x="477" y="230" width="46" height="13" rx="3" fill="#B1DDF0" stroke="#7FB4D0" stroke-width="1.2"/>
|
||||
<circle cx="484" cy="236.5" r="2" fill="#7FB4D0"/>
|
||||
<line x1="491" y1="236.5" x2="516" y2="236.5" stroke="#7FB4D0" stroke-width="1"/>
|
||||
<rect x="477" y="246" width="46" height="13" rx="3" fill="#B1DDF0" stroke="#7FB4D0" stroke-width="1.2"/>
|
||||
<circle cx="484" cy="252.5" r="2" fill="#7FB4D0"/>
|
||||
<line x1="491" y1="252.5" x2="516" y2="252.5" stroke="#7FB4D0" stroke-width="1"/>
|
||||
<rect x="477" y="214" width="46" height="13" rx="3" fill="#C6E4FB" stroke="#7FB2D6" stroke-width="1.2"/>
|
||||
<circle cx="484" cy="220.5" r="2" fill="#7FB2D6"/>
|
||||
<line x1="491" y1="220.5" x2="516" y2="220.5" stroke="#7FB2D6" stroke-width="1"/>
|
||||
<rect x="477" y="230" width="46" height="13" rx="3" fill="#C6E4FB" stroke="#7FB2D6" stroke-width="1.2"/>
|
||||
<circle cx="484" cy="236.5" r="2" fill="#7FB2D6"/>
|
||||
<line x1="491" y1="236.5" x2="516" y2="236.5" stroke="#7FB2D6" stroke-width="1"/>
|
||||
<rect x="477" y="246" width="46" height="13" rx="3" fill="#C6E4FB" stroke="#7FB2D6" stroke-width="1.2"/>
|
||||
<circle cx="484" cy="252.5" r="2" fill="#7FB2D6"/>
|
||||
<line x1="491" y1="252.5" x2="516" y2="252.5" stroke="#7FB2D6" stroke-width="1"/>
|
||||
<text x="536" y="226" class="sub">解码请求帧,</text>
|
||||
<text x="536" y="244" class="sub">通过反射调用</text>
|
||||
<text x="536" y="262" class="sub mono">InventoryServiceImpl</text>
|
||||
@@ -70,8 +70,8 @@
|
||||
<line x1="278" y1="229" x2="297" y2="229" class="arrow "/>
|
||||
<line x1="442" y1="229" x2="486" y2="229" class="arrow "/>
|
||||
<text x="370" y="206" class="c sub">② 请求帧:请求 ID + 方法 + 参数</text>
|
||||
<rect x="300" y="300" width="140" height="30" rx="3" fill="#DDD7F6" stroke="#A99FD8" stroke-width="1.2"/>
|
||||
<path d="M300,301 L314,311 L328,301" fill="none" stroke="#A99FD8" stroke-width="1"/>
|
||||
<rect x="300" y="300" width="140" height="30" rx="3" fill="#E6E3FA" stroke="#B8B0DE" stroke-width="1.2"/>
|
||||
<path d="M300,301 L314,311 L328,301" fill="none" stroke="#B8B0DE" stroke-width="1"/>
|
||||
<text x="334" y="319" class="sub mono">ID 7 true</text>
|
||||
<line x1="486" y1="315" x2="442" y2="315" class="arrow "/>
|
||||
<line x1="298" y1="315" x2="278" y2="315" class="arrow "/>
|
||||
|
||||
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.4 KiB |
@@ -1,56 +1,51 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="600" height="220" viewBox="0 0 600 220">
|
||||
<style>
|
||||
text { font-family: "PingFang SC", "Microsoft YaHei", Helvetica, Arial, sans-serif; fill: #666; font-size: 12px; }
|
||||
.title { font-weight: bold; font-size: 15px; fill: #777; text-anchor: middle; }
|
||||
text { font-family: "PingFang SC", "Microsoft YaHei", Helvetica, Arial, sans-serif; fill: #3F3F3F; font-size: 12px; }
|
||||
.title { font-weight: bold; font-size: 15px; fill: #333; text-anchor: middle; }
|
||||
.b { font-weight: bold; }
|
||||
.c { text-anchor: middle; }
|
||||
.e { text-anchor: end; }
|
||||
.note { fill: #C0605A; }
|
||||
.ok { fill: #6A9F68; }
|
||||
.sub { font-size: 11px; fill: #888; }
|
||||
.sub { font-size: 11px; fill: #6E6E6E; }
|
||||
.mono { font-family: Menlo, Consolas, monospace; }
|
||||
.arrow { stroke: #666; stroke-width: 1.3; fill: none; marker-end: url(#a); }
|
||||
.arrow { stroke: #555; stroke-width: 1.1; fill: none; marker-end: url(#a); }
|
||||
.red { stroke: #C0605A; marker-end: url(#r); }
|
||||
.green { stroke: #6A9F68; marker-end: url(#g); }
|
||||
.dash { stroke-dasharray: 5 4; }
|
||||
.line { stroke: #666; stroke-width: 1.3; fill: none; }
|
||||
.line { stroke: #555; stroke-width: 1.1; fill: none; }
|
||||
.frame { fill: none; stroke: #999; stroke-width: 1; stroke-dasharray: 4 3; }
|
||||
.shadow { fill: #DADADA; }
|
||||
</style>
|
||||
<defs>
|
||||
<marker id="a" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#666" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#555"/>
|
||||
</marker>
|
||||
<marker id="r" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#C0605A" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#C0605A"/>
|
||||
</marker>
|
||||
<marker id="g" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#6A9F68" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#6A9F68"/>
|
||||
</marker>
|
||||
</defs>
|
||||
<rect width="100%" height="100%" fill="#FFFFFF"/>
|
||||
|
||||
<text x="300" y="28" class="title">Saga</text>
|
||||
<rect x="72" y="62" width="110" height="40" rx="6" class="shadow"/>
|
||||
<rect x="70" y="60" width="110" height="40" rx="6" fill="#B1DDF0"/>
|
||||
<rect x="70" y="60" width="110" height="40" rx="6" fill="#C6E4FB" stroke="#7FB2D6"/>
|
||||
<text x="125" y="78" class="b c">T1</text>
|
||||
<text x="125" y="93" class="sub c">本地事务提交</text>
|
||||
<rect x="232" y="62" width="110" height="40" rx="6" class="shadow"/>
|
||||
<rect x="230" y="60" width="110" height="40" rx="6" fill="#B1DDF0"/>
|
||||
<rect x="230" y="60" width="110" height="40" rx="6" fill="#C6E4FB" stroke="#7FB2D6"/>
|
||||
<text x="285" y="78" class="b c">T2</text>
|
||||
<text x="285" y="93" class="sub c">本地事务提交</text>
|
||||
<rect x="392" y="62" width="110" height="40" rx="6" class="shadow"/>
|
||||
<rect x="390" y="60" width="110" height="40" rx="6" fill="#F3C6C2"/>
|
||||
<text x="445" y="78" class="b c">T3</text>
|
||||
<text x="445" y="93" class="sub c">失败</text>
|
||||
<line x1="183" y1="80" x2="227" y2="80" class="arrow "/>
|
||||
<line x1="343" y1="80" x2="387" y2="80" class="arrow "/>
|
||||
<rect x="72" y="152" width="110" height="40" rx="6" class="shadow"/>
|
||||
<rect x="70" y="150" width="110" height="40" rx="6" fill="#B0E3E6"/>
|
||||
<rect x="70" y="150" width="110" height="40" rx="6" fill="#C6ECE9" stroke="#7DBCB7"/>
|
||||
<text x="125" y="168" class="b c">C1</text>
|
||||
<text x="125" y="183" class="sub c">补偿 T1</text>
|
||||
<rect x="232" y="152" width="110" height="40" rx="6" class="shadow"/>
|
||||
<rect x="230" y="150" width="110" height="40" rx="6" fill="#B0E3E6"/>
|
||||
<rect x="230" y="150" width="110" height="40" rx="6" fill="#C6ECE9" stroke="#7DBCB7"/>
|
||||
<text x="285" y="168" class="b c">C2</text>
|
||||
<text x="285" y="183" class="sub c">补偿 T2</text>
|
||||
<path d="M445,103 L445,125 Q445,170 400,170 L345,170" class="arrow red"/>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 2.9 KiB |