Событие (вычисление)

В вычислительной технике событие — это обнаруживаемое событие или изменение в состоянии системы, например, пользовательский ввод, аппаратные прерывания, системные уведомления или изменения в данных или условиях, которые система должна отслеживать. События вызывают ответы или действия и являются основополагающими для систем, управляемых событиями. Эти события могут обрабатываться синхронно, когда поток выполнения блокируется до тех пор, пока обработчик событий не завершит свою обработку, или асинхронно, когда событие обрабатывается независимо, часто через цикл событий. Даже когда синхронная обработка, по-видимому, блокирует выполнение, базовый механизм во многих системах все еще асинхронен и управляется циклом событий. [1] [2]

События могут быть реализованы с помощью различных механизмов, таких как обратные вызовы, объекты сообщений, сигналы или прерывания, а сами события отличаются от используемых механизмов реализации. Модели распространения событий, такие как всплытие, захват и публикация/подписка, определяют, как события распределяются и обрабатываются в системе. Другие ключевые аспекты включают циклы событий, постановку в очередь и приоритезацию событий, источник событий и сложные шаблоны обработки событий. Эти механизмы способствуют гибкости и масштабируемости систем, управляемых событиями. [1] [2]

События против сообщений

В распределенных системах события представляют собой факт или изменение состояния (например, OrderPlaced ) и обычно транслируются асинхронно нескольким потребителям, способствуя слабой связанности и масштабируемости. Хотя события обычно не ожидают немедленного ответа, механизмы подтверждения часто реализуются на уровне инфраструктуры (например, смещения коммитов Kafka, статусы доставки SNS), а не являются неотъемлемой частью самого шаблона событий. [3] [4]

Напротив, сообщения выполняют более широкую роль, охватывая команды (например, ProcessPayment ), события (например, PaymentProcessed ) и документы (например, DataPayload ). Как события, так и сообщения могут поддерживать различные гарантии доставки, включая at-least-once, at-most-once и exact-once, в зависимости от технологического стека и реализации. Однако exact-once доставка часто достигается с помощью механизмов идемпотентности, а не истинной семантики exact-once на уровне инфраструктуры. [3] [4]

Шаблоны доставки как для событий, так и для сообщений включают публикацию/подписку (один ко многим) и точку-точку (один к одному). Хотя запрос/ответ технически возможен, он чаще ассоциируется с шаблонами обмена сообщениями, а не с чистыми системами, управляемыми событиями. События превосходны в распространении состояния и разъединенных уведомлениях, в то время как сообщения лучше подходят для выполнения команд, оркестровки рабочего процесса и явной координации. [3] [4]

Современные архитектуры обычно сочетают оба подхода, используя события для распределенных уведомлений об изменении состояния и сообщений для целевого выполнения команд и структурированных рабочих процессов на основе определенных требований к срокам, порядку и доставке. [3] [4]

Стратегии развития событий

В распределенных системах эволюция событий создает проблемы, такие как управление несогласованными схемами событий между службами и обеспечение совместимости во время постепенных обновлений системы. Стратегии эволюции событий в архитектурах, управляемых событиями (EDA), могут гарантировать, что системы могут обрабатывать изменения событий без сбоев. Эти стратегии могут включать события управления версиями, такие как семантическое управление версиями или эволюция схем, для поддержания обратной и прямой совместимости. Адаптеры могут переводить события между старыми и новыми форматами, обеспечивая согласованную обработку между компонентами. Эти методы могут позволить системам развиваться, оставаясь совместимыми и надежными в сложных распределенных средах. [1]

Смотрите также

Ссылки

  1. ^ abc Проектирование систем, управляемых событиями . O'Reilly Media. ISBN 9781492038245.
  2. ^ ab Fowler, Martin (2003). Patterns of Enterprise Application Architecture . Addison-Wesley Professional. ISBN 978-0321127426.
  3. ^ abcd Клеппманн, Мартин (2017). Проектирование приложений с интенсивным использованием данных: Великие идеи, лежащие в основе надежных, масштабируемых и обслуживаемых систем . O'Reilly Media. ISBN 978-1449373320.
  4. ^ abcd Создание микросервисов, управляемых событиями: использование организационных данных в масштабе . ISBN 978-1492057895.
  • Статья Обработчики событий и функции обратного вызова
  • Высокоуровневое проектирование обработчика событий подфермы
  • Синтаксис событий для XML
  • Распределенные события и уведомления
  • Порядок событий
  • Java DOM Interface Event Javadoc- документация
  • java.awt.eventПакет Java Javadoc Документация API
  • javax.swing.event Пакет Java Javadoc Документация API
  • Написать обработчик событий
  • Понимание событий (журналы и метрики)
Взято с "https://en.wikipedia.org/w/index.php?title=Событие_(вычисления)&oldid=1268681243"