<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="929px" height="372px" viewBox="-0.5 -0.5 929 372" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2021-07-02T07:13:33.957Z&quot; agent=&quot;5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36&quot; version=&quot;14.8.1&quot; etag=&quot;2YyJ_cUwcXE9OKDsRA9o&quot;&gt;&lt;diagram id=&quot;QEmuOz1HU3UUPS1QFZqf&quot;&gt;7VrBduI2FP0aLYdjW7YlLXGAdpGe9pxZtF06WIA7BnGMmEC/vk+2DMgS2B0cJuk0m9jP8hNc3ft09RKEn9aHn8p0u/pFZLxAgZcdEJ6gIPB9SuGXihzrSOTjOrAs80wPOgc+539zHfR0dJ9nfGcMlEIUMt+awbnYbPhcGrG0LMWrOWwhCnPWbbrkVuDzPC3s6O95Jlc6ygLv/OBnni9XzdSBp5+s02a0DuxWaSZeL0J4ivBTKYSsr9aHJ14o9Bpg6vdmV56ePlnJN7LPC0H9wte02Osvh6YRGk/RGC5iBCuVEDQlaJyg8QwG6gl28tiAAfkAd7hJXle55J+36Vw9eYWlh9hKrgu48+Ey3W3rxVjkBw7TJ3pqXkp+uPrx/RMoQCcu1lyWRxiiX2AaxoZIDc6v52WJdWh1sSBNLNVEWJ4Sn6GCC42WGzlsI5EBS/StKOVKLMUmLabnaFKK/SZT333iwd15zLMQW43SX1zKo6Z8upfCxLCeU01kALYT+3KuQ2FvDEtepDL/aqZyQaJf/U3kkPGEve95Jvoxa8Eq03LJpX6thezpc/QCO3TQNEbsCdGJ4isdo7F/QdPWwpiwd9B0AFbSFi7EZiV1sDIcgJWRG6gIJV6l54nSNiCWjBGzGQzVaKsu58ciB8RK3A3XS43t88spkM6/LCvEf91LSMN1fFdz2o8GUn5kYExCG+PIpfx4FJP7YY5tmK1qsMnGaq9RcBbpbpfPTeAWeVE8iUKU1XAchySmROEkS/GFXzxRP7PZdfH3wKwDlCZ2b0GI2Yhd/BBiFmfc4nddtazyYOUNvJt537DsEIeaQpRQRJOq7ExQQ8PWNvCcvoDnMbe/Il9uFBlgsTgsbaLon4OpGOsH6zzL6l2Cg1bSlyqfKlhb9U2q7xYlKJrc0o92PPrls8245Eh8U1efvFGEMTMQDu6jRzNELBY7fu+S0PuV9951FODbfPe/VUeRmZc+Skbsvygj2iUj7PnkHQmnYU1vq+8Q1nuy+vRxVt93nHq+m9f/Dsae0H6lwc4UhrcqmZX3SiX7FrbbB1t/BPdoClVnWjEdCs8Msbji/hSxuiYlVYQhFiIKwMWFVJa2hKulugrqHOCoE5SE1UVcWevGUStFQTmjusBBsDr7t/PgOg9DYPng8KLywPjpzc/SYiAoSZqEMZ3jRijrbdhMHWpKaMEX8lYBdYncZPUAssa4zbWzQ7+Qtu85tE3wCOMB5I3v9xQf17XHfusk1VOUdqLWkczy+8MZCt/VD7AcRb2pMU93CJjdGHjvHqNm5lXtgMcgcWiA7g/CiWbD00k/YWpmGMaQuHoV9iJCQYWgrwo3VNyxwyi+md0/wRwFhLlgfpBCacd23FehBJsKtU4Snfv6sASInYJ8Y1vFD7n84+L6T5VqFOm7yUFnrm6Oxj53s+3qu+TrptXgfdd/vYxNJn0gDAMcMOoTZtaSKPRGXkRpgKOAhb7f6psNaNYcfZYfZwPGcWs52wfxvvLGXXViwA3Y0YZRJnamCjRUajhA1qfKTp/84bZk0rFXwKk/MHfPO/fkYWuuoxfzuA31MYIKyUCCCtnDBNVQ7QcUFPvQgmrmtRsNRC0IZdUSTRGNhmk91K9Wf+xUyZyth0hNkgRqDGSF8f83I/o5/TDu14xwFa+BmhFNPb6nQL+RxQ3eWZ0/LUPjV9u93r513nLUb9i6CBzNJqU4kGqtL1LVd6LUmtgdi/uF1l3wu6W2EBupD1hwiBumvR+YS3Daezv6+4F3nTZXNAe353+wqpfw/H9qePoP&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs/><g><ellipse cx="40" cy="40" rx="30" ry="30" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 40px; margin-left: 11px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">客户端 1</div></div></div></foreignObject><text x="40" y="44" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">客户端 1</text></switch></g><path d="M 80 200 L 913.63 200" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 918.88 200 L 911.88 203.5 L 913.63 200 L 911.88 196.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="180" width="80" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 200px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">服务端</div></div></div></foreignObject><text x="40" y="204" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">服务端</text></switch></g><path d="M 15 265 C 15 256.72 26.19 250 40 250 C 46.63 250 52.99 251.58 57.68 254.39 C 62.37 257.21 65 261.02 65 265 L 65 301.67 C 65 309.95 53.81 316.67 40 316.67 C 26.19 316.67 15 309.95 15 301.67 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 65 265 C 65 273.28 53.81 280 40 280 C 26.19 280 15 273.28 15 265" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 296px; margin-left: 16px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">数据库</div></div></div></foreignObject><text x="40" y="300" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">数据库</text></switch></g><path d="M 90 40 L 128.46 193.82" fill="none" stroke="#3333ff" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 129.73 198.92 L 124.64 192.97 L 128.46 193.82 L 131.43 191.28 Z" fill="#3333ff" stroke="#3333ff" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 77px; margin-left: 102px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">下单</div></div></div></foreignObject><text x="102" y="80" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">下单</text></switch></g><path d="M 160 120 L 178.46 193.82" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 179.73 198.92 L 174.64 192.97 L 178.46 193.82 L 181.43 191.28 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 149px; margin-left: 167px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">下单</div></div></div></foreignObject><text x="167" y="152" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">下单</text></switch></g><ellipse cx="40" cy="120" rx="30" ry="30" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 120px; margin-left: 11px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">客户端 2</div></div></div></foreignObject><text x="40" y="124" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">客户端 2</text></switch></g><path d="M 65 290 L 913.63 290" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 918.88 290 L 911.88 293.5 L 913.63 290 L 911.88 286.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="250" y="296.67" width="100" height="73.33" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 98px; height: 1px; padding-top: 333px; margin-left: 252px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">1. 获取排他锁<br />2. 更新库存为 0<br />3. 释放排他锁</div></div></div></foreignObject><text x="252" y="337" fill="#000000" font-family="Helvetica" font-size="12px">1. 获取排他锁...</text></switch></g><path d="M 535 290 L 613.06 46.07" fill="none" stroke="#3333ff" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 614.66 41.06 L 615.86 48.8 L 613.06 46.07 L 609.19 46.67 Z" fill="#3333ff" stroke="#3333ff" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 80px; margin-left: 601px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">下单成功</div></div></div></foreignObject><text x="601" y="83" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">下单成功</text></switch></g><path d="M 600 290 L 653.04 126.06" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 654.66 121.06 L 655.83 128.8 L 653.04 126.06 L 649.17 126.65 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 160px; margin-left: 641px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">下单失败</div></div></div></foreignObject><text x="641" y="163" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">下单失败</text></switch></g><path d="M 70 120 L 913.63 120" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 918.88 120 L 911.88 123.5 L 913.63 120 L 911.88 116.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 280 200 L 298.62 283.78" fill="none" stroke="#3333ff" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 299.76 288.91 L 294.82 282.83 L 298.62 283.78 L 301.66 281.32 Z" fill="#3333ff" stroke="#3333ff" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 246px; margin-left: 290px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">查询更新库存</div></div></div></foreignObject><text x="290" y="249" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">查询更新库存</text></switch></g><path d="M 390 200 L 408.62 283.78" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 409.76 288.91 L 404.82 282.83 L 408.62 283.78 L 411.66 281.32 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 246px; margin-left: 400px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">查询更新库存</div></div></div></foreignObject><text x="400" y="249" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">查询更新库存</text></switch></g><rect x="380" y="296.67" width="150" height="73.33" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 148px; height: 1px; padding-top: 333px; margin-left: 382px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">1. 等待获取排他锁<br />2. 发现库存已经为 0<br />3. 释放排他锁</div></div></div></foreignObject><text x="382" y="337" fill="#000000" font-family="Helvetica" font-size="12px">1. 等待获取排他锁...</text></switch></g><path d="M 70 40 L 913.63 40" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 918.88 40 L 911.88 43.5 L 913.63 40 L 911.88 36.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="840" y="0" width="60" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 10px; margin-left: 841px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">时间线</div></div></div></foreignObject><text x="870" y="15" fill="#000000" font-family="Helvetica" font-size="16px" text-anchor="middle">时间线</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>