SlideShare a Scribd company logo
1 of 72
Hard & Soft Skills
Hard & Soft Skills
Kafka как пример
идеально горизонтально
масштабируемой
архитектуры
Павел Вейник
CEO Hard & Soft Skills для
Sam Solutions
Hard & Soft Skills
Hard & Soft Skills
Ждем всех до 19:35
2
Hard & Soft Skills
Hard & Soft Skills
Мы снова online
Зарегистрировались 222 человек
Наш 18-й митап online
При поддержке Sam Solutions
Информационные партнеры dev.by,
tproger.ru
3
Hard & Soft Skills
Hard & Soft Skills
О митапах
Часть проекта Hard & Soft Skills
Поделиться и пообщаться
Подобрать материал для курсов:
○ Технический лидер
○ От middle developer к senior engineer,
SDET, teamlead...
4
Hard & Soft Skills
Hard & Soft Skills
План митапов
16. ML Operations for engineers
17. Взаимодействие микросервисов
18. Kafka как идеально горизонтально
масштабируемая система
19. Архитектурный воркшоп
20. hardsoftskills.by/next_meetups
5
Hard & Soft Skills
Hard & Soft Skills
План митапов
16. ML Operations for engineers
17. Взаимодействие микросервисов
18. Kafka как идеально горизонтально
масштабируемая система
19. Архитектурный воркшоп
20. hardsoftskills.by/next_meetups
6
Hard & Soft Skills
Hard & Soft Skills
Цель этого митапа
Понять архитектуру Kafka
Увидеть пример запуска Kafka
Увидеть пример producer/consumer
7
Hard & Soft Skills
Hard & Soft Skills
План этого митапа
1. Что такое messaging system
2. Архитектура Kafka
3. Докер образы и Kafka CLI
4. Producer + Consumer
5. Вопросы при регистрациях
Hard & Soft Skills
Hard & Soft Skills
Message Broker
Hard & Soft Skills
Hard & Soft Skills
Kafka - это Message Broker
Посредник, который передает
сообщения от одного
компонента другому.
Hard & Soft Skills
Hard & Soft Skills
Kafka - это Message Broker
Hard & Soft Skills
Hard & Soft Skills
Kafka - это Message Broker
Hard & Soft Skills
Hard & Soft Skills
Kafka - это Message Broker
Создана в LinkedIn, поддерживается Confluent
Масштабируется
Сотни и тысячи брокеров
Миллионы RPS
Hard & Soft Skills
Hard & Soft Skills
Kafka - это Message Broker
Latency <= 10ms, real time
Используется в тысячах проектов
Netflix, Uber, LinkedIn, Airnbnb...
Hard & Soft Skills
Hard & Soft Skills
Kafka - это Message Broker
Передача сообщений
Сбор уведомлений/метрик об активности (IoT)
Сбор логов
Непрерывная обработка сообщений (stream
processing)
Hard & Soft Skills
Hard & Soft Skills
Kafka - это Message Broker
Развязывание зависимостей между системами
Интеграции с Spark, Flink, Storm, Hadoop и др
Hard & Soft Skills
Hard & Soft Skills
Kafka - это Message Broker
Netflix - real-time рекомендации
Uber - real-time сбор данных о пользователе, такси и
поездке для анализа и предсказания спроса и
определения стоимости
LinkedIn - обработка спама, real-time сбор
взаимодействий пользователей
Hard & Soft Skills
Hard & Soft Skills
Другие Message Brokers
Всего порядка 50 распространенных
RabbitMQ, ActiveMQ, Redis, Pulsar, Apollo, Qpid,
BeanstalkD, Celery, Chronicle Queue, Darner,
DelayedJob, Disque, Eclipse Mosquito, Eclipse
OM2M, enmasse, FFMQ, Gearman, HornetQ...
Hard & Soft Skills
Hard & Soft Skills
Шаблоны, связанные с очередями
https://www.enterpriseintegrationpatterns.com/patterns/messaging/index.html
Hard & Soft Skills
Hard & Soft Skills
Архитектура Kafka
Hard & Soft Skills
Hard & Soft Skills
Topic
Topic - поток сообщений
Имеет имя
Можно создавать сколько угодно топиков
Данные в топике хранятся указанное
количество времени (1 неделя by default)
Hard & Soft Skills
Hard & Soft Skills
Partition, offset
Topic делится на partitions
Каждый partition сохраняет порядок
Каждое сообщение в partition получает
номер, или offset
Hard & Soft Skills
Hard & Soft Skills
Запись (produce) в topic
Hard & Soft Skills
Hard & Soft Skills
Broker
Kafka состоит из нескольких серверов -
брокеров.
У брокера есть имя.
Каждый брокер хранит несколько partitions.
Hard & Soft Skills
Hard & Soft Skills
Брокеры и partitions
Hard & Soft Skills
Hard & Soft Skills
Broker
Соединение с любым брокером обозначает
соединение со всем кластером.
Лучше не делать в проде число брокеров
меньше чем 3.
Hard & Soft Skills
Hard & Soft Skills
Topic replication
Hard & Soft Skills
Hard & Soft Skills
Topic replication
Hard & Soft Skills
Hard & Soft Skills
Leader для partition
Leader - какая из копий partition считается
главной, эталоном. Остальные - только
синхронизируют данные с leader.
В каждой момент - только одна копия (один
брокер) может быть leader.
Hard & Soft Skills
Hard & Soft Skills
Leader для partition
Hard & Soft Skills
Hard & Soft Skills
Producer
Producer пишет сообщения в топик.
Producer автоматически понимают в какой
partition и брокер (leader) писать благодаря
умному kafka client.
Hard & Soft Skills
Hard & Soft Skills
Producer
Если брокер, в который producer пишет
сообщения, падает, kafka client автоматически
исправляет ситуацию.
Нагрузка балансируется по разным брокерам и
partitions.
Hard & Soft Skills
Hard & Soft Skills
Producer
Hard & Soft Skills
Hard & Soft Skills
Producer ack
Можно уровень acknowledgement для записи:
acks=0 не ждем подтверждения
acks=1 ждем от лидера (чаще всего)
acks=all ждем от всех (нет потерь 100%)
Hard & Soft Skills
Hard & Soft Skills
Message key
Key - часть сообщения, может быть null.
Если null - то выбирается partition по round robin
Если не null - то все сообщения с этим ключом
пишутся всегда в один partition
Hard & Soft Skills
Hard & Soft Skills
Message key
Key используется для сохранения порядка в
очереди сообщений для одной бизнес-
сущности.
Events одного клиента, лог одного сервиса,
изменения из одного источника...
Hard & Soft Skills
Hard & Soft Skills
Consumer
Consumer читает сообщения из топика.
Consumer знает, из какого брокера (leader)
читать сообщения (умный kafka client).
При падении брокера знает что делать.
Hard & Soft Skills
Hard & Soft Skills
Consumer
Сообщения из partition читаются в порядке
добавления, FIFO.
Данные из разных partition могут
перемешиваться любым способом.
Hard & Soft Skills
Hard & Soft Skills
Consumer
Hard & Soft Skills
Hard & Soft Skills
Consumer Group
Consumer group используется для
масштабирования чтения сообщений.
Каждый consumer из group читает из своего
набора partitions.
Hard & Soft Skills
Hard & Soft Skills
Consumer Group
Hard & Soft Skills
Hard & Soft Skills
Не хватило partition для consumer в group
Hard & Soft Skills
Hard & Soft Skills
Consumer и partition offset
Kafka сохраняет offset для каждого consumer
group для каждого partition - указатель на то,
какое сообщение читать дальше.
Hard & Soft Skills
Hard & Soft Skills
Consumer и partition offset
Consumer должен комитить свой offset.
Если consumer падает, то после этого он может
продолжить с того сообщения, на котором
упал, зная offset.
Hard & Soft Skills
Hard & Soft Skills
Consumer и partition offset
Hard & Soft Skills
Hard & Soft Skills
Гарантии доставки
At most once: комит сразу после получения.
At least once: комит сразу после обработки.
Нужен идемпотентный consumer.
Exactly once: только в Kafka Streams API (Kafka -
>Kafka).
Hard & Soft Skills
Hard & Soft Skills
Kafka broker discovery
Каждый брокер - bootstrap сервер.
Каждый брокер знает обо всех других, их
топиках и partitions.
Hard & Soft Skills
Hard & Soft Skills
Broker discovery
Hard & Soft Skills
Hard & Soft Skills
ZooKeeper
Часть кластера kafka.
Может быть в виде кластера тоже (3, 5, 7
узлов).
Содержит актуальный список всех брокеров,
топиков, partitions...
Hard & Soft Skills
Hard & Soft Skills
Подводя итоги
Сообщения пишутся в topic-partition в порядке
отправки
Consumer читает сообщения по порядку из
topic-partition
Hard & Soft Skills
Hard & Soft Skills
Масштабирование Kafka
Больше брокеров
Больше partitions
Больше replication factor
Масштабируется горизонтально
Hard & Soft Skills
Hard & Soft Skills
Подводя итоги
Если replication factor == N, то можно пережить
сбой N-1 брокеров одновременно.
Поэтому лучше использовать replication factor 3
или больше
Hard & Soft Skills
Hard & Soft Skills
Подводя итоги
Пока количество partitions остается
постоянным, один и тот же ключ пишется в
один и тот же partition
Hard & Soft Skills
Hard & Soft Skills
Подводя итоги
Hard & Soft Skills
Hard & Soft Skills
Запуск и CLI
Hard & Soft Skills
Hard & Soft Skills
Разворачивание Kafka
https://habr.com/ru/post/543732/
docker network create kafkanet
docker run -d --network=kafkanet --name=zookeeper -e ZOOKEEPER_CLIENT_PORT=2181 -e
ZOOKEEPER_TICK_TIME=2000 -p 2181:2181 confluentinc/cp-zookeeper
docker run -d --network=kafkanet --name=kafka -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 -p 9092:9092 confluentinc/cp-kafka
docker exec -it kafka bash
Hard & Soft Skills
Hard & Soft Skills
Kafka CLI
/bin/kafka-topics --create --topic demo-topic --bootstrap-server kafka:9092
/bin/kafka-topics --list --zookeeper zookeeper:2181
/bin/kafka-topics --describe --topic demo-topic --bootstrap-server
kafka:9092
/bin/kafka-console-producer --topic demo-topic --bootstrap-server kafka:9092
/bin/kafka-console-consumer --topic demo-topic --from-beginning --bootstrap-
server kafka:9092
Hard & Soft Skills
Hard & Soft Skills
Kafka CLI
/bin/kafka-topics --zookeeper zookeeper:2181 --alter --topic demo-topic --
partitions 3
/bin/kafka-topics --describe --topic demo-topic --bootstrap-server
kafka:9092
docker exec -it kafka /bin/kafka-console-consumer --topic demo-topic --group
demo-group --bootstrap-server kafka:9092
Hard & Soft Skills
Hard & Soft Skills
Kafka CLI
Создать topic, producer, consumer, 2 consumers,
2 consumers in consumer group.
Создать топик с 3мя partitions.
Hard & Soft Skills
Hard & Soft Skills
Live Coding
Hard & Soft Skills
Hard & Soft Skills
Live coding
Создать producer, consumer, 2 consumers, 2
consumers in consumer group.
Продемонстрировать работу с message key
(ключ - целое % 3)
Hard & Soft Skills
Hard & Soft Skills
Вопросы при
регистрации
Hard & Soft Skills
Hard & Soft Skills
Kafka vs RabbitMQ
Сравнение
Где стоит выбрать одно, а где - другое
Насколько кафка лучше rabbit
Hard & Soft Skills
Hard & Soft Skills
Kafka vs RabbitMQ
https://otonomo.io/redis-kafka-or-rabbitmq-which-microservices-
message-broker-to-choose/
https://betterprogramming.pub/rabbitmq-vs-kafka-1ef22a041793
https://www.upsolver.com/blog/kafka-versus-rabbitmq-architecture-
performance-use-case
https://habr.com/ru/company/itsumma/blog/416629/
Hard & Soft Skills
Hard & Soft Skills
Kafka vs Pulsar
https://www.confluent.io/kafka-vs-pulsar
https://digitalis.io/blog/kafka/apache-kafka-vs-apache-pulsar/
https://www.kai-waehner.de/blog/2020/06/09/apache-kafka-versus-
apache-pulsar-event-streaming-comparison-features-myths-explored/
https://habr.com/ru/company/southbridge/blog/548702/
Hard & Soft Skills
Hard & Soft Skills
Отказоустойчивость Kafka
https://tech.ebayinc.com/engineering/resiliency-
and-disaster-recovery-with-kafka/
https://www.infoq.com/articles/resilient-kafka-
goldman-sachs/
Hard & Soft Skills
Hard & Soft Skills
Kafka transactions
https://www.confluent.io/blog/transactions-
apache-kafka/
https://itnext.io/kafka-transaction-56f022af1b0c
https://chrzaszcz.dev/2019/12/kafka-
transactions/
Hard & Soft Skills
Hard & Soft Skills
Data science и Kafka
https://www.analyticsvidhya.com/blog/2020/11/a
pache-kafka-introduction-to-event-streaming/
https://www.datasciencecentral.com/profiles/blog
s/apache-kafka-ksql-tensorflow-for-data-
scientists-via-python
Hard & Soft Skills
Hard & Soft Skills
Что почитать
Hard & Soft Skills
Hard & Soft Skills
Что почитать
https://www.enterpriseintegrationpatterns.com/patterns/messaging/index.html
https://dzone.com/articles/kafka-architecture
https://www.confluent.io/blog/set-up-and-run-kafka-on-windows-linux-wsl-2/
https://habr.com/ru/post/543732/
https://kafka.apache.org/documentation/
https://www.confluent.io/kafka-vs-pulsar/
Hard & Soft Skills
Hard & Soft Skills
Что почитать
https://www.confluent.io/blog/set-up-and-run-kafka-on-windows-linux-wsl-2/
https://kafkatool.com/download.html
https://habr.com/ru/company/southbridge/blog/544958/
https://logz.io/blog/kafka-vs-redis/
https://logz.io/blog/kafka-logging/
https://otonomo.io/redis-kafka-or-rabbitmq-which-microservices-message-broker-to-choose/
https://kafka-summit.org/sessions/ooyala-adtech-liberating-data-streams-kafka-friends/
Hard & Soft Skills
Hard & Soft Skills
?

