Как обеспечить ordering?

Middle
114 просмотров
AFK Offer AI

Для одного процесса — канал или mutex. Для распределённой системы: sequence number на каждое сообщение, ordering по partition key (Kafka), time-ordered ID (UUID v7). Важно различать: total ordering (все видят одинаковый порядок) и causal ordering (причина перед следствием). Total ordering через single leader или consensus. Causal — через vector clocks или Lamport timestamps.

Следующий вопрос

Найди баг: func getUser() (*User, error) { var u *User; if err := db.Find(&u); err != nil { return u, err }; return u, nil }