revise June 2021 event integration articles
Build and deploy / deploy (push) Successful in 15s

This commit is contained in:
2026-07-31 12:46:37 +03:00
parent 32e0550f4f
commit 2da66c5725
7 changed files with 1185 additions and 1 deletions
@@ -0,0 +1,54 @@
<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>

After

Width:  |  Height:  |  Size: 3.4 KiB