Apache Kafka

Урок за Apache Kafka

Урок за Apache Kafka
В този урок ще видим как можем да използваме Apache Kafka и каква е неговата употреба. Ще разгледаме задълбочено различни терминологии, свързани с него, и ще започнем да работим и с тях.

Apache Kafka

За дефиниция на високо ниво, нека представим кратка дефиниция за Apache Kafka:

Apache Kafka е разпределен, толерантен към грешки, хоризонтално мащабируем дневник на фиксиране.

Това бяха няколко думи на високо ниво за Apache Kafka. Нека разберем подробно понятията тук.

Темата в Apache Kafka е точно като опашка, където се съхраняват съобщения. Тези съобщения се съхраняват за конфигурируем период от време и съобщението не се изтрива, докато не се постигне това време, дори ако е било консумирано от всички известни потребители.

Kafka е мащабируема, тъй като потребителите са тези, които всъщност съхраняват това, което съобщението е извлечено от тях последно като стойност на „компенсиране“. Нека да разгледаме фигура, за да разберем това по-добре:

Разделяне на теми и компенсиране на потребителите в Apache Kafka

Първи стъпки с Apache Kafka

За да започнете да използвате Apache Kafka, той трябва да бъде инсталиран на машината. За да направите това, прочетете Инсталиране на Apache Kafka на Ubuntu.

Уверете се, че имате активна инсталация на Kafka, ако искате да изпробвате примери, които представяме по-късно в урока.

Как работи?

С Кафка, Продуцент приложения публикуват съобщения който пристига в Кафка Възел а не директно към потребител. От този възел Kafka съобщенията се консумират от Консуматор приложения.

Производител и потребител на Kafka


Тъй като една тема може да получи много данни наведнъж, за да запази Kafka хоризонтално мащабируема, всяка тема е разделена на дялове и всеки дял може да живее на всяка машина на възел на клъстер. Нека се опитаме да го представим:

Тематични дялове


Отново Kafka Broker не води отчет кой потребител е консумирал колко пакета данни. Това е отговорността на потребителите да следи данните, които е консумирала.

Устойчивост на диска

Kafka продължава записите на съобщенията, които получава от производителите на диск, и не ги съхранява в паметта. Въпрос, който може да възникне, е как това прави нещата осъществими и бързи? Зад това имаше няколко причини, които го правят оптимален начин за управление на записите на съобщенията:

Разпределение и репликация на данни

Както проучихме по-горе, че дадена тема е разделена на дялове, всеки запис на съобщение се репликира на множество възли на клъстера, за да се поддържа редът и данните на всеки запис в случай, че някой от възела умре.

Въпреки че дялът се репликира на множество възли, все още има ръководител на дял възел, чрез който приложенията четат и записват данни по темата, а лидерът репликира данни на други възли, които се обозначават като последователи на този дял.

Ако данните от записа на съобщението са много важни за приложението, гаранцията за безопасността на записа на съобщението в един от възлите може да бъде увеличена чрез увеличаване на фактор на репликация на клъстера.

Какво е Zookeeper?

Zookeeper е силно толерантно към грешки, разпределено хранилище с ключ-стойност. Apache Kafka силно зависи от Zookeeper, за да съхранява клъстерни механики като сърдечния ритъм, разпространението на актуализации / конфигурации и т.н.).

Той позволява на брокерите на Kafka да се абонират за себе си и да знаят, когато се случи някаква промяна по отношение на лидера на дяла и разпределението на възлите.

Приложенията на производители и потребители директно комуникират със Zookeeper приложение, за да се знае кой възел е лидер на дяла за дадена тема, за да могат да извършват четене и запис от лидера на дяла.

Стрийминг

Потоковият процесор е основен компонент в клъстер на Kafka, който взема непрекъснат поток от данни за запис на съобщения от входни теми, обработва тези данни и създава поток от данни за извеждане на теми, които могат да бъдат всякакви, от кошче до база данни.

Напълно възможно е да се извърши проста обработка директно с помощта на API на производител / потребител, макар че за сложна обработка, като комбиниране на потоци, Kafka предоставя интегрирана библиотека Streaming API, но имайте предвид, че този API е предназначен да се използва в нашата собствена кодова база и това не не работи на брокер. Той работи подобно на потребителския API и ни помага да разширим работата по обработка на потока в множество приложения.

Кога да използвате Apache Kafka?

Както изучавахме в горните раздели, Apache Kafka може да се използва за справяне с голям брой записи на съобщения, които могат да принадлежат към практически безкраен брой теми в нашите системи.

Apache Kafka е идеалният кандидат, когато става въпрос за използване на услуга, която може да ни позволи да следваме управлявана от събития архитектура в нашите приложения. Това се дължи на възможностите му за устойчивост на данните, устойчива на грешки и силно разпределена архитектура, където критичните приложения могат да разчитат на нейната производителност.

Мащабируемата и разпределена архитектура на Kafka прави интеграцията с микроуслуги много лесна и дава възможност на приложението да се отдели с много бизнес логика.

Създаване на нова тема

Можем да създадем тестова тема тестване на сървъра на Apache Kafka със следната команда:

Създаване на тема

sudo kafka-теми.sh --create --zookeeper localhost: 2181 - репликационен фактор 1
--дялове 1 - тематично тестване

Ето какво получаваме обратно с тази команда:

Създайте нова тема на Kafka


Ще бъде създадена тестова тема, която можем да потвърдим със споменатата команда:

Потвърждение за създаването на тема Kafka

Писане на съобщения по тема

Както проучихме по-рано, един от API, присъстващ в Apache Kafka, е API на продуцента. Ще използваме този API, за да създадем ново съобщение и да публикуваме в току-що създадената тема:

Писане на съобщение до тема

sudo kafka-производител на конзоли.sh --broker-list localhost: 9092 - тематично тестване

Нека видим изхода за тази команда:

Публикуване на съобщение до Kafka Topic


След като натиснем клавиша, ще видим нова стрелка (>), което означава, че можем да извеждаме данни сега:

Въвеждане на съобщение


Просто напишете нещо и натиснете, за да започнете нов ред. Набрах 3 реда текстове:

Четене на съобщения от тема

След като публикувахме съобщение по темата Kafka, която създадохме, това съобщение ще бъде там за известно време, което може да се конфигурира. Сега можем да го прочетем с помощта на Потребителски API:

Четене на съобщения от тема

sudo kafka-console-consumer.sh --zookeeper localhost: 2181 --
тестване на теми - от началото

Ето какво получаваме обратно с тази команда:

Команда за четене на Съобщение от Кафка Тема


Ще можем да видим съобщенията или редовете, които сме написали, използвайки Producer API, както е показано по-долу:

Ако напишем друго ново съобщение с помощта на Producer API, то също ще се покаже незабавно от страна на потребителите:

Публикуване и потребление едновременно

Заключение

В този урок разгледахме как започваме да използваме Apache Kafka, който е отличен посредник за съобщения и може да действа и като специална единица за съхранение на данни.

Контролирайте и управлявайте движението на мишката между множество монитори в Windows 10
Двоен дисплей на мишката ви позволява да контролирате и конфигурирате движението на мишката между множество монитори, като забавя движенията му близо ...
WinMouse ви позволява да персонализирате и подобрите движението на показалеца на мишката на компютър с Windows
Ако искате да подобрите функциите по подразбиране на показалеца на мишката, използвайте безплатна програма WinMouse. Той добавя още функции, за да ви ...
Бутонът на левия бутон на мишката не работи в Windows 10
Ако използвате специална мишка с вашия лаптоп или настолен компютър, но бутонът на левия бутон на мишката не работи на Windows 10/8/7 по някаква причи...