成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

事件流與事件溯源

系統
事件流是持續捕獲和存儲系統中發生的事件的過程。這些事件可以實時處理和分析,也可以存儲以供后續分析。

事件流和事件溯源是事件驅動架構中兩個相關但不同的概念。

事件流是持續捕獲和存儲系統中發生的事件的過程。這些事件可以實時處理和分析,也可以存儲以供后續分析。事件流通常用于需要實時處理大量數據的系統,如金融交易系統或社交媒體平臺。

以下是使用流行的Kafka消息系統在Go中進行事件流處理的簡單示例:

package main

import (
    "context"
    "fmt"
    "github.com/segmentio/kafka-go"
)

func main() {
    // 設置Kafka生產者以將事件發送到主題
    writer := kafka.NewWriter(kafka.WriterConfig{
        Brokers: []string{"localhost:9092"},
        Topic:   "my-topic",
    })

    // 發送一些事件到主題
    writer.WriteMessages(context.Background(),
        kafka.Message{
            Key:   []byte("key1"),
            Value: []byte("value1"),
        },
        kafka.Message{
            Key:   []byte("key2"),
            Value: []byte("value2"),
        },
    )

    // 設置Kafka消費者以從主題讀取事件
    reader := kafka.NewReader(kafka.ReaderConfig{
        Brokers: []string{"localhost:9092"},
        Topic:   "my-topic",
    })

    // 從主題讀取事件
    for {
        msg, err := reader.ReadMessage(context.Background())
        if err != nil {
            break
        }
        fmt.Printf("Received message: key=%s, value=%s\n", string(msg.Key), string(msg.Value))
    }
}

而事件溯源是一種構建系統的模式,將應用程序狀態的所有變化存儲為事件序列。這些事件然后可以用于在任何時間點重建應用程序的狀態。事件溯源通常用于需要可審計性、可追溯性或合規性的系統,如金融系統或醫療系統。

以下是在Go中使用內存事件存儲進行事件溯源的簡單示例:


package main

import (
    "fmt"
)

type Event struct {
    Type string
    Data interface{}
}

type EventStore struct {
    events []Event
}

func (store *EventStore) Append(event Event) {
    store.events = append(store.events, event)
}

func (store *EventStore) GetEvents() []Event {
    return store.events
}

type Account struct {
    id      string
    balance int
    store   *EventStore
}

func NewAccount(id string, store *EventStore) *Account {
    return &Account{
        id:      id,
        balance: 0,
        store:   store,
    }
}

func (account *Account) Deposit(amount int) {
    event := Event{
        Type: "deposit",
        Data: amount,
    }
    account.store.Append(event)
    account.balance += amount
}

func (account *Account) Withdraw(amount int) {
    if account.balance >= amount {
        event := Event{
            Type: "withdraw",
            Data: amount,
        }
        account.store.Append(event)
        account.balance -= amount
    }
}

func (account *Account) GetBalance() int {
    return account.balance
}

func main() {
    store := &EventStore{}
    account := NewAccount("123", store)

    account.Deposit(100)
    account.Withdraw(50)
    account.Deposit(25)

    events := store.GetEvents()
    for _, event := range events {
        switch event.Type {
        case "deposit":
            amount := event.Data.(int)
            fmt.Printf("Deposited %d\n", amount)
        case "withdraw":
            amount := event.Data.(int)
            fmt.Printf("Withdrew %d\n", amount)
        }
    }

    fmt.Printf("Final balance: %d\n", account.GetBalance())
}

事件溯源是通過將每個對聚合的修改記錄為事件并將其追加到連續流中的一種方法。要重建聚合的最終狀態,需要按順序讀取這些事件,然后將其應用于聚合。這與在創建、讀取、更新和刪除(CRUD)系統中執行的即時修改形成對比。在CRUD系統中,對記錄狀態的任何更改都存儲在數據庫中,實質上覆蓋了同

一聚合的先前版本。

一旦價格變化已保存到Products表中,只更新了價格本身,而行的其余部分保持不變。然而,如圖5.1所示,這種方法導致了先前價格和更改背后的上下文的丟失。

為了保留不僅新價格還包括關鍵元數據(如調整原因)的信息,將更改記錄為Events表中的事件。先前的價格在先前事件中保持不變,以便在需要時檢索。

為了實現有效的事件溯源,建議使用提供強大一致性保證并使用樂觀并發控制的事件存儲。在實踐中,這意味著當多個修改同時發生時,只有初始修改才能附加到流中。隨后的修改可能需要重試或可能會失敗。

責任編輯:趙寧寧 來源: 小技術君
相關推薦

2023-12-13 10:44:57

事件驅動事件溯源架構

2023-11-02 10:39:58

2013-04-22 15:40:00

Android開發觸摸事件與點擊事件區別

2025-03-10 00:15:00

Axon開源框架

2023-11-22 12:42:19

CQRS事件溯源

2013-05-14 11:08:23

AIR Android觸摸事件鼠標事件

2021-08-11 14:29:20

鴻蒙HarmonyOS應用

2022-08-22 10:29:16

APT溯源反溯源APT攻擊

2022-11-23 16:20:12

GPU編程流和事件開發

2022-11-30 07:33:14

Kafka數據消費Consumer

2013-08-22 17:17:39

.Net事件

2025-02-28 16:55:01

2023-02-07 07:25:36

Spring事件驅動

2024-07-01 08:27:05

KeyAndroid按鍵事件

2014-11-20 10:56:37

2013-07-18 14:59:39

UIViewsubview事件響應鏈

2016-10-20 19:07:10

Javascript事件冒泡與捕獲

2024-02-23 14:57:40

2009-12-28 09:24:58

WPF線程

2012-06-08 09:44:36

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区四区在线视频 | 亚洲码欧美码一区二区三区 | 2020亚洲天堂 | 女人夜夜春| 91在线观看| 亚洲视频免费观看 | 午夜在线免费观看 | 亚洲视频免费在线播放 | 在线成人| 无码日韩精品一区二区免费 | 亚洲精品一区二区三区 | 国产精品国产三级国产aⅴ浪潮 | 日韩精品久久久 | 国产一区二区电影 | 成人激情视频免费观看 | 日韩欧美一区二区三区免费看 | 免费观看一级毛片视频 | 免费午夜剧场 | 日干夜干 | 成人免费在线观看视频 | 国产一区二区在线视频 | 久久99精品久久久久久青青日本 | 久久久蜜臀国产一区二区 | 中国美女撒尿txxxxx视频 | 久草电影网 | 视频羞羞 | 青青艹在线视频 | www.99久久.com | 久久久久精 | 亚洲毛片 | va在线| 亚洲一区二区精品视频 | 成人三级在线观看 | 国产二区精品视频 | 中文字幕精品一区二区三区精品 | 国产免费一区 | 一区观看 | 精品国产乱码久久久久久果冻传媒 | 免费在线观看一区二区 | 精品国产91亚洲一区二区三区www | 九九精品在线 |