返回文章
2019年3月25日
MeiliES - 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 上提出問題 🎉