More Related Content

Similar to Software craftsmanship online meetup 18: Kafka как пример идеально горизонтально масштабируемой системы

Аналитика над петабайтами в реальном времени
Аналитика над петабайтами в реальном времениАналитика над петабайтами в реальном времени
Аналитика над петабайтами в реальном времениAlexander Demidko
 
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решения
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решенияДмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решения
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решенияFProg
 
Software craftsmanship meetup 21: CQRS что такое и для чего
Software craftsmanship meetup 21: CQRS что такое и для чего Software craftsmanship meetup 21: CQRS что такое и для чего
Software craftsmanship meetup 21: CQRS что такое и для чего Pavel Veinik
 
WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым пока...
WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым пока...WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым пока...
WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым пока...Procontent.Ru Magazine
 
Как показывать 200 миллионов баннеров ежедневно и быть готовым показать милли...
Как показывать 200 миллионов баннеров ежедневно и быть готовым показать милли...Как показывать 200 миллионов баннеров ежедневно и быть готовым показать милли...
Как показывать 200 миллионов баннеров ежедневно и быть готовым показать милли...Evgeny Kokovikhin
 
Новая Cisco ASA: тотальный контроль над пользователем
Новая Cisco ASA: тотальный контроль над пользователемНовая Cisco ASA: тотальный контроль над пользователем
Новая Cisco ASA: тотальный контроль над пользователемSkillFactory
 
