wheat-cache/doc/_icon/architecture.svg

3 lines
37 KiB
XML

<?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="872px" height="851px" viewBox="-0.5 -0.5 872 851" content="&lt;mxfile host=&quot;Electron&quot; modified=&quot;2021-10-27T06:12:36.125Z&quot; agent=&quot;5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.9.6 Chrome/89.0.4389.128 Electron/12.0.16 Safari/537.36&quot; etag=&quot;EvqytCYcw28cl_2pOXzd&quot; version=&quot;14.9.6&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;C-mdZPCyZixXenSM0EgQ&quot; name=&quot;第 1 页&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-e6d0de-1-d5739d-1-s-0"><stop offset="0%" style="stop-color:#e6d0de"/><stop offset="100%" style="stop-color:#d5739d"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-dae8fc-1-7ea6e0-1-s-0"><stop offset="0%" style="stop-color:#dae8fc"/><stop offset="100%" style="stop-color:#7ea6e0"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-f8cecc-1-ea6b66-1-s-0"><stop offset="0%" style="stop-color:#f8cecc"/><stop offset="100%" style="stop-color:#ea6b66"/></linearGradient></defs><g><path d="M 23 0 L 0 0 L 0 80 L 23 80" fill="#fff2cc" stroke="#d6b656" stroke-miterlimit="10" pointer-events="all"/><path d="M 23 0 L 870 0 L 870 80 L 23 80" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><path d="M 23 0 L 23 80" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><g fill="#000000" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px" transform="rotate(-90,11.5,40)"><text x="11" y="44.5">应用层</text></g><rect x="100" y="7.5" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 118px; height: 1px; padding-top: 37px; margin-left: 101px;"><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: none; white-space: normal; word-wrap: normal; ">proto 自动生成客户端</div></div></div></foreignObject><text x="160" y="41" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">proto 自动生成客户端</text></switch></g><rect x="375" y="7.5" width="120" height="60" rx="9" ry="9" fill="#fff2cc" stroke="#d6b656" pointer-events="none"/><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: 118px; height: 1px; padding-top: 37px; margin-left: 376px;"><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: none; white-space: normal; word-wrap: normal; ">集群模式客户端中间件</div></div></div></foreignObject><text x="435" y="41" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">集群模式客户端中间件</text></switch></g><rect x="650" y="7.5" width="120" height="60" rx="9" ry="9" fill="#fff2cc" stroke="#d6b656" pointer-events="none"/><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: 118px; height: 1px; padding-top: 37px; margin-left: 651px;"><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: none; white-space: normal; word-wrap: normal; ">哨兵模式客户端中间件</div></div></div></foreignObject><text x="710" y="41" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">哨兵模式客户端中间件</text></switch></g><path d="M 23 100 L 0 100 L 0 280 L 23 280" fill="#d5e8d4" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 23 100 L 870 100 L 870 280 L 23 280" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 23 100 L 23 280" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><g fill="#000000" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px" transform="rotate(-90,11.5,190)"><text x="11" y="194.5">网关层</text></g><path d="M 90 143 L 90 120 L 420 120 L 420 143" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 90 143 L 90 260 L 420 260 L 420 143" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 90 143 L 420 143" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g fill="#000000" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px"><text x="254.5" y="136">集群模式</text></g><rect x="85" y="180" width="95" height="50" fill="#f5f5f5" stroke="#666666" transform="rotate(90,132.5,205)" pointer-events="none"/><g transform="translate(-0.5 -0.5)rotate(90 132.5 205)"><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: 93px; height: 1px; padding-top: 205px; margin-left: 86px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; ">一致性 hash</div></div></div></foreignObject><text x="133" y="209" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">一致性 hash</text></switch></g><rect x="200" y="180" width="95" height="50" fill="#f5f5f5" stroke="#666666" transform="rotate(90,247.5,205)" pointer-events="none"/><g transform="translate(-0.5 -0.5)rotate(90 247.5 205)"><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: 93px; height: 1px; padding-top: 205px; margin-left: 201px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; ">心跳检查机制</div></div></div></foreignObject><text x="248" y="209" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">心跳检查机制</text></switch></g><rect x="310" y="180" width="95" height="50" fill="#f5f5f5" stroke="#666666" transform="rotate(90,357.5,205)" pointer-events="none"/><g transform="translate(-0.5 -0.5)rotate(90 357.5 205)"><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: 93px; height: 1px; padding-top: 205px; margin-left: 311px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; ">动态节点,稳定节点分析</div></div></div></foreignObject><text x="358" y="209" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">动态节点,稳定节点分析</text></switch></g><path d="M 500 143 L 500 120 L 820 120 L 820 143" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 500 143 L 500 260 L 820 260 L 820 143" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 500 143 L 820 143" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g fill="#000000" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px"><text x="659.5" y="136">哨兵模式</text></g><rect x="500" y="180" width="95" height="50" fill="#f5f5f5" stroke="#666666" transform="rotate(90,547.5,205)" pointer-events="none"/><g transform="translate(-0.5 -0.5)rotate(90 547.5 205)"><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: 93px; height: 1px; padding-top: 205px; margin-left: 501px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; ">主从转发</div></div></div></foreignObject><text x="548" y="209" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">主从转发</text></switch></g><rect x="612.5" y="180" width="95" height="50" fill="#f5f5f5" stroke="#666666" transform="rotate(90,660,205)" pointer-events="none"/><g transform="translate(-0.5 -0.5)rotate(90 660 205)"><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: 93px; height: 1px; padding-top: 205px; margin-left: 614px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; ">心跳检查</div></div></div></foreignObject><text x="660" y="209" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">心跳检查</text></switch></g><rect x="710" y="180" width="95" height="50" fill="#f5f5f5" stroke="#666666" transform="rotate(90,757.5,205)" pointer-events="none"/><g transform="translate(-0.5 -0.5)rotate(90 757.5 205)"><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: 93px; height: 1px; padding-top: 205px; margin-left: 711px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: none; white-space: normal; word-wrap: normal; ">storage 发现</div></div></div></foreignObject><text x="758" y="209" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">storage 发现</text></switch></g><path d="M 23 300 L 0 300 L 0 410 L 23 410" fill="#dae8fc" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><path d="M 23 300 L 870 300 L 870 410 L 23 410" fill="none" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><path d="M 23 300 L 23 410" fill="none" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><g fill="#000000" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px" transform="rotate(-90,11.5,355)"><text x="11" y="359.5">缓存服务层</text></g><rect x="40" y="325" width="110" height="60" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 108px; height: 1px; padding-top: 355px; margin-left: 41px;"><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: none; white-space: normal; word-wrap: normal; ">stringx</div></div></div></foreignObject><text x="95" y="359" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">stringx</text></switch></g><rect x="170" y="325" width="110" height="60" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 108px; height: 1px; padding-top: 355px; margin-left: 171px;"><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: none; white-space: normal; word-wrap: normal; ">listx</div></div></div></foreignObject><text x="225" y="359" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">listx</text></switch></g><rect x="310" y="325" width="110" height="60" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 108px; height: 1px; padding-top: 355px; margin-left: 311px;"><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: none; white-space: normal; word-wrap: normal; ">hashx</div></div></div></foreignObject><text x="365" y="359" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">hashx</text></switch></g><rect x="450" y="325" width="110" height="60" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 108px; height: 1px; padding-top: 355px; margin-left: 451px;"><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: none; white-space: normal; word-wrap: normal; ">setx</div></div></div></foreignObject><text x="505" y="359" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">setx</text></switch></g><rect x="590" y="325" width="110" height="60" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 108px; height: 1px; padding-top: 355px; margin-left: 591px;"><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: none; white-space: normal; word-wrap: normal; ">zsetx</div></div></div></foreignObject><text x="645" y="359" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">zsetx</text></switch></g><rect x="730" y="325" width="110" height="60" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 108px; height: 1px; padding-top: 355px; margin-left: 731px;"><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: none; white-space: normal; word-wrap: normal; ">channelx</div></div></div></foreignObject><text x="785" y="359" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">channelx</text></switch></g><path d="M 23 430 L 0 430 L 0 540 L 23 540" fill="#f8cecc" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 23 430 L 870 430 L 870 540 L 23 540" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 23 430 L 23 540" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><g fill="#000000" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px" transform="rotate(-90,11.5,485)"><text x="11" y="489.5">Lru 存储层</text></g><rect x="70" y="455" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 118px; height: 1px; padding-top: 485px; margin-left: 71px;"><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: none; white-space: normal; word-wrap: normal; ">Lru Map</div></div></div></foreignObject><text x="130" y="489" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Lru Map</text></switch></g><rect x="274" y="455" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 118px; height: 1px; padding-top: 485px; margin-left: 275px;"><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: none; white-space: normal; word-wrap: normal; ">毫秒级别过期机制</div></div></div></foreignObject><text x="334" y="489" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">毫秒级别过期机制</text></switch></g><rect x="480" y="455" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 118px; height: 1px; padding-top: 485px; margin-left: 481px;"><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: none; white-space: normal; word-wrap: normal; ">单线程工作函数</div></div></div></foreignObject><text x="540" y="489" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">单线程工作函数</text></switch></g><rect x="687" y="455" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 118px; height: 1px; padding-top: 485px; margin-left: 688px;"><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: none; white-space: normal; word-wrap: normal; ">持久化</div></div></div></foreignObject><text x="747" y="489" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">持久化</text></switch></g><path d="M 23 560 L 0 560 L 0 850 L 23 850" fill="url(#mx-gradient-e6d0de-1-d5739d-1-s-0)" stroke="#996185" stroke-miterlimit="10" pointer-events="none"/><path d="M 23 560 L 870 560 L 870 850 L 23 850" fill="none" stroke="#996185" stroke-miterlimit="10" pointer-events="none"/><path d="M 23 560 L 23 850" fill="none" stroke="#996185" stroke-miterlimit="10" pointer-events="none"/><g fill="#000000" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px" transform="rotate(-90,11.5,705)"><text x="11" y="709.5">插件以及消息层</text></g><path d="M 250 670 L 250.06 705 L 360.63 705" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 365.88 705 L 358.88 708.5 L 360.63 705 L 358.88 701.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 50 593 L 50 570 L 850 570 L 850 593" fill="url(#mx-gradient-dae8fc-1-7ea6e0-1-s-0)" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><path d="M 50 593 L 50 670 L 850 670 L 850 593" fill="none" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><path d="M 50 593 L 850 593" fill="none" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><g fill="#000000" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px"><text x="449.5" y="586">middleware 推送消息类型</text></g><rect x="70" y="600" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 118px; height: 1px; padding-top: 630px; margin-left: 71px;"><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: none; white-space: normal; word-wrap: normal; ">log 消息</div></div></div></foreignObject><text x="130" y="634" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">log 消息</text></switch></g><rect x="230" y="600" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 118px; height: 1px; padding-top: 630px; margin-left: 231px;"><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: none; white-space: normal; word-wrap: normal; ">Lru 清理消息</div></div></div></foreignObject><text x="290" y="634" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Lru 清理消息</text></switch></g><rect x="390" y="600" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 118px; height: 1px; padding-top: 630px; margin-left: 391px;"><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: none; white-space: normal; word-wrap: normal; ">Lru 过期消息</div></div></div></foreignObject><text x="450" y="634" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Lru 过期消息</text></switch></g><rect x="560" y="600" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 118px; height: 1px; padding-top: 630px; margin-left: 561px;"><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: none; white-space: normal; word-wrap: normal; ">storage 节点消息</div></div></div></foreignObject><text x="620" y="634" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">storage 节点消息</text></switch></g><rect x="710" y="600" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 118px; height: 1px; padding-top: 630px; margin-left: 711px;"><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: none; white-space: normal; word-wrap: normal; ">...</div></div></div></foreignObject><text x="770" y="634" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">...</text></switch></g><path d="M 50 763 L 50 740 L 840 740 L 840 763" fill="url(#mx-gradient-f8cecc-1-ea6b66-1-s-0)" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 50 763 L 50 840 L 840 840 L 840 763" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 50 763 L 840 763" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><g fill="#000000" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px"><text x="444.5" y="756">系统或者 第三方插件</text></g><rect x="70" y="770" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 118px; height: 1px; padding-top: 800px; margin-left: 71px;"><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: none; white-space: normal; word-wrap: normal; ">可视化监控</div></div></div></foreignObject><text x="130" y="804" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">可视化监控</text></switch></g><rect x="270" y="770" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 118px; height: 1px; padding-top: 800px; margin-left: 271px;"><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: none; white-space: normal; word-wrap: normal; ">2 级缓存</div></div></div></foreignObject><text x="330" y="804" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">2 级缓存</text></switch></g><rect x="460" y="770" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 118px; height: 1px; padding-top: 800px; margin-left: 461px;"><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: none; white-space: normal; word-wrap: normal; ">集群节点更新</div></div></div></foreignObject><text x="520" y="804" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">集群节点更新</text></switch></g><rect x="650" y="770" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="none"/><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: 118px; height: 1px; padding-top: 800px; margin-left: 651px;"><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: none; white-space: normal; word-wrap: normal; ">其他第 3 方插件</div></div></div></foreignObject><text x="710" y="804" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">其他第 3 方插件</text></switch></g><path d="M 490 705 L 642.53 705 L 642.51 733.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 642.5 738.88 L 639.01 731.88 L 642.51 733.63 L 646.01 731.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="370" y="675" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="none"/><path d="M 382 675 L 382 735 M 478 675 L 478 735" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><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: 94px; height: 1px; padding-top: 705px; margin-left: 383px;"><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: none; white-space: normal; word-wrap: normal; ">消息推送中间件</div></div></div></foreignObject><text x="430" y="709" fill="#000000" font-family="Helvetica" font-size="12px" 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>