{"id":54431,"date":"2019-12-26T00:00:00","date_gmt":"2019-12-25T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/kak-kafka-stala-bylyu"},"modified":"2020-02-18T14:02:26","modified_gmt":"2020-02-18T11:02:26","slug":"kak-kafka-stala-bylyu","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-kafka-stala-bylyu","title":{"rendered":"Kuidas Kafka t\u00f5elisuseks sai","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kuidas Kafka t\u00f5elisuseks sai\" src=\"\/wp-content\/uploads\/2019\/12\/e61bf54b10e4e44a5c680185b0c16655.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tere, Habr!<\/p>\n<p><\/p>\n<p>Ma t\u00f6\u00f6tan Tinkoffi meeskonnas, mis arendab oma teavituskeskust. Peamiselt arendan Java-s, kasutades Spring Booti, ja lahendan erinevaid tehnilisi probleeme, mis projektis esinevad.<\/p>\n<p><\/p>\n<p>Enamik meie mikroteenustest suhtleb omavahel as\u00fcnkroonselt s\u00f5numite vahendaja kaudu. Varem kasutasime selleks IBM MQ-d, mis enam ei suutnud koormust taluda, kuid millel olid k\u00f5rged saatmisgarantiid.<\/p>\n<p><\/p>\n<p>Asenduseks pakuti meile Apache Kafka, mis on suurep\u00e4raste skaleeritavuse v\u00f5imalustega, kuid vajab kahjuks peaaegu individuaalset l\u00e4henemist konfigureerimisele erinevates stsenaariumides. Lisaks ei v\u00f5imaldanud Kafka vaikimisi t\u00f6\u00f6tav v\u00e4hemalt korra saatmise mehhanism tagada vajalikku koosk\u00f5lastatust. J\u00e4rgmises jagan meie kogemusi Kafka konfigureerimisel, eriti kuidas seadistada ja elada t\u00e4pselt korra saatmisega.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"garantirovannaya-dostavka-i-ne-tolko\">Tagatud saatmine ja mitte ainult<\/h2>\n<p><\/p>\n<p>J\u00e4rgnevad seaded aitavad v\u00e4ltida mitmeid vaikimisi \u00fchenduskonfiguratsiooniga seotud probleeme. Kuid esmalt soovin t\u00e4helepanu p\u00f6\u00f6rata \u00fchele seadmele, mis h\u00f5lbustab v\u00f5imalikku t\u00f5rkeotsingut.<\/p>\n<p><\/p>\n<p>Selleks aitab <strong>client.id<\/strong> tootja ja tarbija jaoks. Esmapilgul v\u00f5ib v\u00e4\u00e4rtusena kasutada rakenduse nime, ja enamikul juhtudel t\u00f6\u00f6tab see. Kuid olukord, kus rakenduses on mitu tarbijat ja m\u00e4\u00e4rate neile sama client.id, viib j\u00e4rgmise hoiatuse tekkimiseni:<\/p>\n<p><\/p>\n<pre><code class=\"java\">org.apache.kafka.common.utils.AppInfoParser \u2014 Viga AppInfo mbean registreerimisel javax.management.InstanceAlreadyExistsException: kafka.consumer:type=app-info,id=kafka.test-0<\/code><\/pre>\n<p><\/p>\n<p>Kui soovite kasutada JMX-i Kafka rakenduses, siis v\u00f5ib see olla probleem. Sel juhul on k\u00f5ige parem kasutada client.id v\u00e4\u00e4rtusena rakenduse nime ja n\u00e4iteks teema kombinatsiooni. Meie konfiguratsiooni tulemust saab vaadata k\u00e4su <strong>kafka-consumer-groups<\/strong> Confluenti utiliidist:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kuidas Kafka t\u00f5elisuseks sai\" src=\"\/wp-content\/uploads\/2019\/12\/f807a93f36f262522a613161a549eb91.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd vaatame \u00fcle s\u00f5numi tagamisel toimimise stsenaariumi. Kafka tootjal on seadistuse <strong>acks<\/strong>, mis v\u00f5imaldab m\u00e4\u00e4rata, p\u00e4rast kui palju kinnitusi tuleb klastrijuhi poolt loetav s\u00f5num edastatuks lugeda. See seade v\u00f5ib v\u00f5tta j\u00e4rgmisi v\u00e4\u00e4rtusi:<\/p>\n<p><\/p>\n<ul>\n<li>0 \u2014 kinnitusi ei arvestata.<\/li>\n<li>1 \u2014 v\u00e4\u00e4rtus m\u00f5istes, vaja kinnitust ainult \u00fche replikalt.<\/li>\n<li>\u22121 \u2014 vajalikud kinnitused k\u00f5igilt s\u00fcnkroniseeritud replikalt (klastri seadistus) <strong>min.insync.replicas<\/strong>).<\/li>\n<\/ul>\n<p><\/p>\n<p>Nendest v\u00e4\u00e4rtustest on selge, et acks, mis on v\u00f5rdne \u22121, annab k\u00f5ige tugevamad garantiid, et s\u00f5num ei kao. <\/p>\n<p><\/p>\n<p>Kuidas me k\u00f5ik teame, jaotatud s\u00fcsteemid pole usaldusv\u00e4\u00e4rsed. Aja jooksul tekkinud t\u00f5rgete eest kaitsmiseks pakub Kafka tootja seadet <strong>retries<\/strong>, mis v\u00f5imaldab m\u00e4\u00e4rata uuspostituste arvu <strong>delivery.timeout.ms<\/strong>. Kuna retries seadistus on vaikimisi Integer.MAX_VALUE (2147483647), saab s\u00f5numi korduspostitamist reguleerida lihtsalt delivery.timeout.ms v\u00e4\u00e4rtust muutes.<\/p>\n<p><\/p>\n<h2 id=\"dvizhemsya-k-exactly-once-delivery\">Liigume t\u00e4pselt korra saatmise poole<\/h2>\n<p><\/p>\n<p>Toodud seadistused v\u00f5imaldavad meie tootjal s\u00f5numeid k\u00f5rge garantii tasemega edastada. R\u00e4\u00e4gime n\u00fc\u00fcd, kuidas tagada, et Kafka teemas oleks salvestatud ainult \u00fcks s\u00f5numikohane koopia? Lihtsaimatel juhtudel peab selle saavutamiseks tootjas olema seatud seade <strong>enable.idempotence<\/strong> v\u00e4\u00e4rtuseks true. Idempotentsus tagab, et kindlasse teema partitsiooni salvestatakse ainult \u00fcks s\u00f5num. Idempotentsuse lubamise eeltingimuseks on v\u00e4\u00e4rtused <strong>acks = all, retry &gt; 0, max.in.flight.requests.per.connection \u2264 5<\/strong>. Kui neid seadistusi ei m\u00e4\u00e4ra arendaja, seadistatakse automaatselt \u00fclaltoodud v\u00e4\u00e4rtused.<\/p>\n<p><\/p>\n<p>Kui idempotentsus on seatud, tuleb tagada, et samad s\u00f5numid l\u00e4heksid iga kord samadesse partitsioonidesse. Seda saab saavutada, seadistades v\u00f5tme ja parameetri partitioner.class tootjas. Alustame v\u00f5tmega. Iga saatmine peab olema sama. Seda on lihtne saavutada, kasutades mingit \u00e4riidentifikaatorit algsest s\u00f5numist. Parameeter partitioner.class on vaikimisi v\u00e4\u00e4rtusega <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/apache\/kafka\/blob\/trunk\/clients\/src\/main\/java\/org\/apache\/kafka\/clients\/producer\/internals\/DefaultPartitioner.java\">DefaultPartitioner<\/a><\/noindex>. Selle p\u00f5hilise partitsioneerimisstrateegia puhul toimime j\u00e4rgmiselt:<\/p>\n<p><\/p>\n<ul>\n<li>Kui partitsioon on s\u00f5numi saatmise ajal selgelt m\u00e4\u00e4ratud, kasutame seda.<\/li>\n<li>Kui partitsioon ei ole m\u00e4\u00e4ratud, kuid v\u00f5tme m\u00e4\u00e4rati \u2014 valime partitsiooni v\u00f5tme hash'i j\u00e4rgi.<\/li>\n<li>Kui ei ole m\u00e4\u00e4ratud ei partitsiooni ega v\u00f5tme \u2014 valime partitsioonid j\u00e4rjestikku (round-robin).<\/li>\n<\/ul>\n<p><\/p>\n<p>Lisaks, v\u00f5tme ja idempotentse saatmise kasutamine parameetriga <strong>max.in.flight.requests.per.connection = 1<\/strong> annab teile struktureeritud s\u00f5numite t\u00f6\u00f6tlemise Consumeris. Tuleb eraldi meeles pidada, et kui teie klastris on seadistatud juurdep\u00e4\u00e4su haldus, siis vajate \u00f5igusi idempotentse kirje tegemiseks teemasse.<\/p>\n<p><\/p>\n<p>Kui teile ei piisa idempotentse saatmise v\u00f5imalustest v\u00f5tme j\u00e4rgi v\u00f5i kui tootja poolne loogika n\u00f5uab andmete konsistentsuse s\u00e4ilitamist erinevate partitsioonide vahel, siis tulevad appi tehingud. Lisaks v\u00f5imaldab aheltehingud tingimuslikult s\u00fcnkroonida kirje Kafka-s, n\u00e4iteks andmebaasi kirje tegemisega. Tehingute saatmise lubamiseks peab tootja olema idempotentne ja lisaks seadistama <strong>transactional.id<\/strong>. Kui teie Kafka klaster on seadistatud juurdep\u00e4\u00e4su halduseks, siis tehinguliste kirjete jaoks, nagu ka idempotentsete jaoks, on vajalikud kirjutamise \u00f5igused, mis v\u00f5ivad olla antud maskiga, kasutades v\u00e4\u00e4rtust, mis on salvestatud transactional.id-s.<\/p>\n<p><\/p>\n<p>Formaalsetele tehingu identifikaatorina v\u00f5ib kasutada mis tahes stringi, n\u00e4iteks rakenduse nime. Kuid kui k\u00e4itate mitu instantsi sama rakenduse sama transactional.id-ga, siis esimene k\u00e4ivitatud instants peatatakse vea t\u00f5ttu, kuna Kafka peab seda zombiprotsessiks. <\/p>\n<p><\/p>\n<pre><code class=\"java\">org.apache.kafka.common.errors.ProducerFencedException: Tootja \u00fcritas toimingut, millel oli vana epohh. Kas on olemas uuem tootja sama transactionalId-ga v\u00f5i on tootja tehing aegunud vahendaja poolt.<\/code><\/pre>\n<p><\/p>\n<p>Selle probleemi lahendamiseks lisame rakenduse nimele suffiksi, mis koosneb hostinimest, mille saame keskkonnamuutujatest. <\/p>\n<p><\/p>\n<p>Tootja on seadistatud, kuid tehingud Kafka-s haldavad ainult s\u00f5numi n\u00e4htavuse ulatust. Olenemata tehingu seisundist satub s\u00f5num kohe teemasse, kuid omab lisaks s\u00fcsteemi atribuute.<\/p>\n<p><\/p>\n<p>Et sellised s\u00f5numid ei loetaks Consumer'iga liiga vara, peab ta seadistama parameetri <strong>isolation.level<\/strong> v\u00e4\u00e4rtuseks read_committed. Selline Consumer v\u00f5ib lugeda mitte-tehingulisi s\u00f5numeid nagu varem, kuid tehingulisi ainult p\u00e4rast kinnitust.<br \/>\nKui olete seadistanud k\u00f5ik eelnevalt loetletud seaded, siis olete seadistanud exactly once delivery. Palju \u00f5nne!<\/p>\n<p><\/p>\n<p>Kuid on veel \u00fcks n\u00fcanss. Transactional.id, mida me \u00fclal seadistame, on tegelikult tehingu prefix. Tehingu haldur lisab sellele j\u00e4rjestusnumbri. Saadud identifikaator antakse <strong>transactional.id.expiration.ms<\/strong>, mis on seadistatud Kafka klastris ja millel on vaikimisi v\u00e4\u00e4rtus \u201e7 p\u00e4eva\u201c. Kui selle aja jooksul rakendus ei saa \u00fchtegi s\u00f5numit, siis j\u00e4rgmise tehingulise saatmise katse korral saate <strong>InvalidPidMappingException<\/strong>. P\u00e4rast seda v\u00e4ljastab tehingu koordinaator j\u00e4rgmise tehingu jaoks uue j\u00e4rjestusnumbri. Sellega v\u00f5ib s\u00f5num olla kaduma l\u00e4inud, kui InvalidPidMappingException'i pole \u00f5igesti k\u00e4sitletud. <\/p>\n<p><\/p>\n<h2 id=\"vmesto-itogov\">Kokkuv\u00f5tte asemel<\/h2>\n<p><\/p>\n<p>Nagu v\u00f5ib n\u00e4ha, ei piisa lihtsalt s\u00f5numite saatmisest Kafka-sse. Tuleb valida parameetrite kombinatsioon ja olla valmis kiirete muudatuste tegemiseks. Selles artiklis p\u00fc\u00fcdsin \u00fcksikasjalikult n\u00e4idata exactly once delivery seadistust ja kirjeldasin mitmeid probleeme client.id ja transactional.id konfigureerimisel, millega me silmitsi seisisime. Allpool on l\u00fchidalt toodud tootja ja consumer seadistused.<\/p>\n<p><\/p>\n<p>Tootja:<\/p>\n<p><\/p>\n<ol>\n<li>acks = all<\/li>\n<li>retries &gt; 0<\/li>\n<li>enable.idempotence = true<\/li>\n<li>max.in.flight.requests.per.connection \u2264 5 (1 \u2014 korraliku saatmise jaoks)<\/li>\n<li>transactional.id = ${application-name}-${hostname}<\/li>\n<\/ol>\n<p><\/p>\n<p>Consumer:<\/p>\n<p><\/p>\n<ol>\n<li>isolation.level = read_committed<\/li>\n<\/ol>\n<p><\/p>\n<p>Vigade minimeerimiseks tulevastes rakendustes oleme teinud oma m\u00e4hise, mis p\u00f5hineb spring-konfiguratsiooni peal, kus on juba seatud v\u00e4\u00e4rtused m\u00f5nedele loetletud parameetritele.<\/p>\n<p><\/p>\n<p>Siin on paar materjali iseseisvaks \u00f5ppimiseks:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/KAFKA\/KIP-98+-+Exactly+Once+Delivery+and+Transactional+Messaging\">KIP-98 \u2014 Exactly Once Delivery ja Tehinguline S\u00f5numite Saatmine<\/a><\/noindex> <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kafka.apache.org\/documentation\/#configuration\">Seadistuste kirjeldus <\/a><\/noindex><\/li>\n<\/ul>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/tinkoff\/blog\/481784\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Tinkoff, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0435\u043d\u0442\u0440\u0430 \u043d\u043e\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439. \u041f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e \u043d\u0430 Java \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Spring boot \u0438 \u0440\u0435\u0448\u0430\u044e \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043d\u0430\u0448\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u043e\u043a\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0420\u0430\u043d\u0435\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 IBM MQ, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-54431","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Tinkoff, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0435\u043d\u0442\u0440\u0430 \u043d\u043e\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439. \u041f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e \u043d\u0430 Java \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Spring boot \u0438 \u0440\u0435\u0448\u0430\u044e \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043d\u0430\u0448\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u043e\u043a\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0420\u0430\u043d\u0435\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 IBM MQ, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-kafka-stala-bylyu\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a Kafka \u0441\u0442\u0430\u043b\u0430 \u0431\u044b\u043b\u044c\u044e | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Tinkoff, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0435\u043d\u0442\u0440\u0430 \u043d\u043e\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439. \u041f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e \u043d\u0430 Java \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Spring boot \u0438 \u0440\u0435\u0448\u0430\u044e \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043d\u0430\u0448\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u043e\u043a\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0420\u0430\u043d\u0435\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 IBM MQ, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-kafka-stala-bylyu\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-25T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:26+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Kuidas Kafka sai reaalsuseks | ProHoster","description":"Tere, Habr! Tegin t\u00f6\u00f6d Tinkoffi meeskonnas, mis tegeleb oma teavituskeskuse arendamisega. Enamasti arendan Java-s kasutades Spring boot'i ja lahendan erinevaid tehnilisi probleeme, mis projektis tekivad. Enamik meie mikroteenustest suhtleb omavahel as\u00fcnkroonselt s\u00f5numite vahendaja kaudu. Varasemalt kasutasime vahendajana IBM MQ, mis ei suutnud enam hakkama saada.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-kafka-stala-bylyu","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a Kafka \u0441\u0442\u0430\u043b\u0430 \u0431\u044b\u043b\u044c\u044e | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Tinkoff, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0435\u043d\u0442\u0440\u0430 \u043d\u043e\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439. \u041f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e \u043d\u0430 Java \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Spring boot \u0438 \u0440\u0435\u0448\u0430\u044e \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043d\u0430\u0448\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u043e\u043a\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0420\u0430\u043d\u0435\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 IBM MQ, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-kafka-stala-bylyu","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-25T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:26+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54431","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 11:22:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:06:37","updated":"2026-01-24 11:22:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/54431","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=54431"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/54431\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=54431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=54431"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=54431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}