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 подход.