Update 分布式.md

调整配图的配色和画法:换成更浅的蓝、青、紫和暖灰,去掉阴影,方框加同色细描边,箭头改为实心。
This commit is contained in:
CyC2018
2026-10-26 06:01:54 +08:00
parent 07a973086b
commit 53ea502942
10 changed files with 63 additions and 80 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 58 KiB

+10 -14
View File
@@ -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

+10 -15
View File
@@ -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

+8 -11
View File
@@ -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

+23 -23
View File
@@ -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

+12 -17
View File
@@ -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