Abstract | Cilj diplomskog rada je analizirati rad Apache Kafka platforme kao distribuiranog sustava za obradu sljedova podataka i razmjenu poruka po modelu objave i pretplate. Obrađeni su temeljni funkcije Kafke platforme kao i sam način rada. Pokazano je da Kafka platforma sprema poruke u teme koje mogu biti podijeljene na više particija. Kafka proizvođači objavljuju poruke na teme koje se nalaze na posredniku odnosno Kafka brokeru. Kafka potrošači čitaju poruke tako što se pretplaćuju na odgovarajuće teme. Praktični dio rada osmišljen je kao aplikacija za razmjenu poruka (engl. chat) između dva klijenta koji komuniciraju uz pomoć WebSocket i STOMP protokola, koristeći Apache Kafka platformu kao posrednika za poruke. Putem aplikacije za razmjenu poruka klijenti imaju mogućnosti razmjenjivati tekstualne poruke i datoteke određenog formata poput json i csv datoteka. Razvijena aplikacija sadrži generatore poruka koji služe za testiranje rada Kafka platforme kroz mogućnost generiranja manjeg, srednjeg i većeg broja poruka. Testiranje je provedeno u tri faze, pri čemu je tokom testiranja praćen vremenski period između prve i zadnje poruke koja uspješno stigne na proizvođača do potrošača. U prvoj fazi testiranja analizirano je prosječno vrijeme potrebno da poruke stignu na odredište (do potrošača) pod utjecajem promjene broja particija u Kafka temi i povećanja broja Kafka potrošača. U drugoj fazi testiranja analiziran je utjecaj veličine dva bitna konfiguracijska parametra i to batch.size i linger.ms na rad Kafka platforme. Konfiguracijski parametar batch.size predstavlja gornju granicu memorije (u bajtovima) grupiranih poruka planiranih za slanje i njegovim povećanjem omogućuje se slanje većeg broja poruka tokom jednog pojedinačnog slanja. Drugi analizirani konfiguracijski parametar linger.ms omogućuj grupiranje poruka odgodom slanja poruka, odnosno stvara umjetno kašnjenje u svrhu kreiranja grupe poruka za slanje. Rezultati druge faze analize pokazali su da oba parametra imaju značajan utjecaj na rad Kafka platforme i da je moguće naći optimalnu kombinaciju vrijednosti obaju parametara s kojom se minimizira vrijeme razmjene poruka između proizvođača i potrošača. U trećoj fazi testiran je utjecaj povećanja grupa potrošača koji čitaju podatke s iste particije u Kafka temi na vrijeme prijenosa slijeda poruka između proizvođača i potrošača. Na temelju dobivenih rezultata utvrđeno je da porast broja korisničkih grupa po istoj particiji povećava vrijeme prijenosa sljedova poruka. Stoga promjena broja particija u Kafka temi i dodavanje više potrošačkih grupa na istu particiju u Kafka temi kao i promjena konfiguracijskih parametara proizvođača značajno utječu na ukupno vrijeme prijenosa sljedova podataka u Kafka
platformi. |
Abstract (english) | This master thesis aims to analyze the operation of the Apache Kafka platform as a distributed system for processing data sequences and exchanging messages according to the publication and subscription model. The basic functions of the Kafka platform as well as the way of working are covered. In this thesis is shown that the Kafka platform stores messages on topics that can be divided into multiple partitions. Kafka producers publish messages on topics located on the intermediary or Kafka broker. Kafka consumers read messages by subscribing to the appropriate topics. The practical part of the work is designed as an application for exchanging messages (chat) between two clients that communicate with the help of WebSocket and STOMP protocols, using the Apache Kafka platform as a message broker. Through the messaging application, clients have the ability to exchange text messages and files of a specific format such as json and csv files. The developed application contains message generators that are used to test the operation of the Kafka platform, through the possibility of generating a small, medium and a large number of messages. The testing was carried out in three phases, during which the time period between the first and the last message that successfully reaches the producer from the consumer was monitored. In the first phase of testing, the average time required for messages to reach their destination (consumer) was analyzed under the influence of the change in the number of partitions in the Kafka topic and the increase in the number of Kafka consumers. In the second phase of testing, the influence of the size of two essential configuration parameters, namely the batch.size and linger.ms, on the operation of the Kafka platform was analyzed. The configuration parameter batch.size represents the upper memory limit (in bytes) of grouped messages planned for sending, and increasing it allows for sending a larger number of messages during one single sending. The second analyzed configuration parameter linger.ms, enables the grouping of messages by delaying the sending of messages, that is, it creates an artificial delay for the purpose of creating a group of messages to be sent. The results of the second phase of the analysis showed that both parameters have a significant impact on the operation of the Kafka platform. The results also show that it is possible to find an optimal combination of the values of both configuration parameters that minimizes the time of message exchange between producers and consumers. In the third phase, the impact of an increasing number of consumer groups who read data from the same partition in a Kafka topic, on the transmission time of a sequence of messages between producers and consumers was tested. Based on the obtained results, it was determined that the increase in the number of consumer groups per the same partition increases the time of message stream transmission. Therefore, changing the number of partitions in a Kafka topic and adding more consumer groups to the same partition in a Kafka topic, as well as changing the manufacturer's configuration parameters, significantly affect the total transmission time of data streams in the Kafka platform. |