Что такое управление событиями и насколько быстро работает реальное время?

Завершено

Если мы задумаемся, мы можем определить множество сценариев, основанных на событиях. Многие из них требуют реакции в режиме реального времени.

Что мы имеем в виду в режиме реального времени?

Реакция в режиме реального времени может рассматриваться как немедленный ответ. Давайте рассмотрим пример кассира в кафе, который спрашивает вас, что вы хотите пить.

Кассир ожидает мгновенного ответа или, по крайней мере, ответ, который дан очень скоро. В противном случае кассир может переформулировать вопрос или заподозрить, что вы были грубым. Запрашивается быстрый и подходящий ответ. Время ответа может немного отличаться, но он по-прежнему рассматривается как "в режиме реального времени". Таким образом, возвращение приветствия должно произойти быстро, но это нормально подумать кратко о вашем заказе, чтобы ответить на вопрос кассира.

Если вы переводите этот сценарий в программные системы, все, что вам нужно, — это время отклика, время завершения, время доступа, время запуска и т. д. Пользователь или обращающееся к данным приложение определяет эти сроки.

Заметка

В режиме реального времени задачи систем выполняют свою функцию в течение определенных крайних сроков.

Вы всегда должны знать о том, что происходит в вашей системе. Поэтому убедитесь, что вы не забываете о очевидном, что это ведение журнала, мониторинг и измерение времени.

Важный

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

В результате мы согласны с тем, что в режиме реального времени означает очень быстро, мгновенно. Точная скорость определяется вашим заданным сценарием.

Приложения на основе событий

Если вы думаете о событии щелчка, вы задумываетесь о чем-то другом. Приложения, управляемые событиями, используют принцип "запуск и забывание". Событие отправляется или запускается в следующую систему, которая может быть другой службой, концентратором событий, потоком или брокером сообщений, например, Kafka. Мы не всегда ждем ответа от следующего в системе. Свободное связывание достигается ценой которой является конечная согласованность, которую нужно учитывать на другом уровне.

Чтобы определить характер приложений на основе событий, давайте рассмотрим основные шаблоны архитектуры, используя пример клиента с именем Алекс, покупая кофе и капучино.

Уведомление о событии

Уведомление о событии — это уведомление о конкретном событии или событии. Каждое событие рассматривается отдельно. Пример клиента с именем Алекс покупки кофе и капучино может выглядеть следующим образом:

1. Событие: Алекс покупает кофе.

2. Событие: Алекс покупает капучино.

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

Передача состояния через перенос событий

При передаче состояния с помощью событий вся необходимая информация сохраняется в одном событии. Это оказывается полезным, если событие теряется или ваша служба не отслеживает все события. В нашем примере события будут выглядеть следующим образом:

1. Событие: Алекс покупает кофе.

2. Событие: Алекс покупает, помимо кофе, капучино.

С одной баристой прослушивание только второго события будет достаточным. С двумя баристами, второй должен был посмотреть на первого. Заказ может быть выполнен вместе, но процесс может занять больше времени, чем выполнение его полностью отдельно.

Выбор событий

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

Со вторым заказом бариста знает, что заказ Алекса состоит из кофе, благодаря воспоминаниям о первом заказе, и капучино, потому что этот напиток был заказан только что. Работать параллельно со вторым баристой не так просто.

При добавлении кассира для получения заказов и обслуживания напитков бариста могут работать независимо, чтобы подготовить напитки. Они не должны знать ничего о клиентах. Кассир — это так называемое хранилище событий, которое сохраняет события в данном сценарии. Проектирование с использованием событий добавляет еще один уровень сложности, но оно также способствует разделению.

1. Событие: Алекс покупает кофе.

Кассир: (первый) заказ (для Алекса): Кофе

2. Событие: Алекс покупает капучино.

Кассир: второй заказ (для Алекса): Капучино

Визуализация, демонстрирующая event sourcing для покупки кофе.

Данные телеметрии — это события в режиме реального времени

Есть и другие примеры, о которых мы можем подумать. Представьте себе сценарий запуска системы охлаждения, например для производителей продуктов питания или лекарств. Вам нужен постоянный контроль температуры и других соответствующих данных в системе. Знание телеметрических данных и автоматическое управление ими будут критически важны для вашего успеха. Измерение телеметрии каждые две секунды и последующая её отправка в систему управления, где данные анализируются, обрабатываются и управляются, представляет собой систему управления, основанную на событиях. Кроме того, данные должны обрабатываться в режиме реального времени, так как важно быстро реагировать, чтобы избежать трагических последствий для бизнеса.