Как работает асинхронная репликация

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

Ответ

Асинхронная репликация в Golang реализуется через горутины и каналы. Основной поток продолжает работу, не дожидаясь завершения репликации. Пример:

func asyncReplicate(data string, ch chan<- bool) {
    // Имитация долгой операции репликации
    time.Sleep(2 * time.Second)
    fmt.Println("Replicated:", data)
    ch <- true
}

func main() {
    ch := make(chan bool)
    go asyncReplicate("important data", ch)

    // Основной поток продолжает работу
    fmt.Println("Main continues working...")

    // Ожидание завершения (опционально)
    <-ch
}

Ключевые особенности:

  • Использует горутины для параллельного выполнения
  • Основной поток не блокируется
  • Каналы позволяют синхронизировать завершение
  • Возможна потеря данных при сбое (так как подтверждение не ждётся)