Что такое SEDA (поэтапная архитектура, управляемая событиями)? - PullRequest
26 голосов
/ 26 августа 2010

SEDA: архитектура для хорошо масштабируемых и масштабируемых интернет-сервисов

"SEDA - это аббревиатура для поэтапной управляемой событиями архитектуры , которая разбирает сложныйуправляемое событиями приложение в набор этапов , соединенных очередями . "

Я понимаю, что это архитектура и что существует много реализаций SEDA (см. статья в Википедии ).Что такое «сцена»?Может ли кто-нибудь дать исчерпывающую сводную информацию о поэтапной архитектуре, управляемой событиями, и чем она отличается от традиционной (неустановленной?) Архитектуры, управляемой событиями?

Ответы [ 3 ]

15 голосов
/ 18 ноября 2011

Этап аналогичен «Событию».Чтобы упростить эту идею, представьте, что SEDA представляет собой серию событий, отправляющих сообщения между ними.

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

Если вы используете Java TPE, вы можете отслеживать работоспособность, пропускную способность, ошибки, задержку на каждом этапе и быстро находить узкое место в производительности.И, как приятный побочный эффект, с небольшими фрагментами кода вы можете легко протестировать их и увеличить охват кода (это был мой случай).

Для справки, это внутренняя архитектура Cassandra (NoSQL)и Mule ESB (AFAIK).

Рекомендую прочитать оригинальную статью (извините, дублирующая ссылка):

Воткаркас, который я создал для моделирования SEDA для Java EE: http://code.google.com/p/seide/

9 голосов
/ 08 мая 2017

Архитектура потоков против поэтапной архитектуры Event-Drive в реальной жизни:

Представь, что у тебя есть ресторан. Теперь, как это будет работать?

с «Архитектурой потока»:

  1. Клиент прибывает
  2. Официант (а) идет к нему / ней
  3. Официант (а) ведет его к одному доступному столу
  4. Официант (а) принимает заказ
  5. Официант (а) готовит заказ
  6. Официант (а) принимает к заказу к столу
  7. Официант (а) ждет, пока клиент закончит свою трапезу, чтобы заплатить
  8. Официант (а) выводит клиента

В этом случае официант находится с клиентом в течение всего процесса. Если на сервере 10 потоков, он может одновременно обрабатывать 10 соединений.

с SEDA:

  1. Клиент прибывает
  2. Официант (а) идет к нему / ней
  3. Официант (а) отводит его / ее к одному доступному столу (и возвращается к другому клиенту)
  4. Официант (б) принимает заказ (много операций ввода-вывода, занимает время)
  5. Повар готовит заказ
  6. Официант (с) принимает к заказу к столу
  7. Официант (d) ждет, пока клиент закончит свою трапезу, чтобы заплатить
  8. Официант (е) выводит клиента

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

Это крайний пример, и, конечно, с помощью многопоточных серверов можно выполнить некоторые асинхронные задачи. Это только теоретический пример.

1 голос
/ 30 декабря 2016

Документы доступны на GitHub

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

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

Я бы попросил вас прочитать прилагаемый PDF-файл, поскольку в нем упоминается необходимость в очереди событий для разделения содержимого, логической компенсации для достижения максимальной эффективности компонента, как эффективно использовать существующие ресурсы, над которыми приложение работает как сеть , память, циклы процессора и т. д.,

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

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

Чтобы добавить измерение событий в SEDA, подумайте о том, как группы людей общаются друг с другом, и о количестве событий, которые в них участвуют. Скажем, к примеру, у ребят этапа 1 закончились гайки и болты, и они немедленно информируют менеджера отдела заказов о гайках и болтах. Вполне возможно, что менеджер отдела заказов получил аналогичный запрос от другого сотрудника 6-го этапа, что у него закончились гайки и болты. Теперь он видит запросы в центральной точке (он похож на контроллер в SEDA) и на листе Excel, в котором он хранит все записи, в которых он хранит запросы на размещение заказов (как очередь в SEDA), он объединяет их и заказывает их вместе за один раз вместо отправки двух запросов (управление потоками и расписанием в SEDA).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...