. On the consumer side, there are some common variations: Потоковая передача событий. Все события записываются в журнал.

Event streaming: Events are written to a log. События в пределах каждой секции строго упорядочены и сохраняются в течение долгого времени. Events are strictly ordered (within a partition) and durable.

Клиенты не подписываются на поток, а просто считывают события из любой его части. Clients don't subscribe to the stream, instead a client can read from any part of the stream. Каждый клиент самостоятельно управляет своим положением в потоке.

The client is responsible for advancing its position in the stream. Это означает, что клиент может подключиться в любое время и (или) прослушать события повторно. That means a client can join at any time, and can replay events.

События доставляются практически мгновенно, что позволяет потребителям немедленно реагировать на происходящие события. Events are delivered in near real time, so consumers can respond immediately to events as they occur. Поставщики не связаны с потребителями — ни один поставщик не знает, кто прослушивает его события.

Producers are decoupled from consumers — a producer doesn't know which consumers are listening. Потребители также не зависят друг от друга, и каждый из них получает все события. Consumers are also decoupled from each other, and every consumer sees all of the events.

Это важное отличие от шаблона конкурирующих клиентов, в котором пользователи извлекают сообщения из очереди, и каждое сообщение обрабатывается только один раз (если не возникает ошибок). This differs from a Competing Consumers pattern, where consumers pull messages from a queue and a message is processed just once (assuming no errors). В некоторых системах, таких как Интернет вещей, события обрабатываются в огромных объемах

.