Middleware
MiddlewareMiddleware
Middlewaremegakott
 
SDN & NFV: от абонента до Internet eXchange
SDN & NFV: от абонента до Internet eXchangeSDN & NFV: от абонента до Internet eXchange
SDN & NFV: от абонента до Internet eXchangeARCCN
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Coit-people
 
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдераАвтономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдераCisco Russia
 
Построение катастрофоустойчивых и распределённых ЦОД
Построение катастрофоустойчивых и распределённых ЦОДПостроение катастрофоустойчивых и распределённых ЦОД
Построение катастрофоустойчивых и распределённых ЦОДCisco Russia
 
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...Ontico
 
Sphinx: распределяя индексы.
Sphinx: распределяя индексы.Sphinx: распределяя индексы.
Sphinx: распределяя индексы.MageCloud
 
Видео + Конференция. Обзор современных ВКС архитектур. Лев Якупов
Видео + Конференция. Обзор современных ВКС архитектур. Лев ЯкуповВидео + Конференция. Обзор современных ВКС архитектур. Лев Якупов
Видео + Конференция. Обзор современных ВКС архитектур. Лев ЯкуповTrueConf
 
Видео + Конференция. Обзор современных ВКС архитектур. Лев Якупов
Видео + Конференция. Обзор современных ВКС архитектур. Лев ЯкуповВидео + Конференция. Обзор современных ВКС архитектур. Лев Якупов
Видео + Конференция. Обзор современных ВКС архитектур. Лев ЯкуповTrueConf__
 
