Files
progcode/web/public/assets/editorial/2021/event-topology-2021.svg
T
huncode 2da66c5725
Build and deploy / deploy (push) Successful in 15s
revise June 2021 event integration articles
2026-07-31 12:46:37 +03:00

55 lines
3.4 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<svg xmlns="http://www.w3.org/2000/svg" width="720" height="1140" viewBox="0 0 720 1140" role="img" aria-labelledby="title desc">
<title id="title">Учебная топология событийной интеграции</title>
<desc id="desc">Вертикальная схема: producer формирует envelope и payload, граница доставки передаёт их consumer, consumer валидирует договор и записывает versioned result в ledger. Повтор и controlled replay несут тот же source и event id.</desc>
<defs>
<marker id="arrow" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto">
<path d="M0,0 L12,6 L0,12 Z" fill="#4bc0c8"/>
</marker>
<style>
.bg { fill: #0d1724; }
.panel { fill: #162437; stroke: #36516b; stroke-width: 2; }
.accent { fill: #123d4b; stroke: #4bc0c8; stroke-width: 2; }
.warn { fill: #3b3030; stroke: #e7aa55; stroke-width: 2; }
.line { stroke: #4bc0c8; stroke-width: 4; fill: none; marker-end: url(#arrow); }
.muted { fill: #a8bed0; font: 22px Arial, sans-serif; }
.label { fill: #d9edf6; font: 24px Arial, sans-serif; font-weight: 700; }
.title { fill: #f3fbff; font: 32px Arial, sans-serif; font-weight: 700; }
.small { fill: #a8bed0; font: 20px Arial, sans-serif; }
.code { fill: #92e3e8; font: 22px "SFMono-Regular", Consolas, monospace; }
</style>
</defs>
<rect class="bg" width="720" height="1140" rx="28"/>
<text class="title" x="54" y="62">Один event, несколько delivery</text>
<text class="muted" x="54" y="96">Учебный contract июня 2021</text>
<rect class="accent" x="54" y="138" width="612" height="188" rx="18"/>
<text class="label" x="84" y="180">1. Producer: формирует факт</text>
<text class="code" x="84" y="220">id · source · type · subject</text>
<text class="code" x="84" y="254">schemaVersion · data</text>
<text class="small" x="84" y="294">Envelope и payload имеют разных owners.</text>
<path class="line" d="M360 326 L360 402"/>
<rect class="panel" x="54" y="418" width="612" height="154" rx="18"/>
<text class="label" x="84" y="460">2. Delivery boundary</text>
<text class="muted" x="84" y="498">Передаёт event consumer-у.</text>
<text class="small" x="84" y="534">Delivery не равна доменному факту.</text>
<path class="line" d="M360 572 L360 648"/>
<rect class="accent" x="54" y="664" width="612" height="192" rx="18"/>
<text class="label" x="84" y="706">3. Consumer: сначала проверка</text>
<text class="code" x="84" y="746">validate envelope → contract</text>
<text class="code" x="84" y="780">schema version → projection</text>
<text class="small" x="84" y="820">Unknown schema не создаёт effect.</text>
<path class="line" d="M360 856 L360 932"/>
<rect class="panel" x="54" y="948" width="612" height="142" rx="18"/>
<text class="label" x="84" y="990">4. Versioned result ledger</text>
<text class="code" x="84" y="1028">consumerId : source : id</text>
<text class="small" x="84" y="1062">resultVersion объясняет интерпретацию.</text>
<path class="line" d="M652 506 C704 506 704 796 652 796"/>
<rect class="warn" x="432" y="364" width="234" height="88" rx="16"/>
<text class="label" x="452" y="400">Duplicate / replay</text>
<text class="small" x="452" y="430">тот же source:id</text>
</svg>