Что такое консенсус

«Что такое консенсус» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Консенсус — это механизм согласования состояния данных между узлами распределённой системы, обеспечивающий их согласованность даже при сбоях. В Golang часто реализуется через алгоритмы вроде Raft или Paxos.

Пример с Raft (используя библиотеку hashicorp/raft):

config := raft.DefaultConfig()
config.LocalID = raft.ServerID("node1")
store := raft.NewInmemStore()
snapshotStore := raft.NewInmemSnapshotStore()
transport := raft.NewInmemTransport("node1")

raftNode, err := raft.NewRaft(
    config,
    NewFSM(), // ваша реализация конечного автомата
    store,
    store,
    snapshotStore,
    transport,
)

Ключевые свойства консенсуса:

  • Лидер выбирается для координации записи
  • Записи реплицируются на большинство узлов
  • Система остаётся доступной при отказе меньшинства узлов