簡體   English   中英

AKKA.NET日記和快照存儲

[英]AKKA.NET Journals and Snapshot Store

由於我還沒有看到使用AKKA.NET Journals和Snapshot存儲庫的任何示例,因此我假設必須同時使用兩種類型的參與者來實現事件存儲庫和CQRS。

  1. 是應該在每次更改actor狀態時都更新Snapshot存儲區,還是應該在計划的更新中將其設置為每10秒更新一次?

  2. Snapshot存儲參與者是否應該僅與Journal參與者對話,因此具有狀態的參與者不應同時與Journals和Snapshot對話? 我在考慮SOC。

  3. 假設我必須關閉服務器並備份。 用戶嘗試通過Web UI訪問產品(例如計算機)。 那時,actor系統中不存在product actor。 要檢索產品的狀態,我不應該去快照存儲而不是運行所有日記來重新創建狀態嗎?

實際上,在Akka.Persistence中,Journal和SnapshotStore都是actor,用於從特定的持久提供程序中抽象出actor。 您幾乎永遠不需要直接使用它們PersistentViewPersistentActor在后台自動使用它們。

  1. 如果持久性參與者有大量事件要恢復,則快照存儲是優化參與者恢復速度的唯一方法。 在分布式環境中,沒有事件源的快照並不意味着實現持久性 好的主意是讓計數器在持久性參與者處理完X個事件后生成快照。 基於時間的更新沒有意義-在許多情況下,參與者可能在指定時間內沒有發生變化。 性能也很差(很多不必要的循環)。

  2. SnapshotStore和日記之間互不了解。 Akka.Persistence持久性參與者具有內置的恢復機制,該機制可從SnapshtoStores和Journals處理參與者的狀態恢復,並公開與之通信的方法。

  3. 正如我所說,您可能不希望直接與快照存儲和日志進行通信。 這就是持久性參與者/持久性觀點的目的。 Ofc您可能只是直接從后端存儲中讀取actor狀態,但是如果在最近保存的快照等之后沒有其他事件,則應該進行比較。在不同工作節點上創建持久actor /視圖是一個更好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM