Человеческий фактор в разработке, или 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
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/