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) |
相關文章
- Gartner:85%的企業支援以產品為中心的應用交付模式模式
- 聊聊如何利用kafka實現請求-響應模式Kafka模式
- [譯] 以 Vue 為例,解釋 JavaScript 的反應性VueJavaScript
- 利用Spring Boot實現微服務的配置中心Spring Boot微服務
- “以資料為中心”的數安實踐感悟
- 阿里張磊:如何構建以應用為中心的“Kubernetes”?阿里
- 加速增長:以客戶為中心的供應鏈報告
- 美創科技以資料為中心的安全治理實踐
- 利用static來實現單例模式單例模式
- 以資料庫為中心的架構與以領域為中心的架構的區別 - DevSDhami資料庫架構dev
- OpsRamp推出以服務為中心的AIOps和雲監控功能AI
- python使用裝飾器實現的事件中心(監聽器)Python事件
- 增長的動力:以客戶為中心的供應鏈報告
- 【Azure 事件中心】為應用程式閘道器(Application Gateway with WAF) 配置診斷日誌,傳送到事件中心事件APPGateway
- 解讀容器 2019:把“以應用為中心”進行到底
- Java 利用列舉實現單例模式Java單例模式
- Cantata 24.04 全新發布:以程式碼為中心的測試實現革命性升級!
- Java反應式事件溯源:領域Java事件
- ArgoCD + KubeVela:以開發者為中心的 GitOpsGoGit
- Matlab 實現介面相應滑鼠事件Matlab事件
- 利用 K8S 的反親和性構建高可用應用K8S
- 元件間通訊--利用mitt實現事件匯流排元件MIT事件
- React實現全選和反選React
- 阿里張磊:如何構建以應用為中心的“Kubernetes”?(內含 QA 整理)阿里
- Go Web 應用中常見的反模式GoWeb模式
- React 中 getDerivedStateFromProps 的用法和反模式React模式
- 通過釋出訂閱模式實現的事件委託模式事件
- 【遊戲設計】淺談快速反應事件(QTE)的應用遊戲設計事件QT
- IAB:2020年以資料為中心的企業
- 以客戶端為中心的錯誤處理客戶端
- 六西格瑪 - 以客戶為中心的方法!
- 應用設計模式和產品經理成為好朋友 | 策略模式實戰設計模式
- NATS簡介
- 反應性和非反應性程式碼的分離 - DZone
- 設計模式:單例模式的使用和實現(JAVA)設計模式單例Java
- 棧的應用和實現
- SAP CRM Fiori 應用的 Deep Create 行為和實現分析
- 利用華為DTM將事件傳送到Firebase事件