Детерминированная потоковая обработка — это основа для создания масштабируемых систем, управляемых событиями. Отсутствие детерминизма может быть очень болезненным для бизнеса (представьте себе потерю финансовых транзакций, пропущенные оповещения, неправильную агрегацию данных).
Существуют определенные советы и приемы реализации детерминизма. Ключевые слова здесь:
Временные метки Планирование событий Водяные знаки Время потока Вы должны понимать природу неупорядоченых и запоздалых событий. И стратегии их обработки.
Также необходимо поддерживать повторную обработку.
И нужно учитывать периодические сбои.
Основы событийно-управляемой обработки в архитектурах, управляемых событиями:
Типовая структура микросервиса Типовые типы трансформации событий, 2 сценария ветвления, слияние потоков Перепартиционирование событий и когда это может быть полезно Сопартиционирование событий и когда это необходимо Назначение партиций конкретному микросервису занимающемуся обработкой данных. Три стратегии для этого. Восстановление после сбоев микросервисов обработки данных без поддержки состояния. Эти темы раскрыты в главе 5 книги, которую мы сейчас изучаем:
“Создание событийно-управляемых микросервисов” Адама Беллемара.
Освобождение данных — это процесс перехода от монолита к микросервисам путем разделения систем с точки зрения зависимостей данных.
Существуют три паттерна для освобождения данных:
На основе запросов На основе журнала На основе таблиц У каждого паттерна есть свои плюсы и минусы, а также другие важные соображения.
Изменения определения данных (миграция структуры данных) также должны поддерживаться выбранным подходом к освобождению данных.
Существуют различные фреймворки/инструменты, которые упрощают процесс освобождения данных. Обратите внимание, что инструменты CDC не являются конечным пунктом вашей архитектуры, а всего лишь начальным шагом ваших измерений.
Управляемая событиями модель, сильно зависит от КАЧЕСТВА событий.
События хорошего качества:
явно определены через контракты содержат комментарии поддерживают эволюцию с обратной и прямой совместимостью поддерживают генерацию кода ломающие изменения хорошо продуманы События хорошего качества реализуются с помощью правильных инструментов:
используйте форматы Avro/Thrift/Protobuf и никогда не используйте JSON! используйте правильный брокер событий (например, Pulsar) События хорошего качества проектируются так, чтобы:
содержать всю информацию, необходимую потребителям использовать отдельные потоки для каждого типа событий использовать правильные типы данных для своих полей (не используйте строки для чисел, используйте перечисления и т.
Введение в архитектуру микросервисов, управляемых событиями (EDM), состоит из следующих тем:
две топологии содержание событий три типа событий двойственность таблица-поток схемы для определения данных внутри событий принцип одного писателя функциональные возможности брокера событий брокер событий против брокера сообщений принцип единого источника истины масштабирование с помощью контейнеров и виртуальных машин налог на микросервисы, который мы должны платить Эти темы раскрыты в главе 2 книги, которую мы сейчас изучаем:
“Создание событийно-управляемых микросервисов” Адама Беллемара.
Книжный клуб нашей компании выбрал книгу о микросервисах. Это “Создание событийно-управляемых микросервисов” Адама Беллемара. Оригинал: “Building Event-Driven Microservices: Leveraging Organizational Data at Scale” by Adam Bellemare
Глава 1 содержит вводную информацию:
Типы архитектур и различия между ними:
Традиционные монолитные архитектуры Сервисно-ориентированные архитектуры (SOA) Архитектуры управляемых событиями микросервисов (EDM) Уровни коммуникативных структур и связанный с ними закон Конвея:
бизнес реализация данные Проблемы с традиционными архитектурами (монолит и SOA), когда вам нужно:
Знаете ли вы, что проиграть 1000 долларов, а затем выиграть 900 долларов (т.е. получить результат -100 долларов в сумме) приятнее, чем выиграть 1000 долларов, а затем проиграть 900 долларов (т.е. получить результат +100 долларов)!??
То, что произошло в НЕДАВНЕМ ПРОШЛОМ, влияет на нашу эмоциональную реакцию гораздо больше, чем на нам общий результат! Это проблема, если вы делаете важный прогноз.
Я уже рассказывал о группе поиска правды (Система напарников) как об отличном способе улучшить процесс принятия решений.
Как делиться информацией внутри такой группы и как эффективно не соглашаться (чтобы находить хорошее решение)? И как общаться вне такой эффективной группы?
Люди не готовы считать себя источником проблемы, с которой они столкнулись (свои навыки), они винят в этом других людей/обстоятельства (везение). Как побороть эту проблему?
Одним из решений является создание «группы правды» с вашими коллегами/друзьями/партнерами/«напарниками». И такая группа должна следовать определенным правилам, повышающим рациональность…
Люди должны учиться, наблюдая за результатами, но почему они не учатся?
У результата всегда есть много неизвестных нам обстоятельств - поэтому мы не знаем настоящей причины результата. Удача также часто играет большую роль, поэтому мы часто не знаем что повлияло больше, Удача или Мастерство.
Также нас искажают наши предвзятости:
корыстное предубеждение по отношению к себе
и инвертированное корыстное предубеждение по отношению к другим