Практическое применение SDN/NFV в современных сетях: от CPE до Internet eXchange
Практическое применение SDN/NFV в современных сетях: от CPE до Internet eXchangeПрактическое применение SDN/NFV в современных сетях: от CPE до Internet eXchange
Практическое применение SDN/NFV в современных сетях: от CPE до Internet eXchangeARCCN
 
Применение виртуальных маршрутизаторов в сетях операторов связи. Cisco XRv и ...
Применение виртуальных маршрутизаторов в сетях операторов связи. Cisco XRv и ...Применение виртуальных маршрутизаторов в сетях операторов связи. Cisco XRv и ...
Применение виртуальных маршрутизаторов в сетях операторов связи. Cisco XRv и ...Cisco Russia
 
Сравнение ТОП 5 SIEM РФ
Сравнение ТОП 5 SIEM РФСравнение ТОП 5 SIEM РФ
Сравнение ТОП 5 SIEM РФPete Kuzeev
 

Similar to Software craftsmanship online meetup 18: Kafka как пример идеально горизонтально масштабируемой системы (20)

Аналитика над петабайтами в реальном времени
Аналитика над петабайтами в реальном времениАналитика над петабайтами в реальном времени
Аналитика над петабайтами в реальном времени
 
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решения
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решенияДмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решения
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решения
 
Software craftsmanship meetup 21: CQRS что такое и для чего
Software craftsmanship meetup 21: CQRS что такое и для чего Software craftsmanship meetup 21: CQRS что такое и для чего
Software craftsmanship meetup 21: CQRS что такое и для чего
 
WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым пока...
WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым пока...WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым пока...
WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым пока...
 
Как показывать 200 миллионов баннеров ежедневно и быть готовым показать милли...
Как показывать 200 миллионов баннеров ежедневно и быть готовым показать милли...Как показывать 200 миллионов баннеров ежедневно и быть готовым показать милли...
Как показывать 200 миллионов баннеров ежедневно и быть готовым показать милли...
 
Новая Cisco ASA: тотальный контроль над пользователем
Новая Cisco ASA: тотальный контроль над пользователемНовая Cisco ASA: тотальный контроль над пользователем
Новая Cisco ASA: тотальный контроль над пользователем
 
Middleware
MiddlewareMiddleware
Middleware
 
Breaking logs
Breaking logsBreaking logs
Breaking logs
 
SDN & NFV: от абонента до Internet eXchange
SDN & NFV: от абонента до Internet eXchangeSDN & NFV: от абонента до Internet eXchange
SDN & NFV: от абонента до Internet eXchange
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
 
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдераАвтономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
Автономные Сети: упрощение развертывания уровня доступа в сети сервис-провайдера
 
Построение катастрофоустойчивых и распределённых ЦОД
Построение катастрофоустойчивых и распределённых ЦОДПостроение катастрофоустойчивых и распределённых ЦОД
Построение катастрофоустойчивых и распределённых ЦОД
 
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
 
Sphinx: распределяя индексы.
Sphinx: распределяя индексы.Sphinx: распределяя индексы.
Sphinx: распределяя индексы.
 
Видео + Конференция. Обзор современных ВКС архитектур. Лев Якупов
Видео + Конференция. Обзор современных ВКС архитектур. Лев ЯкуповВидео + Конференция. Обзор современных ВКС архитектур. Лев Якупов
Видео + Конференция. Обзор современных ВКС архитектур. Лев Якупов
 
Видео + Конференция. Обзор современных ВКС архитектур. Лев Якупов
Видео + Конференция. Обзор современных ВКС архитектур. Лев ЯкуповВидео + Конференция. Обзор современных ВКС архитектур. Лев Якупов
Видео + Конференция. Обзор современных ВКС архитектур. Лев Якупов
 
Практическое применение SDN/NFV в современных сетях: от CPE до Internet eXchange
Практическое применение SDN/NFV в современных сетях: от CPE до Internet eXchangeПрактическое применение SDN/NFV в современных сетях: от CPE до Internet eXchange
Практическое применение SDN/NFV в современных сетях: от CPE до Internet eXchange
 
Применение виртуальных маршрутизаторов в сетях операторов связи. Cisco XRv и ...
Применение виртуальных маршрутизаторов в сетях операторов связи. Cisco XRv и ...Применение виртуальных маршрутизаторов в сетях операторов связи. Cisco XRv и ...
Применение виртуальных маршрутизаторов в сетях операторов связи. Cisco XRv и ...
 
Dataline средства репликации
Dataline средства репликацииDataline средства репликации
Dataline средства репликации
 
Сравнение ТОП 5 SIEM РФ
Сравнение ТОП 5 SIEM РФСравнение ТОП 5 SIEM РФ
Сравнение ТОП 5 SIEM РФ
 

More from Pavel Veinik

Software craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellenceSoftware craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellencePavel Veinik
 
Software craftsmanship 17: Microservices interaction
Software craftsmanship 17: Microservices interactionSoftware craftsmanship 17: Microservices interaction
Software craftsmanship 17: Microservices interactionPavel Veinik
 
Software craftsmanship 16: online building ml pipeline
Software craftsmanship 16: online building ml pipelineSoftware craftsmanship 16: online building ml pipeline
Software craftsmanship 16: online building ml pipelinePavel Veinik
 
Software craftsmanship 15 online: Reliability and Resiliency
Software craftsmanship 15 online: Reliability and ResiliencySoftware craftsmanship 15 online: Reliability and Resiliency
Software craftsmanship 15 online: Reliability and ResiliencyPavel Veinik
 
Software craftsmanship 14 online Splitting the Monolith
Software craftsmanship 14 online Splitting the MonolithSoftware craftsmanship 14 online Splitting the Monolith
Software craftsmanship 14 online Splitting the MonolithPavel Veinik
 
Software craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systemsSoftware craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systemsPavel Veinik
 
Software craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаSoftware craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаPavel Veinik
 
Software craftsmanship 10: распределенные транзакции
Software craftsmanship 10: распределенные транзакцииSoftware craftsmanship 10: распределенные транзакции
Software craftsmanship 10: распределенные транзакцииPavel Veinik
 
Software craftsmanship 8
Software craftsmanship 8Software craftsmanship 8
Software craftsmanship 8Pavel Veinik
 
Software craftsmanship 7
Software craftsmanship 7Software craftsmanship 7
Software craftsmanship 7Pavel Veinik
 
Software craftsmanship фиксит проблемы Agile
Software craftsmanship фиксит проблемы AgileSoftware craftsmanship фиксит проблемы Agile
Software craftsmanship фиксит проблемы AgilePavel Veinik
 
Software craftsmanship #5 кэши и микросервисы
Software craftsmanship #5 кэши и микросервисыSoftware craftsmanship #5 кэши и микросервисы
Software craftsmanship #5 кэши и микросервисыPavel Veinik
 
Software craftsmanship meetup #4
Software craftsmanship meetup #4Software craftsmanship meetup #4
Software craftsmanship meetup #4Pavel Veinik
 
Software craftsmanship 3
Software craftsmanship 3Software craftsmanship 3
Software craftsmanship 3Pavel Veinik
 
Software craftsmanship 1
Software craftsmanship 1Software craftsmanship 1
Software craftsmanship 1Pavel Veinik
 
Software craftsmanship 2
Software craftsmanship 2Software craftsmanship 2
Software craftsmanship 2Pavel Veinik
 
Women in technology_week-women_leadership
Women in technology_week-women_leadershipWomen in technology_week-women_leadership
Women in technology_week-women_leadershipPavel Veinik
 
Программирование и лингвистика: как понять язык и извлечь знания из текстов
Программирование и лингвистика: как понять язык и извлечь знания из текстовПрограммирование и лингвистика: как понять язык и извлечь знания из текстов
Программирование и лингвистика: как понять язык и извлечь знания из текстовPavel Veinik
 
Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.Pavel Veinik
 

More from Pavel Veinik (20)

Software craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellenceSoftware craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellence
 
Software craftsmanship 17: Microservices interaction
Software craftsmanship 17: Microservices interactionSoftware craftsmanship 17: Microservices interaction
Software craftsmanship 17: Microservices interaction
 
Software craftsmanship 16: online building ml pipeline
Software craftsmanship 16: online building ml pipelineSoftware craftsmanship 16: online building ml pipeline
Software craftsmanship 16: online building ml pipeline
 
Software craftsmanship 15 online: Reliability and Resiliency
Software craftsmanship 15 online: Reliability and ResiliencySoftware craftsmanship 15 online: Reliability and Resiliency
Software craftsmanship 15 online: Reliability and Resiliency
 
Software craftsmanship 14 online Splitting the Monolith
Software craftsmanship 14 online Splitting the MonolithSoftware craftsmanship 14 online Splitting the Monolith
Software craftsmanship 14 online Splitting the Monolith
 
Software craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systemsSoftware craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systems
 
Software craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаSoftware craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчика
 
Software craftsmanship 10: распределенные транзакции
Software craftsmanship 10: распределенные транзакцииSoftware craftsmanship 10: распределенные транзакции
Software craftsmanship 10: распределенные транзакции
 
Software craftsmanship 8
Software craftsmanship 8Software craftsmanship 8
Software craftsmanship 8
 
Software craftsmanship 7
Software craftsmanship 7Software craftsmanship 7
Software craftsmanship 7
 
