AI 驱动的混合搜索正在进行封闭测试。 加入等候名单,获取早期访问权限!

返回首页Meilisearch 的标志
返回文章
2019 年 3 月 25 日

MeiliES - Rust 中的事件溯源

Thomas Payet
Thomas PayetMeilisearch 联合创始人兼首席运营官@totolapaille
MeiliES - Event sourcing in Rust

今天我们发布 MeiliES,我们的事件存储,完全用 Rust 实现。

事件溯源是一种“将应用程序状态的所有更改捕获为一系列事件”的方法,正如 Martin Fowler 所描述的那样。服务器的第一个目的是将事件流的事件发布给订阅的客户端。客户端还可以指定从哪个事件号开始读取,因此可以通过仅使用新事件重建状态来从崩溃中恢复。

由于消息队列不是为事件溯源而设计的,因此可用于事件溯源的应用程序很少:主要选择是EventStore,一个用 C# 制作的事件溯源数据库。
因此,我们开始使用 EventStore 来满足我们的事件溯源需求,并遇到了一些问题

  • 可移植性:EventStore 是用 C# 构建的,并使用 mono,这使得它很难在 UNIX 上安装和运行
  • 支持:我们询问了有关 EventStore 商业支持的信息,但从未收到任何回复
  • 稳定性:Rust 客户端尚未投入生产,并且尽管做出了一些合并请求,但仍有很多工作要做,而许多可用功能对我们来说没有用。

因此,我们决定实现我们自己的事件存储来解决这些问题。

MeiliES 是一个使用 RESP(REdis 序列化协议)进行通信的事件溯源数据库。我们使用 Redis 协议来简化客户端的实现。通过使用完整的 Rust 实现,解决了可移植性问题(我们正在使用 Sled 作为内部存储)。

安装就像执行 cargo build --release 一样简单。如果您不想克隆存储库,可以从 Azure 管道下载二进制文件,或者使用 docker 运行它 docker run -p 6480:6480 --rm getmeili/meilies:latest

如果您对 MeiliES 有任何疑问,可以在 Twitter 上发送推文 @meilisearch 或在 GitHub 上提出问题 🎉

How Meilisearch updates a database with millions of vector embeddings in under a minute

Meilisearch 如何在一分钟内更新数百万个向量嵌入的数据库

我们如何在向量存储中实现增量索引。

Tamo null
Tamo null2024 年 4 月 4 日
Meilisearch expands search power with Arroy's Filtered Disk ANN

Meilisearch 通过 Arroy 的过滤磁盘 ANN 扩展搜索能力

我们如何使用 Arroy 的过滤磁盘 ANN 实现 Meilisearch 的过滤功能

Clément Renault
Clément Renault2023 年 12 月 27 日
Multithreading and Memory-Mapping: Refining ANN performance with Arroy

多线程和内存映射:使用 Arroy 改进 ANN 性能

克服使用 Rust 增强 ANN 性能的挑战。

Clément Renault
Clément Renault2023 年 12 月 21 日