Thalo 是用于构建分布式系统的事件源运行时。[url=https://wasmtime.dev/]它建立在组件的Wasmtime[/url]之上,并使用消息数据库作为消息存储。
聚合体由任何支持的编程语言编译成wasm,并发布到注册表,由运行时用于处理命令。
什么是事件溯源
事件溯源是基于不可变事件的编程模式,这些事件充当应用程序的真实来源。
与传统的面向状态的方法不同,您的数据由小事件组成,您的模型可以通过一个一个地重放这些事件来计算读取模型来构建。
事件溯源的一个常见示例是会计,其中您的银行余额是所有交易(也称为事件)的总和。一个更熟悉的使用事件溯源的技术是 Git。
有什么好处?
- 可扩展性
事件源系统可以以非常松散耦合的并行方式运行,提供出色的水平可扩展性和系统故障恢复能力。 - 时间旅行
通过存储不可变事件,您可以在任何时间点确定应用程序状态。 - 表现力模型
事件是系统中的一流对象,显示数据更改背后的意图。它使隐式显式。
事件溯源和 CQRS 生态系统似乎由 C# 和 Java 主导。Thalo 旨在使用 WebAssembly 扩大这一范围,允许使用任何支持的语言编写组件,而不仅仅是 Rust。
ESDL - 事件溯源模式定义语言
聚合、命令和事件以ESDL 模式语言定义。
这允许更具可读性的聚合定义,并提供代码生成来生成类型和特征。
的示例.esdl可以在 中找到examples/bank_account/bank_account.esdl。
counter.esdl
version = "0.1.0" |
counter.rs:
#[derive(Aggregate, Serialize, Deserialize)] |
构建发布:
# Build your component |
例子包括:
所有示例都可以在目录中看到examples。