Software craftsmanship фиксит проблемы Agile
Software craftsmanship фиксит проблемы AgileSoftware craftsmanship фиксит проблемы Agile
Software craftsmanship фиксит проблемы Agile
 
Software craftsmanship #5 кэши и микросервисы
Software craftsmanship #5 кэши и микросервисыSoftware craftsmanship #5 кэши и микросервисы
Software craftsmanship #5 кэши и микросервисы
 
Software craftsmanship meetup #4
Software craftsmanship meetup #4Software craftsmanship meetup #4
Software craftsmanship meetup #4
 
Software craftsmanship 3
Software craftsmanship 3Software craftsmanship 3
Software craftsmanship 3
 
Software craftsmanship 1
Software craftsmanship 1Software craftsmanship 1
Software craftsmanship 1
 
Software craftsmanship 2
Software craftsmanship 2Software craftsmanship 2
Software craftsmanship 2
 
Women in technology_week-women_leadership
Women in technology_week-women_leadershipWomen in technology_week-women_leadership
Women in technology_week-women_leadership
 
Career day 2019
Career day 2019Career day 2019
Career day 2019
 
Программирование и лингвистика: как понять язык и извлечь знания из текстов
Программирование и лингвистика: как понять язык и извлечь знания из текстовПрограммирование и лингвистика: как понять язык и извлечь знания из текстов
Программирование и лингвистика: как понять язык и извлечь знания из текстов
 
Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.
 

