2. План
• Что такое SEDA?
• Примеры использования
• Из чего строится SEDA?
3. Stage Event Driven Architecture
SEDA – архитектура для построения систем
массового обслуживания.
Название “SEDA” впервые прозвучало в
2000, но сами идеи имеют более глубокие
корни.
4. SEDA, терминилогия
Ступень (stage) – процедура обрабатывающая
событие.
Событие (event) – собщение, которым
обмениваются ступени.
Очередь (queue) – буфер входных событий
для ступени.
8. SEDA, нефункциональная
• Независаимый тюнинг ступеней и очередей
– пулы потоков, размер очередей, приоритеты
• Пакетная обработка запросов
• Отказоустойчивость
• Мониторинг
9. SEDA транзакции
Txn Txn Txn
Atomicity Consistency Isolation Durability
“Eventual atomicity” – если тразакция стартовала,
то все её шаги неминуемо будут выполнены.
10. SEDA, распределённая обработка
Вертикаль – распределение ступеней по разным
серверам.
Горизонталь – распределение нагрузки на
ступень, по кластеру.
Комбинирование вертикального и горизонтального
подхода.
Перемещение вычислений к данным.
12. Биллинг, cписание средств
Выбоpка Коммит
Рестарт, оптимисти
Расчёт транзакции Отправка
текущего
Декодирование баланса блокировки
ческой подтверждениями
списания“в памяти”
события
Выборка
правил
Асинхронная запись
тарификации
в БД
13. Биллинг, списание средств
• Распределиние нагрузки по кластеру
• Параллельное выполнение операций в
рамках одной транзации
• Гарантированную асинхронную запись в БД
• Объединение транзакций в БД
15. Web, каталог продуктов
• Распределение нагрузки по кластеру
• Ограничение CPU на фоновые задачи
• Пакетное выполнение “тяжёлых” операций
• Версионность + “eventual atomicity” ->
консистентность изменений
17. Технологии
• Emule ESB • jeanslee.org
• Apache Camel • JCyclone
• Erlang/OTP • BPEL
… and counting
18. SEDA своими руками
• Очереди событий
– распределение
нагрузки, надёжность, транзакционность, …
• Хранилище состояния для ступеней
– лишь малое количество ступеней имеют состояние
19. Data Grid как основа SEDA
Data Grid:
– Управление кластером
– Совместный доступ к данным
– Удалённые вызовы
– Отказоустойчивость
20. Спасибо
Алексей Рагозин
Руководитель направления Oracle Coherence
GridDynamics – Scaling mission-critical systems