In some systems, such as IoT, events must be ingested at very high volumes.

  • Подсистемы получают независимые представления потока событий. Subsystems have independent views of the event stream.

    Стиль архитектуры, управляемой событиями - Azure Application Architecture Guide | Microsoft Docs В основе управляемой событиями архитектуры может лежать модель публикации и подписки или модель потока событий. An event driven architecture can use a pub/sub model or an event stream model. Обработка потока событий. Платформу потоковой передачи данных, например Центр Интернета вещей Azure или Apache Kafka, можно использовать как конвейер для приема событий и передачи их в обработчики потоков. Use a data streaming platform, such as Azure IoT Hub or Apache Kafka, as a pipeline to ingest events and feed them to stream processors.

    Обработчики потоков определенным образом реагируют на эти процессы или преобразовывают поток. The stream processors act to process or transform the stream. Может существовать несколько обработчиков потока для разных подсистем приложения.

    There may be multiple stream processors for different subsystems of the application. Такой подход хорошо подходит для рабочих нагрузок Интернета вещей. This approach is a good fit for IoT workloads.

    Источник событий может находиться за пределами системы, например это могут быть физические устройства в решении Интернета вещей. The source of the events may be external to the system, such as physical devices in an IoT solution. В такой ситуации система должна поддерживать прием данных в таких объемах и на такой скорости, которые соответствуют характеристикам источника данных.

    In that case, the system must be able to ingest the data at the volume and throughput that is required by the data source.

  • Для обработки в режиме реального времени, с минимальными задержками
    . Real-time processing with minimum time lag.

    Обработка сложных событий. Объект-получатель обрабатывает последовательность событий и отслеживает в них определенные закономерности с помощью некоторого технологического решения, например Azure Stream Analytics или Apache Storm.

    A consumer processes a series of events, looking for patterns in the event data, using a technology such as Azure Stream Analytics or Apache Storm. Например, можно выполнять статистическую обработку показаний встроенного устройства за некоторый период времени, чтобы создавать уведомления, когда скользящее среднее значение выходит за определенные пороговые значения. For example, you could aggregate readings from an embedded device over a time window, and generate a notification if the moving average crosses a certain threshold.

  • Отправители и получатели независимы друг от друга. Producers and consumers are decoupled.
  • Время чтения: 3 мин
  • Гарантированная доставка. В некоторых системах, особенно в среде Интернета вещей, важно гарантировать доставку событий. In some systems, especially in IoT scenarios, it's crucial to guarantee that events are delivered.

  • Нет требуется интеграция "от точки к точке". No point-to point-integrations. Очень легко добавлять в систему новые объекты-получатели.

    It's easy to add new consumers to the system.

  • Объекты-получатели могут реагировать на события сразу при их поступлении. Consumers can respond to events immediately as they arrive.

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

    . An event-driven architecture consists of event producers that generate a stream of events, and event consumers that listen for the events. На представленной выше логической схеме каждый тип потребителя обозначен отдельным блоком.

    In the logical diagram above, each type of consumer is shown as a single box. На практике обычно используется несколько экземпляров каждого поставщика, чтобы они не становились единой точкой отказа. In practice, it's common to have multiple instances of a consumer, to avoid having the consumer become a single point of failure in system.

    Наличие нескольких экземпляров также может требоваться для обработки событий в нужных объемах и (или) с нужной скоростью. Multiple instances might also be necessary to handle the volume and frequency of events. Кроме того, каждый объект-получатель может обрабатывать события в нескольких потоках.

    Also, a single consumer might process events on multiple threads. Это может создать проблемы, если события должны обрабатываться в порядке или строго один-один раз семантику. This can create challenges if events must be processed in order or require exactly-once semantics. руководство по минимизации координации.

    Когда следует использовать эту архитектуру When to use this architecture

  • Для обработки одних и тех же событий несколькими подсистемами. Multiple subsystems must process the same events. Публикация и подписка.

    Инфраструктура обмена сообщениями поддерживает список подписок. Pub/sub: The messaging infrastructure keeps track of subscriptions. Каждое публикуемое событие отправляется каждому подписчику.

    When an event is published, it sends the event to each subscriber. Полученное сообщение нельзя воспроизвести повторно. Также оно не доставляется тем подписчикам, которые добавляются позднее.

    After an event is received, it cannot be replayed, and new subscribers do not see the event.

  • Высокая масштабируемость и распределение. Highly scalable and distributed.

  • Обработка событий в строгом порядке и (или) строго один раз. Processing events in order or exactly once. Каждый тип потребителя обычно выполняется на нескольких экземплярах, чтобы обеспечить надежность и масштабируемость.

    Each consumer type typically runs in multiple instances, for resiliency and scalability. Это создает некоторые трудности, если события должны обрабатываться в строгом порядке (для каждого типа потребителя) или логика их обработки не является идемпотентной. This can create a challenge if the events must be processed in order (within a consumer type), or if the processing logic is not idempotent.

    Стиль архитектуры, управляемой событиями Event-driven architecture style

  • При больших объемах и скоростях поступления данных, например в Интернете вещей. High volume and high velocity of data, such as IoT. Обработка простых событий. Каждое событие немедленно запускает действие в объекте-получателе. An event immediately triggers an action in the consumer.

    Например, в Функциях Azure можно создать триггер служебной шины, который будет выполнять некоторую функцию при каждой публикации сообщения в определенном разделе служебной шины. For example, you could use Azure Functions with a Service Bus trigger, so that a function executes whenever a message is published to a Service Bus topic.

  • Для обработки сложных событий, например сопоставления шаблонов или статистической обработки за некоторый период.

    Complex event processing, such as pattern matching or aggregation over time windows. Architect, interior designer, textile designer. JL Architecture, Ma+Ma Studio, Tú Textiles.

    A renovation of a 1952 midcentury modern gem in Rancho Mirage. #Repost @laraswimmer Danger Takes a Vacation house Jill Lewis @jl_architecture Instagram Photos and Videos

  • Yooying Yooying Discover Inspirations What's hot Girls Travel Funny #Love #Instagood #Beautiful #pool #poolside #lappool #desert #house #home #dwell #maison #casa #interiordesign #insideoutside #modern #residential #architecture #palmsprings #socal #cali #ca 66 2 660 Following Pool time at the year round sunshine spot in the desert 📷 @laraswimmer @palmpacific @scott.

    Cullens @fleetwood_windows_doors #interiors #moviecolony #psiloveyourhouse #pool #poolside #poolday #pooldesign #indooroutdoor #decor #decoration #desert #desertlife 57 3 #skihouse #blackandwhite #cabin #interiors #architect #design #moderndesign #modernhomedesign #SIPS #modernarchitecture #steel #modernclassic #designlife #architecture #design #decor #designideas #homeideas #designdetails #architecturephotography #sfarchitect #modernhome #bend #vacationhome 56 1 1,489 Followers #sectiondrawing #ranchomiragelife #desert #desertarchitecture #1952 #coachellavalley #archicad #midcenturymodern #modern 35 0 @ jl _architecture @palmpacific #poolside #poolsofinstagram #pool #custom #desert #home #house #maison #casa #socal #cali #palmsprings #ca 58 1 #beforeandafter shot of our recent renovation in #buenosaires where we removed (a lot of) walls to bring light in from all sides of this apartment and transform a series of dark, closed-off spaces into a light-filled, happier home. Jill Lewis @ jl _architecture #renovation #daylight #customtable #kitchen #simplicity #white 72 2 #thunderbird8 #landscapedesign Today was spent on my own #homesweethome - installing art and this hefty mirror we brought from Buenos Aires, placing new #lamps and this “tray” we sourced online (which is actually a wall mirror with a deep frame - so sneaky). Next up: installing the #light over the dining table!.

    From @lanacioncom and @revistaliving magazine #mexicanfencepost #ranchomirage #palmsprings #desert 28 1 (An enhanced translation!) #pacificheights #victorian #blue #sf #livingroomdecor #living #dining #diningroom #jonathanadler #cubist #brass #interiordesign #bkfchair #chiangmai #fabric #alpaca 67 11 📷 Daniel Sheehan - - - - - - @silvinabidabehere 📷 @pompigutnisky. #palm springs #marble #fireplace #powder #wallpaper #leather #pendant #interiors #decor #design 37 0 #bendoregon. Listening to the kids speculate on the meaning of this one. 👥 27 0 #real life #kitchen #beijingmemories 27 3 #sanfrancisco #sidewalkmessages THUNDERBIRD 8 “The original fireplace framed in antique arabescato marble was modernized with a gas line. The powder room (right) was completely renovated, with black cement tiles ("Plano" by @noi_estudio ) installed in vertical soldier-courses, combined with Cole & Son Malachite wallpaper.

    ” On the boards: @ jl _architecture with @palmpacific. #schematics #keepitsimple #ranchomirage #desertarchitecture #palmspringsdesign #hardscape #trellis #cabana #hut 45 2 Happy Summer Solstice - with a few more views from the poolside and master bedroom of the sublime #CasaCabelleros a custom residence designed by @ jl _architecture and built by @palmpacific 🌞 cabana studies 544 Posts.