Software craftsmanship online meetup 18: Kafka как пример идеально горизонтально масштабируемой системы

  • 1. Hard & Soft Skills Hard & Soft Skills Kafka как пример идеально горизонтально масштабируемой архитектуры Павел Вейник CEO Hard & Soft Skills для Sam Solutions
  • 2. Hard & Soft Skills Hard & Soft Skills Ждем всех до 19:35 2
  • 3. Hard & Soft Skills Hard & Soft Skills Мы снова online Зарегистрировались 222 человек Наш 18-й митап online При поддержке Sam Solutions Информационные партнеры dev.by, tproger.ru 3
  • 4. Hard & Soft Skills Hard & Soft Skills О митапах Часть проекта Hard & Soft Skills Поделиться и пообщаться Подобрать материал для курсов: ○ Технический лидер ○ От middle developer к senior engineer, SDET, teamlead... 4
  • 5. Hard & Soft Skills Hard & Soft Skills План митапов 16. ML Operations for engineers 17. Взаимодействие микросервисов 18. Kafka как идеально горизонтально масштабируемая система 19. Архитектурный воркшоп 20. hardsoftskills.by/next_meetups 5
  • 6. Hard & Soft Skills Hard & Soft Skills План митапов 16. ML Operations for engineers 17. Взаимодействие микросервисов 18. Kafka как идеально горизонтально масштабируемая система 19. Архитектурный воркшоп 20. hardsoftskills.by/next_meetups 6
  • 7. Hard & Soft Skills Hard & Soft Skills Цель этого митапа Понять архитектуру Kafka Увидеть пример запуска Kafka Увидеть пример producer/consumer 7
  • 8. Hard & Soft Skills Hard & Soft Skills План этого митапа 1. Что такое messaging system 2. Архитектура Kafka 3. Докер образы и Kafka CLI 4. Producer + Consumer 5. Вопросы при регистрациях
  • 9. Hard & Soft Skills Hard & Soft Skills Message Broker
  • 10. Hard & Soft Skills Hard & Soft Skills Kafka - это Message Broker Посредник, который передает сообщения от одного компонента другому.
  • 11. Hard & Soft Skills Hard & Soft Skills Kafka - это Message Broker
  • 12. Hard & Soft Skills Hard & Soft Skills Kafka - это Message Broker
  • 13. Hard & Soft Skills Hard & Soft Skills Kafka - это Message Broker Создана в LinkedIn, поддерживается Confluent Масштабируется Сотни и тысячи брокеров Миллионы RPS
  • 14. Hard & Soft Skills Hard & Soft Skills Kafka - это Message Broker Latency <= 10ms, real time Используется в тысячах проектов Netflix, Uber, LinkedIn, Airnbnb...
  • 15. Hard & Soft Skills Hard & Soft Skills Kafka - это Message Broker Передача сообщений Сбор уведомлений/метрик об активности (IoT) Сбор логов Непрерывная обработка сообщений (stream processing)
  • 16. Hard & Soft Skills Hard & Soft Skills Kafka - это Message Broker Развязывание зависимостей между системами Интеграции с Spark, Flink, Storm, Hadoop и др
  • 17. Hard & Soft Skills Hard & Soft Skills Kafka - это Message Broker Netflix - real-time рекомендации Uber - real-time сбор данных о пользователе, такси и поездке для анализа и предсказания спроса и определения стоимости LinkedIn - обработка спама, real-time сбор взаимодействий пользователей
  • 18. Hard & Soft Skills Hard & Soft Skills Другие Message Brokers Всего порядка 50 распространенных RabbitMQ, ActiveMQ, Redis, Pulsar, Apollo, Qpid, BeanstalkD, Celery, Chronicle Queue, Darner, DelayedJob, Disque, Eclipse Mosquito, Eclipse OM2M, enmasse, FFMQ, Gearman, HornetQ...
  • 19. Hard & Soft Skills Hard & Soft Skills Шаблоны, связанные с очередями https://www.enterpriseintegrationpatterns.com/patterns/messaging/index.html
  • 20. Hard & Soft Skills Hard & Soft Skills Архитектура Kafka
  • 21. Hard & Soft Skills Hard & Soft Skills Topic Topic - поток сообщений Имеет имя Можно создавать сколько угодно топиков Данные в топике хранятся указанное количество времени (1 неделя by default)
  • 22. Hard & Soft Skills Hard & Soft Skills Partition, offset Topic делится на partitions Каждый partition сохраняет порядок Каждое сообщение в partition получает номер, или offset
  • 23. Hard & Soft Skills Hard & Soft Skills Запись (produce) в topic
  • 24. Hard & Soft Skills Hard & Soft Skills Broker Kafka состоит из нескольких серверов - брокеров. У брокера есть имя. Каждый брокер хранит несколько partitions.
  • 25. Hard & Soft Skills Hard & Soft Skills Брокеры и partitions
  • 26. Hard & Soft Skills Hard & Soft Skills Broker Соединение с любым брокером обозначает соединение со всем кластером. Лучше не делать в проде число брокеров меньше чем 3.
  • 27. Hard & Soft Skills Hard & Soft Skills Topic replication
  • 28. Hard & Soft Skills Hard & Soft Skills Topic replication
  • 29. Hard & Soft Skills Hard & Soft Skills Leader для partition Leader - какая из копий partition считается главной, эталоном. Остальные - только синхронизируют данные с leader. В каждой момент - только одна копия (один брокер) может быть leader.
  • 30. Hard & Soft Skills Hard & Soft Skills Leader для partition
  • 31. Hard & Soft Skills Hard & Soft Skills Producer Producer пишет сообщения в топик. Producer автоматически понимают в какой partition и брокер (leader) писать благодаря умному kafka client.
  • 32. Hard & Soft Skills Hard & Soft Skills Producer Если брокер, в который producer пишет сообщения, падает, kafka client автоматически исправляет ситуацию. Нагрузка балансируется по разным брокерам и partitions.
  • 33. Hard & Soft Skills Hard & Soft Skills Producer
  • 34. Hard & Soft Skills Hard & Soft Skills Producer ack Можно уровень acknowledgement для записи: acks=0 не ждем подтверждения acks=1 ждем от лидера (чаще всего) acks=all ждем от всех (нет потерь 100%)
  • 35. Hard & Soft Skills Hard & Soft Skills Message key Key - часть сообщения, может быть null. Если null - то выбирается partition по round robin Если не null - то все сообщения с этим ключом пишутся всегда в один partition
  • 36. Hard & Soft Skills Hard & Soft Skills Message key Key используется для сохранения порядка в очереди сообщений для одной бизнес- сущности. Events одного клиента, лог одного сервиса, изменения из одного источника...
  • 37. Hard & Soft Skills Hard & Soft Skills Consumer Consumer читает сообщения из топика. Consumer знает, из какого брокера (leader) читать сообщения (умный kafka client). При падении брокера знает что делать.
  • 38. Hard & Soft Skills Hard & Soft Skills Consumer Сообщения из partition читаются в порядке добавления, FIFO. Данные из разных partition могут перемешиваться любым способом.
  • 39. Hard & Soft Skills Hard & Soft Skills Consumer
  • 40. Hard & Soft Skills Hard & Soft Skills Consumer Group Consumer group используется для масштабирования чтения сообщений. Каждый consumer из group читает из своего набора partitions.
  • 41. Hard & Soft Skills Hard & Soft Skills Consumer Group
  • 42. Hard & Soft Skills Hard & Soft Skills Не хватило partition для consumer в group
  • 43. Hard & Soft Skills Hard & Soft Skills Consumer и partition offset Kafka сохраняет offset для каждого consumer group для каждого partition - указатель на то, какое сообщение читать дальше.
  • 44. Hard & Soft Skills Hard & Soft Skills Consumer и partition offset Consumer должен комитить свой offset. Если consumer падает, то после этого он может продолжить с того сообщения, на котором упал, зная offset.
  • 45. Hard & Soft Skills Hard & Soft Skills Consumer и partition offset
  • 46. Hard & Soft Skills Hard & Soft Skills Гарантии доставки At most once: комит сразу после получения. At least once: комит сразу после обработки. Нужен идемпотентный consumer. Exactly once: только в Kafka Streams API (Kafka - >Kafka).
  • 47. Hard & Soft Skills Hard & Soft Skills Kafka broker discovery Каждый брокер - bootstrap сервер. Каждый брокер знает обо всех других, их топиках и partitions.
  • 48. Hard & Soft Skills Hard & Soft Skills Broker discovery
  • 49. Hard & Soft Skills Hard & Soft Skills ZooKeeper Часть кластера kafka. Может быть в виде кластера тоже (3, 5, 7 узлов). Содержит актуальный список всех брокеров, топиков, partitions...
  • 50. Hard & Soft Skills Hard & Soft Skills Подводя итоги Сообщения пишутся в topic-partition в порядке отправки Consumer читает сообщения по порядку из topic-partition
  • 51. Hard & Soft Skills Hard & Soft Skills Масштабирование Kafka Больше брокеров Больше partitions Больше replication factor Масштабируется горизонтально
  • 52. Hard & Soft Skills Hard & Soft Skills Подводя итоги Если replication factor == N, то можно пережить сбой N-1 брокеров одновременно. Поэтому лучше использовать replication factor 3 или больше
  • 53. Hard & Soft Skills Hard & Soft Skills Подводя итоги Пока количество partitions остается постоянным, один и тот же ключ пишется в один и тот же partition
  • 54. Hard & Soft Skills Hard & Soft Skills Подводя итоги
  • 55. Hard & Soft Skills Hard & Soft Skills Запуск и CLI
  • 56. Hard & Soft Skills Hard & Soft Skills Разворачивание Kafka https://habr.com/ru/post/543732/ docker network create kafkanet docker run -d --network=kafkanet --name=zookeeper -e ZOOKEEPER_CLIENT_PORT=2181 -e ZOOKEEPER_TICK_TIME=2000 -p 2181:2181 confluentinc/cp-zookeeper docker run -d --network=kafkanet --name=kafka -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 -p 9092:9092 confluentinc/cp-kafka docker exec -it kafka bash
  • 57. Hard & Soft Skills Hard & Soft Skills Kafka CLI /bin/kafka-topics --create --topic demo-topic --bootstrap-server kafka:9092 /bin/kafka-topics --list --zookeeper zookeeper:2181 /bin/kafka-topics --describe --topic demo-topic --bootstrap-server kafka:9092 /bin/kafka-console-producer --topic demo-topic --bootstrap-server kafka:9092 /bin/kafka-console-consumer --topic demo-topic --from-beginning --bootstrap- server kafka:9092
  • 58. Hard & Soft Skills Hard & Soft Skills Kafka CLI /bin/kafka-topics --zookeeper zookeeper:2181 --alter --topic demo-topic -- partitions 3 /bin/kafka-topics --describe --topic demo-topic --bootstrap-server kafka:9092 docker exec -it kafka /bin/kafka-console-consumer --topic demo-topic --group demo-group --bootstrap-server kafka:9092
  • 59. Hard & Soft Skills Hard & Soft Skills Kafka CLI Создать topic, producer, consumer, 2 consumers, 2 consumers in consumer group. Создать топик с 3мя partitions.
  • 60. Hard & Soft Skills Hard & Soft Skills Live Coding
  • 61. Hard & Soft Skills Hard & Soft Skills Live coding Создать producer, consumer, 2 consumers, 2 consumers in consumer group. Продемонстрировать работу с message key (ключ - целое % 3)
  • 62. Hard & Soft Skills Hard & Soft Skills Вопросы при регистрации
  • 63. Hard & Soft Skills Hard & Soft Skills Kafka vs RabbitMQ Сравнение Где стоит выбрать одно, а где - другое Насколько кафка лучше rabbit
  • 64. Hard & Soft Skills Hard & Soft Skills Kafka vs RabbitMQ https://otonomo.io/redis-kafka-or-rabbitmq-which-microservices- message-broker-to-choose/ https://betterprogramming.pub/rabbitmq-vs-kafka-1ef22a041793 https://www.upsolver.com/blog/kafka-versus-rabbitmq-architecture- performance-use-case https://habr.com/ru/company/itsumma/blog/416629/
  • 65. Hard & Soft Skills Hard & Soft Skills Kafka vs Pulsar https://www.confluent.io/kafka-vs-pulsar https://digitalis.io/blog/kafka/apache-kafka-vs-apache-pulsar/ https://www.kai-waehner.de/blog/2020/06/09/apache-kafka-versus- apache-pulsar-event-streaming-comparison-features-myths-explored/ https://habr.com/ru/company/southbridge/blog/548702/
  • 66. Hard & Soft Skills Hard & Soft Skills Отказоустойчивость Kafka https://tech.ebayinc.com/engineering/resiliency- and-disaster-recovery-with-kafka/ https://www.infoq.com/articles/resilient-kafka- goldman-sachs/
  • 67. Hard & Soft Skills Hard & Soft Skills Kafka transactions https://www.confluent.io/blog/transactions- apache-kafka/ https://itnext.io/kafka-transaction-56f022af1b0c https://chrzaszcz.dev/2019/12/kafka- transactions/
  • 68. Hard & Soft Skills Hard & Soft Skills Data science и Kafka https://www.analyticsvidhya.com/blog/2020/11/a pache-kafka-introduction-to-event-streaming/ https://www.datasciencecentral.com/profiles/blog s/apache-kafka-ksql-tensorflow-for-data- scientists-via-python
  • 69. Hard & Soft Skills Hard & Soft Skills Что почитать
  • 70. Hard & Soft Skills Hard & Soft Skills Что почитать https://www.enterpriseintegrationpatterns.com/patterns/messaging/index.html https://dzone.com/articles/kafka-architecture https://www.confluent.io/blog/set-up-and-run-kafka-on-windows-linux-wsl-2/ https://habr.com/ru/post/543732/ https://kafka.apache.org/documentation/ https://www.confluent.io/kafka-vs-pulsar/
  • 71. Hard & Soft Skills Hard & Soft Skills Что почитать https://www.confluent.io/blog/set-up-and-run-kafka-on-windows-linux-wsl-2/ https://kafkatool.com/download.html https://habr.com/ru/company/southbridge/blog/544958/ https://logz.io/blog/kafka-vs-redis/ https://logz.io/blog/kafka-logging/ https://otonomo.io/redis-kafka-or-rabbitmq-which-microservices-message-broker-to-choose/ https://kafka-summit.org/sessions/ooyala-adtech-liberating-data-streams-kafka-friends/
  • 72. Hard & Soft Skills Hard & Soft Skills ?