Sobes.tech
Back to questions
Senior
6

[имя] спросил: расскажите про event-driven архитектуру.

Companies where asked
BSS

Answer from AI

sobes.tech AI

Event-driven архитектура — это подход к построению приложений, где компоненты взаимодействуют друг с другом через события. Вместо прямого вызова методов, система реагирует на события, которые могут быть сгенерированы пользователем, системой или внешними источниками.

Основные особенности:

  • Асинхронность: обработка событий происходит независимо, что улучшает масштабируемость и отзывчивость.
  • Декуплирование компонентов: отправитель события не знает, кто и как его обработает.
  • Гибкость и расширяемость: легко добавлять новые обработчики событий без изменения существующего кода.

Пример на Go с использованием каналов для передачи событий:

package main

import (
    "fmt"
    "time"
)

type Event struct {
    Name string
    Data interface{}
}

func eventProducer(events chan<- Event) {
    for i := 0; i < 5; i++ {
        events <- Event{Name: "tick", Data: i}
        time.Sleep(time.Second)
    }
    close(events)
}

func eventConsumer(events <-chan Event) {
    for event := range events {
        fmt.Printf("Received event: %s with data %v\n", event.Name, event.Data)
    }
}

func main() {
    events := make(chan Event)
    go eventProducer(events)
    eventConsumer(events)
}

В этом примере eventProducer генерирует события, а eventConsumer их обрабатывает, взаимодействуя через канал, что иллюстрирует event-driven подход.