Я учусь иллюстрировать сложные процессы с помощью комиксов. Нашла себе в копилку крутой кейс: как с помощью комиксов про милых выдр можно ребенку объяснить такую сложную штуку как Apache Kafka, и сделать мир немного добрее.
Легко по течению легкое введение в потоковую обработку и Apache Kafka. Группа выдр обнаруживает, что они могут использовать гигантскую реку для общения друг с другом. По мере того, как все больше выдр перемещается в лес, они должны научиться адаптировать свою систему, чтобы справиться с возросшей активностью леса.
Под катом 25 слайдов, объясняющие основы Kafka для детей и гуманитариев. И много милых выдр.
Легко по течению
Поначалу, в лесу было тихо, и только две семьи выдр жили среди деревьев и рек.
Всякий раз, когда им нужно было поделиться новостями, они просто разговаривали друг с другом напрямую.
Они делились новостями о вечеринка в честь дня рождения, новых гостях и других событиях, происходящих в лесу.
Со временем, все больше и больше выдр переселялось в лес.
И точно так же росло количество происходящих в лесу событий.
Это было целым вызовом для маленьких выдр. Каждый раз, когда у выдры были новости, чтобы поделиться ими, она должна была найти каждую другую семью и рассказать им лично.
Это не только занимало много времени, но было чревато ошибками.
Что если какая-то выдрячья семья была на пикнике, и не могла получить уведомление о предстоящем событии?
Ну, тогда выдре, которая хотела оповестить соседей, придется вернуться позже или сдаться.
Поскольку остальные выдры общались друг с другом лично, говорили, что они Тесно Связаны.
Быть тесно связанными супер мило, но это делает коммуникацию с другими сложнее. Это называется Проблема Масштабирования.
Именно тогда у одной маленькой выдры по имени Никси, появилась идея, которая навсегда изменила лес.
По лесу текла огромная река Кафка, и Никси знала, что выдры могу использовать эту реку для общения.
Вы можете установить Kafka в своем лесу:
# clone the repositorygit clone \https://github.com/round-robin-books/gently-kafka.git# start kafkadocker-compose up
Она даже сочинила песню, чтобы объяснить, как это работает:
События свои
В реку ты опусти,
Река их отнести
Сможет выдрам другим.
Что о событиях,
Плывущих в потоке,
Этот путь удивителен,
Мы все тут в шоке.
Не отстанешь ли ты? вмешался дельфин
Нельзя оставлять все на милость глубин!
Не будет в доставке такого.
Мы командой реку разделим,
На множество мелких потоков
И вместе достигнем цели.
Давайте посмотрим, как это рабоnает
Во первых, выдра наблюдает Событие, что-то, что произошло в определенный момент времени.
К примеру, Сегодня вернулись пчелы это событие.
Дальше, выдра создает Запись о событии.
Записи (которые иногда называют сообщения) включают время события (отметка о времени) и дополнительную информацию о событии.
Тогда выдры смогут решать в какую часть реки направить это сообщение.
Река делится на потоки, которые называют Топики, которые делают организацию сообщений проще.
В итоге, выдры бросали свои сообщения в потоки (топики), чтобы другие выдры могли их найти.
По началу они использовали стеклянные бутылки, но бутылки просто уплывали.
Тогда, выдры переключились на стеклянные поплавки. Поскольку поплавки оставались на месте и никуда не уплывали, это было названо Устойчивостью.
Устойчивость важна, потому что это позволяет выдрам читать сообщения когда они захотят, к примеру после их пикника.
2 типа выдр
Выдры, которые помещают сообщения в реку, называются Продюсеры.
Продюсеры кидают маленькие партии сообщений в реку, не зная, кто придет читать их.
Незнание помогает Разделять системы, то есть выдр, которые создают события, и которые читают события.
Выдры, которые читают события в потоке называются Консьюмеры.
Консьюмеры следят за любым топиком, который их интересует.
Например, выдры Первой помощи следят за топиком с лесными алертами, так что они могут реагировать в чрезвычайных ситуациях (как в ситуации с пчелами).
Эта система работает хорошо, но спустя какое-то время река становится слишком загруженной огромным количеством событий. Как же маленьким выдрам все успеть?
Будучи социальными животными, они предпочитают работать вместе. Во первых, они скидывают огромные камни в реку, разделяя каждый топик на небольшое количество потоков, или Разделов.
Тогда, один член семьи, так называемый Лидер Группы, назначает подмножество мелких потоков (разделов) каждому члену семьи.
Это подразумевает, что каждая выдра ответственна только за ту часть потока, которую она мониторит.
Работая совместно в этом случае, каждая выдрячья семья называется Группой Консьюмеров, которая успевает следить за своей частью потока сообщений, сколько бы их не было всего в реке.
Более того, если выдра заболела или у нее есть дела, ее работу можно поручить другой выдре в ее группе.
Поскольку кто-то всегда был рядом, выдры были Высоко доступными.
И поскольку они могли справляться с Незапланированными Ситуациями, они были Отказоустойчивыми.
Еще существовала магическая часть леса, Земля Потоковой Обработки, где выдры могли делать реально классные вещи с событиями в реке.
Целая книга написана об этом магическом месте: Mastering Kafka Streams and ksqlDB
Выдры также построили дороги, которые называются Кафка Коннекторы, чтобы донести сообщения других сообществ в реку Кафка. Все присоединились к веселью.
Кафка продолжала помогать многим другим во всем мире. И возвращалась обратно в лес.
Жизнь шла своим чередом многие годы, а выдры жили долго и счастливо.
Я не удержалась, вот вам несколько фактов про выдр:
Выдрята, или щенки выдр, спят у мам-выдр на груди.
Взрослые выдры держат друг друга за лапки во сне, чтобы их не разделило течение.
А одинокие выдры, чтобы не дрейфовать, заворачиваются в водоросли.
Строго говоря, автор использует термин otter, что переводится как выдровые, и включает себя 13 видов животных с распространением по всему миру, кроме Австралии.
И если эти слайды вы действительно использовали этот материал на детях в образовательных целях, то завершить можно речевым упражнением:
В недрах тундры выдры в гетрах тырят в ведра ядра кедров. Выдрав с выдры в тундре гетры, вытру выдрой ядра кедра, вытру гетрой выдре морду ядра в вёдра, выдру в тундру.