rita:利用 NATS 實現以事件為中心和反應模式的工具包
Rita 是一個構建在NATS之上的各種以事件為中心和反應式抽象的工具包。
主要功能:
- 型別登錄檔
- 從字串到型別的透明對映
- 支援標註型別、事件、狀態、命令等。
- 事件儲存eventstore
- JetStream 上的層用於事件儲存
- 來自 nats 訊息的編碼器到/解碼器
- 具有事件儲存語義的簡單 api
- 每個商店對映到一個流
- 事件源狀態
- 事件源狀態表示模型
- 使用者實現型別的介面
- 對映到一個主題
- 快照或狀態達到某個序列以進行按需更新
儘管事件溯源涉及將狀態轉換建模和持久化為事件,但我們仍然需要派生狀態以便在收到命令時做出決策。
從根本上說,我們有一個狀態模型,然後我們需要在給定每個事件的情況下進化狀態。我們可以將其建模為 Go 中的介面。
type Evolver interface { Evolve(event *Event) error } |
一個實現將如下所示:
type Order struct { // fields.. } |
func (o *Order) Evolve(event *Event) error { // Switch on the event type or data (if using the type registry). switch e := event.Data.(type) { } } |
給定這個模型,為了方便,我們可以使用Evolveon 方法。EventStore
var order Order lastSeq, err = es.Evolve("orders.1", &order) |
這也適用於使用主題萬用字元的橫切狀態(所有訂單)。
var orderList OrderList lastSeq, err = es.Evolve("orders.*", &orderlist) |
相關文章
- CRM實現以客戶為中心 (轉)
- 建立以 API 為中心的 Web 應用APIWeb
- Gartner:85%的企業支援以產品為中心的應用交付模式模式
- 以應用為中心的企業混合雲管理
- [譯] 以 Vue 為例,解釋 JavaScript 的反應性VueJavaScript
- 從以專案為中心轉向以組織為中心(轉)
- “以資料為中心”的數安實踐感悟
- 美創科技以資料為中心的安全治理實踐
- 以資料庫為中心的架構與以領域為中心的架構的區別 - DevSDhami資料庫架構dev
- ArgoCD + KubeVela:以開發者為中心的 GitOpsGoGit
- 以資料為中心的網路安全
- 阿里張磊:如何構建以應用為中心的“Kubernetes”?阿里
- MVVM設計模式和WPF中的實現(四)事件繫結MVVM設計模式事件
- 新零售下的新物流:以消費者為中心實現數字化跨越
- 青雲QingCloud推出以應用為中心的全新雲服務體系GCCloud
- 利用static來實現單例模式單例模式
- 【Azure 事件中心】為應用程式閘道器(Application Gateway with WAF) 配置診斷日誌,傳送到事件中心事件APPGateway
- OpsRamp推出以服務為中心的AIOps和雲監控功能AI
- 淺談利用 TEB 實現的反跟蹤 (6千字)
- Java 利用列舉實現單例模式Java單例模式
- Java反應式事件溯源:領域Java事件
- React實現全選和反選React
- 利用 K8S 的反親和性構建高可用應用K8S
- 解讀容器 2019:把“以應用為中心”進行到底
- 【遊戲設計】淺談快速反應事件(QTE)的應用遊戲設計事件QT
- 以Hub為中心節點的網路技術探析
- 波士頓諮詢:工作的未來——以人才為中心
- Go Web 應用中常見的反模式GoWeb模式
- NATS簡介
- 阿里張磊:如何構建以應用為中心的“Kubernetes”?(內含 QA 整理)阿里
- DataBinding點選事件沒有反應事件
- 應用設計模式和產品經理成為好朋友 | 策略模式實戰設計模式
- 通過釋出訂閱模式實現的事件委託模式事件
- SDP | 以「資料」為核心,實現場的數智化
- C++實現以秒為單位的計數器C++
- Spring AOP 的實現方式(以日誌管理為例)Spring
- Matlab 實現介面相應滑鼠事件Matlab事件
- React 中 getDerivedStateFromProps 的用法和反模式React模式