<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>介绍 on Eventboat</title><link>https://eventboat.dev/zh/docs/introduction/</link><description>Recent content in 介绍 on Eventboat</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Sat, 05 Sep 2026 01:05:51 +0800</lastBuildDate><atom:link href="https://eventboat.dev/zh/docs/introduction/index.xml" rel="self" type="application/rss+xml"/><item><title>什么是 Eventboat？</title><link>https://eventboat.dev/zh/docs/introduction/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://eventboat.dev/zh/docs/introduction/overview/</guid><description>&lt;p&gt;Eventboat 通过有向无环图（DAG）路由事件——从&lt;strong&gt;源&lt;/strong&gt;（Kafka、HTTP、cron、SQL、文件）&#10;到&lt;strong&gt;汇&lt;/strong&gt;（Kafka、HTTP、文件），保证 at-least-once 投递、死信可查可回放。&lt;/p&gt;</description></item><item><title>架构</title><link>https://eventboat.dev/zh/docs/introduction/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://eventboat.dev/zh/docs/introduction/architecture/</guid><description>&lt;h2 id="三层模型"&gt;三层模型&#10;&lt;/h2&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-7600bf6f-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="" data-td-line-count="3"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-7600bf6f-fence-0-viewport" data-td-code-viewport&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;YAML (+overlay) → Config（类型化）→ Static IR → Runtime Engine&#10; ↓&#10; Source → Transform → Sink 插件&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Config 层&lt;/strong&gt;：YAML 解析、严格 schema 校验、变量替换&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Static IR&lt;/strong&gt;：校验后的 DAG + 预编译 CEL 程序 + Starlark 程序 + schema&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Runtime&lt;/strong&gt;：spool + settle + checkpoint 引擎，只消费 IR&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="可靠性模型"&gt;可靠性模型&#10;&lt;/h2&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-7600bf6f-fence-1" data-td-code data-td-code-auto-id&#10; data-td-language="" data-td-line-count="3"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-7600bf6f-fence-1-viewport" data-td-code-viewport&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;source → [spool: 追加式持久队列] → 内存 DAG → sinks&#10; │ │&#10; └── checkpoint ←── settle 跟踪 ←── 终态&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Spool&lt;/strong&gt;：每条消息先落 SQLite 再进 DAG（不变量 1）&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Settle&lt;/strong&gt;：消息的全部分支到达终态即 settle&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Checkpoint&lt;/strong&gt;：只推进已 settle 的连续前缀（不变量 2）&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;崩溃恢复&lt;/strong&gt;：kill -9 → 重启 → 从 checkpoint 重放，绝不丢（不变量 3）&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;死信&lt;/strong&gt;：重试耗尽 → 死信库（可查询 + 可回放）&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="七条不变量测试"&gt;七条不变量测试&#10;&lt;/h2&gt;&#10;&lt;p&gt;每条都有专属测试，CI 必须通过：&lt;/p&gt;</description></item></channel></rss>