{"id":37849,"date":"2019-10-31T22:20:09","date_gmt":"2019-10-31T19:20:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kafka-i-mikroservisy-obzor\/"},"modified":"2019-10-31T22:20:09","modified_gmt":"2019-10-31T19:20:09","slug":"kafka-i-mikroservisy-obzor","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kafka-i-mikroservisy-obzor","title":{"rendered":"Kafka dhe mikrosh\u00ebrbimet: nj\u00eb p\u00ebrmbledhje","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kafka dhe mikrosh\u00ebrbimet: nj\u00eb p\u00ebrmbledhje\" src=\"\/wp-content\/uploads\/2019\/09\/ab0534ad5d28b3c3aa03e4e0b2d3101b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T\u00eb gjith\u00eb p\u00ebrsh\u00ebndetje. N\u00eb k\u00ebt\u00eb artikull do t\u00eb flas p\u00ebr arsyet q\u00eb ne n\u00eb Avito zgjodh\u00ebm Kafka gjasht\u00eb muaj m\u00eb par\u00eb, dhe se \u00e7far\u00eb p\u00ebrfaq\u00ebson ajo. Do t\u00eb ndaj me ju nj\u00eb nga rastet e p\u00ebrdorimit \u2014 broker mesazhesh. Dhe n\u00eb fund, do t\u00eb flasim p\u00ebr p\u00ebrfitimet q\u00eb kemi marr\u00eb nga p\u00ebrdorimi i qasjes Kafka si Sh\u00ebrbim.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"problema\">Problemi<\/h1>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kafka dhe mikrosh\u00ebrbimet: nj\u00eb p\u00ebrmbledhje\" src=\"\/wp-content\/uploads\/2019\/09\/dfa5e231847cee67259da17867a11812.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Fillimisht, pak kontekst. Disa koh\u00eb m\u00eb par\u00eb filluam t\u00eb largohemi nga arkitektura monolite, dhe tani n\u00eb Avito kemi disa qindra sh\u00ebrbime t\u00eb ndryshme. Ato kan\u00eb magazinat e tyre, kupol\u00ebn e teknologjive dhe p\u00ebrgjigjen p\u00ebr pjes\u00ebn e tyre t\u00eb logjik\u00ebs s\u00eb biznesit. <\/p>\n<p><\/p>\n<p>Nj\u00eb nga problemet me numrin e madh t\u00eb sh\u00ebrbimeve \u00ebsht\u00eb komunikimi. Sh\u00ebrbimi A shpesh d\u00ebshiron t\u00eb dij\u00eb informacionin q\u00eb disponon sh\u00ebrbimi B. N\u00eb k\u00ebt\u00eb rast, sh\u00ebrbimi A i drejtohet sh\u00ebrbimit B p\u00ebrmes nj\u00eb API t\u00eb sinkronizuar. Sh\u00ebrbimi B d\u00ebshiron t\u00eb dij\u00eb \u00e7far\u00eb po ndodh tek sh\u00ebrbimet G dhe D, nd\u00ebrsa ato, p\u00ebr nga ana e tyre, jan\u00eb t\u00eb interesuara p\u00ebr sh\u00ebrbimet A dhe B. Kur numri i k\u00ebtyre sh\u00ebrbimeve \u201ckurioze\u201d rritet, lidhjet midis tyre kthehen n\u00eb nj\u00eb gjum\u00eb t\u00eb ngat\u00ebrruar.<\/p>\n<p><\/p>\n<p>Megjithat\u00eb, n\u00eb \u00e7do moment, sh\u00ebrbimi A mund t\u00eb b\u00ebhet i paaksesuesh\u00ebm. \u00c7far\u00eb duhet t\u00eb b\u00ebj\u00eb sh\u00ebrbimi B dhe t\u00eb gjith\u00eb sh\u00ebrbimet e tjera t\u00eb lidhura me t\u00eb n\u00eb k\u00ebt\u00eb rast? N\u00ebse p\u00ebr t\u00eb kryer nj\u00eb operacion biznesi \u00ebsht\u00eb e nevojshme t\u00eb kryhen nj\u00eb grup thirrjesh sinkronike radhazi, probabiliteti i d\u00ebshtimit t\u00eb gjith\u00eb operacionit b\u00ebhet edhe m\u00eb i lart\u00eb (dhe sa m\u00eb e gjat\u00eb t\u00eb jet\u00eb kjo rrjedh\u00eb). <\/p>\n<p><\/p>\n<h1 id=\"vybor-tehnologii\">Zgjedhja e teknologjis\u00eb<\/h1>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kafka dhe mikrosh\u00ebrbimet: nj\u00eb p\u00ebrmbledhje\" src=\"\/wp-content\/uploads\/2019\/09\/3acd7bcf3dded8093bdef6d627eb4071.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ok, problemet jan\u00eb t\u00eb qarta. Ato mund t\u00eb zgjidhen duke krijuar nj\u00eb sistem t\u00eb centralizuar t\u00eb shk\u00ebmbimit t\u00eb mesazheve nd\u00ebrmjet sh\u00ebrbimeve. Tani, \u00e7do sh\u00ebrbim duhet t\u00eb dij\u00eb vet\u00ebm p\u00ebr k\u00ebt\u00eb sistem shk\u00ebmbimi mesazhesh. P\u00ebrve\u00e7 k\u00ebsaj, vet\u00eb sistemi duhet t\u00eb jet\u00eb rezistent ndaj d\u00ebshtimeve dhe t\u00eb zgjeruesh\u00ebm horizontalisht, si dhe n\u00eb rast emergjencash duhet t\u00eb ruaj\u00eb nj\u00eb bufer thirrjesh p\u00ebr p\u00ebrpunim t\u00eb m\u00ebvonsh\u00ebm. <\/p>\n<p><\/p>\n<p>Tani le t\u00eb zgjedhim teknologjin\u00eb n\u00eb t\u00eb cil\u00ebn do t\u00eb realizohet d\u00ebrgimi i mesazheve. P\u00ebr k\u00ebt\u00eb, s\u00eb pari do t\u00eb kuptojm\u00eb se \u00e7far\u00eb presim nga ajo:<\/p>\n<p><\/p>\n<ul>\n<li>mesazhet nd\u00ebrmjet sh\u00ebrbimeve nuk duhet t\u00eb humbasin;<\/li>\n<li>mesazhet mund t\u00eb dublikohen;<\/li>\n<li>mesazhet mund t\u00eb ruhen dhe t\u00eb lexohet p\u00ebr disa dit\u00eb (bufferi persistent);<\/li>\n<li>sh\u00ebrbimet mund t\u00eb regjistrohen p\u00ebr t\u00eb dh\u00ebnat q\u00eb i interesojn\u00eb;<\/li>\n<li>disa sh\u00ebrbime mund t\u00eb lexojn\u00eb t\u00eb nj\u00ebjtat t\u00eb dh\u00ebna;<\/li>\n<li>mesazhet mund t\u00eb p\u00ebrmbajn\u00eb nj\u00eb payload t\u00eb detajuar dhe voluminoz (transferim t\u00eb gjendjes nga ngjarjet);<\/li>\n<li>ndonj\u00ebher\u00eb nevojitet nj\u00eb garanci p\u00ebr rendin e mesazheve.<\/li>\n<\/ul>\n<p><\/p>\n<p>Gjithashtu, na r\u00ebnd\u00ebsishme ishte t\u00eb zgjidhnim nj\u00eb sistem sa m\u00eb t\u00eb shkall\u00ebzuesh\u00ebm dhe t\u00eb besuesh\u00ebm me nj\u00eb kapacitet t\u00eb lart\u00eb kalimi (jo m\u00eb pak se 100k mesazhe disa kilobajt n\u00eb sekond\u00eb).<\/p>\n<p><\/p>\n<p>N\u00eb k\u00ebt\u00eb faz\u00eb, ne u ndam\u00eb me RabbitMQ (v\u00ebshtir\u00eb p\u00ebr ta mbajtur stabil n\u00eb rps t\u00eb larta), PGQ nga SkyTools (nuk \u00ebsht\u00eb mjaft i shpejt\u00eb dhe i shkall\u00ebzuesh\u00ebm) dhe NSQ (nuk \u00ebsht\u00eb i q\u00ebndruesh\u00ebm). T\u00eb gjitha k\u00ebto teknologji p\u00ebrdoren n\u00eb kompanin\u00eb ton\u00eb, por nuk i p\u00ebrshtaten detyr\u00ebs q\u00eb po zgjidhim. <\/p>\n<p><\/p>\n<p>Pastaj filluam t\u00eb shqyrtojm\u00eb teknologjit\u00eb e reja p\u00ebr ne \u2014 Apache Kafka, Apache Pulsar dhe NATS Streaming.<\/p>\n<p><\/p>\n<p>I pari q\u00eb e eliminuam ishte Pulsar. Vendos\u00ebm se Kafka dhe Pulsar jan\u00eb zgjidhje t\u00eb ngjashme. Dhe pavar\u00ebsisht se Pulsar ka qen\u00eb i provuar nga kompanit\u00eb e m\u00ebdha, m\u00eb i ri dhe ofron latenc\u00eb m\u00eb t\u00eb ul\u00ebt (n\u00eb teori), vendos\u00ebm nga k\u00ebto dy t\u00eb mbajm\u00eb Kafka, si standard de facto p\u00ebr k\u00ebto detyra. Probabilisht do t\u00eb kthehemi te Apache Pulsar n\u00eb t\u00eb ardhmen. <\/p>\n<p><\/p>\n<p>Dhe ja mbeten dy kandidat\u00eb: NATS Streaming dhe Apache Kafka. Ne i studiuam t\u00eb dy zgjidhjet n\u00eb m\u00ebnyr\u00eb t\u00eb detajuar, dhe t\u00eb dy u p\u00ebrshtat\u00ebn p\u00ebr detyr\u00ebn. Por n\u00eb fund, kishim frik\u00eb nga rinia relative e NATS Streaming (dhe nga vendimi i nj\u00eb nga zhvilluesve kryesor\u00eb, Tyler Treat, p\u00ebr t\u00eb l\u00ebn\u00eb projektin dhe p\u00ebr t\u00eb filluar t\u00eb tijin \u2014 Liftbridge). Megjithat\u00eb, moda Clustering e NATS Streaming nuk ofronte mund\u00ebsi p\u00ebr horizontal t\u00eb fort\u00eb t\u00eb shkall\u00ebzimit (ndoshta kjo nuk \u00ebsht\u00eb m\u00eb nj\u00eb problem pas shtimit t\u00eb mod\u00ebs s\u00eb ndarjes n\u00eb vitin 2017).<\/p>\n<p><\/p>\n<p>Megjithat\u00eb, NATS Streaming \u00ebsht\u00eb nj\u00eb teknologji e shk\u00eblqyer, e shkruar n\u00eb Go dhe ka mb\u00ebshtetje nga Cloud Native Computing Foundation. N\u00eb krahasim me Apache Kafka, nuk i nevojitet Zookeeper p\u00ebr t\u00eb funksionuar (ndoshta, <noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/KAFKA\/KIP-500%3A+Replace+ZooKeeper+with+a+Self-Managed+Metadata+Quorum\">shpejt mund t\u00eb thuhet e nj\u00ebjta gj\u00eb p\u00ebr Kafka<\/a><\/noindex>), pasi brenda saj implementon RAFT. N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, NATS Streaming \u00ebsht\u00eb m\u00eb e leht\u00eb n\u00eb administrim. Ne nuk p\u00ebrjashtojm\u00eb q\u00eb m\u00eb von\u00eb t\u00eb kthehemi p\u00ebrs\u00ebri n\u00eb k\u00ebt\u00eb teknologji. <\/p>\n<p><\/p>\n<p>Dhe megjithat\u00eb, deri m\u00eb sot fituesi yn\u00eb \u00ebsht\u00eb Apache Kafka. N\u00eb testet tona, ajo ka treguar nj\u00eb performanc\u00eb mjaft t\u00eb shpejt\u00eb (mbi nj\u00eb milion mesazhe n\u00eb sekond\u00eb p\u00ebr lexim dhe shk writing kur volumi i mesazheve \u00ebsht\u00eb 1 kilobajt), mjaft t\u00eb besueshme, t\u00eb shkall\u00ebzueshme dhe e provuar mbi baz\u00ebn e p\u00ebrvoj\u00ebs n\u00eb prodhim nga kompanit\u00eb e m\u00ebdha. P\u00ebrve\u00e7 k\u00ebsaj, Kafka mb\u00ebshtetet nga t\u00eb pakt\u00ebn disa kompani t\u00eb r\u00ebnd\u00ebsishme tregtare (ne, p\u00ebr shembull, p\u00ebrdorim versionin Confluent), dhe gjithashtu Kafka ka nj\u00eb ekosistem t\u00eb zhvilluar.<br \/>\n<br clear=\"left\">\n <\/p>\n<p><\/p>\n<h1 id=\"obzor-kafka\">P\u00ebrmbledhja e Kafka<\/h1>\n<p><\/p>\n<p>Para se t\u00eb fillojm\u00eb, po rekomandoj nj\u00eb lib\u00ebr t\u00eb shk\u00eblqyer \u2014 <em>\u00abKafka: Udh\u00ebzuesi p\u00ebrfundimtar\u00bb<\/em> (ushqimet jan\u00eb edhe n\u00eb p\u00ebrkthim n\u00eb rusisht, por termat paksa t\u00eb thyejn\u00eb tru). Aty mund t\u00eb gjeni informacionin e nevojsh\u00ebm p\u00ebr nj\u00eb kuptim themelor t\u00eb Kafka-s dhe edhe m\u00eb shum\u00eb. Dokumentacioni nga Apache dhe blogu nga Confluent gjithashtu jan\u00eb shkruar shk\u00eblqyer dhe leht\u00eb p\u00ebr t'u lexuar. <\/p>\n<p><\/p>\n<p>Tani, le t\u00eb shohim se si \u00ebsht\u00eb strukturuar Kafka nga nj\u00eb k\u00ebndv\u00ebshtrim i lart\u00eb. Topologjia baz\u00eb e Kafka-s p\u00ebrb\u00ebhet nga producer, consumer, broker dhe zookeeper.<\/p>\n<p><\/p>\n<h3 id=\"broker\">Broker<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kafka dhe mikrosh\u00ebrbimet: nj\u00eb p\u00ebrmbledhje\" src=\"\/wp-content\/uploads\/2019\/09\/82f34b5a1aadcdc07eef58eb5414b553.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Brokera (broker) \u00ebsht\u00eb p\u00ebrgjegj\u00ebse p\u00ebr ruajtjen e t\u00eb dh\u00ebnave tuaja. T\u00eb gjitha t\u00eb dh\u00ebnat ruhen n\u00eb form\u00eb binare, dhe brokeri di pak p\u00ebr at\u00eb q\u00eb ato p\u00ebrfaq\u00ebsojn\u00eb dhe cilat jan\u00eb strukturat e tyre. <\/p>\n<p><\/p>\n<p>\u00c7do lloj logjik i ngjarjeve zakonisht ndodhet n\u00eb tem\u00ebn e tij t\u00eb ve\u00e7ant\u00eb (topic). P\u00ebr shembull, ngjarja e krijimit t\u00eb nj\u00eb njoftimi mund t\u00eb p\u00ebrfshihet n\u00eb tem\u00ebn item.created, nd\u00ebrsa ngjarja e ndryshimit t\u00eb tij n\u00eb item.changed. Temat mund t\u00eb konsiderohen si klasifikues t\u00eb ngjarjeve. N\u00eb nivelin e tem\u00ebs mund t\u00eb vendosen parametrat e till\u00eb konfigurimi si: <\/p>\n<p><\/p>\n<ul>\n<li>v\u00ebllimi i t\u00eb dh\u00ebnave t\u00eb ruajtura dhe\/ose mosha e tyre (retention.bytes, retention.ms); <\/li>\n<li>fakti i tep\u00ebrt i t\u00eb dh\u00ebnave (replication factor);<\/li>\n<li>madh\u00ebsia maksimale e nj\u00eb mesazhi (max.message.bytes);<\/li>\n<li>numri minimal i replikave t\u00eb miratuara, me t\u00eb cilat mund t\u00eb shkruhet n\u00eb tem\u00eb (min.insync.replicas);<\/li>\n<li>mund\u00ebsia e kalimit n\u00eb nj\u00eb replik\u00eb t\u00eb pasifikuar t\u00eb pa sinkronizuar me humbje t\u00eb mundshme t\u00eb t\u00eb dh\u00ebnave (unclean.leader.election.enable);<\/li>\n<li>dhe shum\u00eb t\u00eb tjera (<noindex><a rel=\"nofollow\" href=\"https:\/\/kafka.apache.org\/documentation\/#topicconfigs\">https:\/\/kafka.apache.org\/documentation\/#topicconfigs<\/a><\/noindex>).<\/li>\n<\/ul>\n<p><\/p>\n<p>Nga ana tjet\u00ebr, \u00e7do tem\u00eb ndahet n\u00eb nj\u00eb ose m\u00eb shum\u00eb pjes\u00eb (partition). N\u00eb pjes\u00ebn e fundit, ngjarjet p\u00ebrfundojn\u00eb. N\u00ebse n\u00eb kluster ka m\u00eb shum\u00eb se nj\u00eb broker, at\u00ebher\u00eb pjes\u00ebt do t\u00eb shp\u00ebrndahen nj\u00ebsoj n\u00eb t\u00eb gjith\u00eb broker\u00ebt (sa m\u00eb shum\u00eb t\u00eb jet\u00eb e mundur), duke lejuar q\u00eb ngarkesa e shkrimit dhe leximin n\u00eb nj\u00eb tem\u00eb t\u00eb shkarkohet menj\u00ebher\u00eb n\u00eb disa broker\u00eb.<\/p>\n<p><\/p>\n<p>T\u00eb dh\u00ebnat n\u00eb disk ruhet p\u00ebr \u00e7do parti n\u00eb form\u00ebn e skedar\u00ebve segmentesh, t\u00eb cil\u00ebt nga default jan\u00eb nj\u00eb gigabajt (kontrollohet p\u00ebrmes log.segment.bytes). Nj\u00eb ve\u00e7ori e r\u00ebnd\u00ebsishme \u00ebsht\u00eb se fshirja e t\u00eb dh\u00ebnave nga partit\u00eb (kur ndodh ruajtja) ndodh pik\u00ebrisht n\u00eb segmentet (nuk mund t\u00eb fshihet nj\u00eb ngjarje e vetme nga partia, vet\u00ebm nj\u00eb segment i t\u00ebr\u00eb, p\u00ebr m\u00eb tep\u00ebr vet\u00ebm ai i pasivizuar).<\/p>\n<p><\/p>\n<h3 id=\"zookeeper\">Zookeeper<\/h3>\n<p><\/p>\n<p>Zookeeper funksionon si nj\u00eb depo e metadatalogjis\u00eb dhe si koordinator. Ai \u00ebsht\u00eb i aft\u00eb t\u00eb tregoj\u00eb n\u00ebse broker\u00ebt jan\u00eb aktiv\u00eb (mund t\u00eb shikoni k\u00ebt\u00eb nga k\u00ebndv\u00ebshtrimi i zookeeper p\u00ebrmes komandes <code>ls \/brokers\/ids<\/code>), cili prej broker\u00ebve \u00ebsht\u00eb kontrollues (<code>get \/controller<\/code>), n\u00ebse partit\u00eb jan\u00eb n\u00eb gjendje sinkronike me replikat e tyre (<code>get \/brokers\/topics\/topic_name\/partitions\/partition_number\/state<\/code>). Gjithashtu, fillimisht producentes dhe konsumator\u00ebt do t\u00eb drejtohen te zookeeper p\u00ebr t\u00eb m\u00ebsuar se cili broker ka cilat tema dhe parte. N\u00eb rastet kur p\u00ebr tem\u00ebn \u00ebsht\u00eb caktuar nj\u00eb faktor replikimi m\u00eb i madh se 1, zookeeper do t\u00eb tregoj\u00eb se cilat pjes\u00eb jan\u00eb lider\u00eb (n\u00eb to do t\u00eb b\u00ebhet shkruajti dhe edhe leximi). N\u00eb rastin e r\u00ebnies s\u00eb nj\u00eb brokeri, informacioni p\u00ebr lider-pjes\u00ebt e reja do t\u00eb regjistrohet pik\u00ebrisht n\u00eb zookeeper (q\u00eb nga versioni 1.1.0 n\u00eb m\u00ebnyr\u00eb asinkrone, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.confluent.io\/blog\/apache-kafka-supports-200k-partitions-per-cluster\">dhe kjo \u00ebsht\u00eb e r\u00ebnd\u00ebsishme.<\/a><\/noindex>).<\/p>\n<p><\/p>\n<p>N\u00eb versionet m\u00eb t\u00eb vjetra t\u00eb Kafka, zookeeper-i merrte p\u00ebrsip\u00ebr edhe ruajtjen e offset-\u00ebve, por tani ato ruhen n\u00eb nj\u00eb tem\u00eb t\u00eb ve\u00e7ant\u00eb. <code>__consumer_offsets<\/code> n\u00eb broker (megjithat\u00eb ju mund t\u00eb vazhdoni ta p\u00ebrdorni zookeeper p\u00ebr k\u00ebto q\u00ebllime). <\/p>\n<p><\/p>\n<p>M\u00ebnyra m\u00eb e thjesht\u00eb p\u00ebr ta kthyer t\u00eb dh\u00ebnat tuaja n\u00eb nj\u00eb nivel m\u00eb t\u00eb ul\u00ebt \u00ebsht\u00eb humbja e informacionit nga zookeeper. N\u00eb skenarin e till\u00eb, do t\u00eb jet\u00eb shum\u00eb e v\u00ebshtir\u00eb t\u00eb kuptohet se \u00e7far\u00eb dhe nga ku duhet lexuar. <\/p>\n<p><\/p>\n<h3 id=\"producer\">Prodhues<\/h3>\n<p><\/p>\n<p>Prodhuesi \u2014 \u00ebsht\u00eb m\u00eb s\u00eb shpeshti nj\u00eb sh\u00ebrbim q\u00eb kryen regjistrimin e t\u00eb dh\u00ebnave direkt n\u00eb Apache Kafka. Prodhuesi zgjedh tem\u00ebn ku do t\u00eb ruhen mesazhet e tij tematike dhe fillon t\u00eb regjistroj\u00eb informacion n\u00eb t\u00eb. P\u00ebr shembull, nj\u00eb prodhues mund t\u00eb jet\u00eb nj\u00eb sh\u00ebrbim shpalljesh. N\u00eb at\u00eb rast, ai do t\u00eb d\u00ebrgoj\u00eb n\u00eb tematike ngjarje si \"shpallje e krijuar\", \"shpallje e azhurnuar\", \"shpallje e fshir\u00eb\" etj. \u00c7do ngjarje p\u00ebrb\u00ebn nj\u00eb \u00e7ift \u00e7el\u00ebs-vler\u00eb.<\/p>\n<p><\/p>\n<p>P\u00ebr default, t\u00eb gjitha ngjarjet shp\u00ebrndahen n\u00ebp\u00ebr parti t\u00eb tem\u00ebs me round-robin n\u00ebse \u00e7el\u00ebsi nuk \u00ebsht\u00eb caktuar (duke humbur renditjen), dhe p\u00ebrmes MurmurHash (\u00e7el\u00ebsi) n\u00ebse \u00e7el\u00ebsi \u00ebsht\u00eb i pranish\u00ebm (renditje brenda nj\u00eb partie).<\/p>\n<p><\/p>\n<p>K\u00ebtu do t\u00eb theksojm\u00eb se Kafka garanton rendin e ngjarjeve vet\u00ebm brenda nj\u00eb partie. Por n\u00eb t\u00eb v\u00ebrtet\u00eb, shpesh kjo nuk \u00ebsht\u00eb nj\u00eb problem. P\u00ebr shembull, mund t\u00eb sigurohet q\u00eb t\u00eb gjitha ndryshimet e nj\u00eb njoftimi t\u00eb caktuar t\u00eb shtohen n\u00eb nj\u00eb parti (duke ruajtur k\u00ebshtu rendin e k\u00ebtyre ndryshimeve n\u00eb kuad\u00ebr t\u00eb njoftimit). Po ashtu, mund t\u00eb kaloni numrin rendor n\u00eb nj\u00eb prej fushave t\u00eb ngjarjes.<\/p>\n<p><\/p>\n<h3 id=\"consumer\">Consumer<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kafka dhe mikrosh\u00ebrbimet: nj\u00eb p\u00ebrmbledhje\" src=\"\/wp-content\/uploads\/2019\/09\/1f69a53dc19bb6c587883b8754cde29f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Konsumatori \u00ebsht\u00eb p\u00ebrgjegj\u00ebs p\u00ebr marrjen e t\u00eb dh\u00ebnave nga Apache Kafka. N\u00ebse kthehemi te shembulli m\u00eb sip\u00ebr, konsumatori mund t\u00eb jet\u00eb sh\u00ebrbimi i moderimit. Ky sh\u00ebrbim do t\u00eb abonoh\u00eb n\u00eb tem\u00ebn e sh\u00ebrbimit t\u00eb njoftimeve, dhe n\u00eb momentin q\u00eb shfaqet nj\u00eb njoftim i ri do ta marr\u00eb at\u00eb dhe do ta analizoj\u00eb p\u00ebr p\u00ebrputhshm\u00ebrin\u00eb me disa politika t\u00eb caktuara.<\/p>\n<p><\/p>\n<p>Apache Kafka mban mend se cilat ishin ngjarjet e fundit q\u00eb mori konsumatori (p\u00ebr k\u00ebt\u00eb p\u00ebrdoret tema e sh\u00ebrbimit <code>__consumer__offsets<\/code>), duke garantuar k\u00ebshtu q\u00eb gjat\u00eb leximit t\u00eb suksessh\u00ebm konsumatori nuk do t\u00eb marr\u00eb t\u00eb nj\u00ebjtin mesazh dy her\u00eb. Megjithat\u00eb, n\u00ebse p\u00ebrdoret opsioni enable.auto.commit = true dhe plot\u00ebsisht t'i dor\u00ebzohet Kafka detyra e ndjekjes s\u00eb pozicionit t\u00eb konsumatorit n\u00eb tem\u00eb, mund t\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.newrelic.com\/engineering\/kafka-consumer-config-auto-commit-data-loss\/\">humbasim t\u00eb dh\u00ebna<\/a><\/noindex>. N\u00eb kodin e prodhimit, zakonisht pozita e konsumatorit kontrollohet manualisht (zhvilluesi menaxhon momentin kur \u00ebsht\u00eb e detyrueshme q\u00eb t\u00eb ndodhi komitimi i ngjarjes s\u00eb lexuar).<\/p>\n<p><\/p>\n<p>N\u00eb rastet kur nj\u00eb konsumator nuk mjafton (p\u00ebr shembull, fluksi i ngjarjeve t\u00eb reja \u00ebsht\u00eb shum\u00eb i madh), mund t\u00eb shtoni disa konsumator\u00eb t\u00eb tjer\u00eb, duke i lidhur ata n\u00eb nj\u00eb grup konsumator\u00ebsh. Grupi i konsumator\u00ebve paraqet logjikisht nj\u00eb konsumator t\u00eb till\u00eb, por me shp\u00ebrndarjen e t\u00eb dh\u00ebnave midis pjes\u00ebtar\u00ebve t\u00eb grupit. Kjo i lejon secilit nga pjes\u00ebtar\u00ebt t\u00eb marr\u00eb pjes\u00ebn e tij t\u00eb mesazheve, duke e p\u00ebrshpejtuar k\u00ebshtu shpejt\u00ebsin\u00eb e leximit. <\/p>\n<p><\/p>\n<h1 id=\"rezultaty-testirovaniya\">Rezultatet e testimit<\/h1>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kafka dhe mikrosh\u00ebrbimet: nj\u00eb p\u00ebrmbledhje\" src=\"\/wp-content\/uploads\/2019\/09\/f7abe4bcf34fdb0d762c8a928bd873ee.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00ebtu nuk do t\u00eb shkruaj shum\u00eb tekste shpjeguese, thjesht do t\u00eb ndaj rezultatet e marra. Testimi u krye n\u00eb 3 makina fizike (12 CPU, 384GB RAM, 15k SAS DISK, 10GBit\/s Net), broker\u00ebt dhe zookeeper ishin vendosur n\u00eb lxc. <\/p>\n<p><\/p>\n<p><strong>Testimi i performanc\u00ebs<\/strong><\/p>\n<p><\/p>\n<p>Gjat\u00eb testimit u arrit\u00ebn rezultatet e m\u00ebposhtme.<\/p>\n<p><\/p>\n<ul>\n<li>Shpejt\u00ebsia e shkruarjes s\u00eb mesazheve me madh\u00ebsi 1KB nga 9 prodhues n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb \u2014 1,300,000 ngjarje n\u00eb sekond\u00eb.<\/li>\n<li>Shpejt\u00ebsia e leximit t\u00eb mesazheve me madh\u00ebsi 1KB nga 9 konsumator\u00eb n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb \u2014 1,500,000 ngjarje n\u00eb sekond\u00eb.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Testimi i q\u00ebndrueshm\u00ebris\u00eb<\/strong><\/p>\n<p><\/p>\n<p>Gjat\u00eb testimit u arrit\u00ebn rezultatet e m\u00ebposhtme (3 broker\u00eb, 3 zookeeper).<\/p>\n<p><\/p>\n<ul>\n<li>Mbyllja e nj\u00eb nga broker\u00ebt nuk \u00e7on n\u00eb ndalimin ose papast\u00ebrtin\u00eb e klasterit. Funksionimi vazhdon normalisht, por mbi broker\u00ebt e mbetur bie nj\u00eb ngarkes\u00eb m\u00eb e madhe.<\/li>\n<li>Mbyllja e dy broker\u00ebve n\u00eb rastin e nj\u00eb klasteri me tre broker\u00eb dhe min.isr = 2 \u00e7on n\u00eb papast\u00ebrtin\u00eb e klasterit p\u00ebr shkrim, por mbetet i aksesuesh\u00ebm p\u00ebr lexim. N\u00eb rast se min.isr = 1, klasteri vazhdon t\u00eb jet\u00eb i aksesuesh\u00ebm si p\u00ebr lexim ashtu edhe p\u00ebr shkrim. Megjithat\u00eb, ky mod ka t\u00eb b\u00ebj\u00eb me nj\u00eb k\u00ebrkes\u00eb p\u00ebr nj\u00eb ruajtje t\u00eb lart\u00eb t\u00eb t\u00eb dh\u00ebnave.<\/li>\n<li>Mbyllja e nj\u00eb nga server\u00ebve Zookeeper nuk \u00e7on n\u00eb ndalimin ose papast\u00ebrtin\u00eb e klasterit. Funksionimi vazhdon normalisht.<\/li>\n<li>Mbyllja e dy server\u00ebve Zookeeper \u00e7on n\u00eb papast\u00ebrtin\u00eb e klasterit deri sa t\u00eb rikthehet funksionimi i t\u00eb pakt\u00ebn nj\u00eb nga server\u00ebt Zookeeper. Ky pohim \u00ebsht\u00eb i v\u00ebrtet\u00eb p\u00ebr klasterin Zookeeper me 3 server\u00eb. Si rezultat i hulumtimeve, u vendos t\u00eb rritet klasteri Zookeeper n\u00eb 5 server\u00eb p\u00ebr t\u00eb rritur q\u00ebndrueshm\u00ebrin\u00eb ndaj shp\u00ebrthimeve. <br clear=\"left\">\n <\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"kafka-as-a-service\">Kafka si sh\u00ebrbim<\/h1>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kafka dhe mikrosh\u00ebrbimet: nj\u00eb p\u00ebrmbledhje\" src=\"\/wp-content\/uploads\/2019\/09\/19b2356131203cefbadfd90a25ae9674.png\" style=\"display:block;margin: 0 auto;\" \/> <\/p>\n<p><\/p>\n<p>Kemi siguruar q\u00eb Kafka \u00ebsht\u00eb nj\u00eb teknologji e shk\u00eblqyer q\u00eb na lejon t\u00eb zgjidhim detyr\u00ebn q\u00eb na \u00ebsht\u00eb caktuar (implementimi i nj\u00eb brokeri mesazhesh). Megjithat\u00eb, vendos\u00ebm t\u00eb ndalojm\u00eb sh\u00ebrbimet t\u00eb qasen direkt tek Kafka dhe e mbyll\u00ebm at\u00eb me sh\u00ebrbimin data-bus. Pse e b\u00ebm\u00eb k\u00ebt\u00eb? N\u00eb t\u00eb v\u00ebrtet\u00eb, ka disa arsye.<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>Data-bus mori p\u00ebrsip\u00ebr t\u00eb gjitha detyrat e lidhura me integrimin me Kafka (implementimin dhe konfigurimin e konsumator\u00ebve dhe prodhuesve, monitorimin, alarmin, regjistrimin, shkall\u00ebzimin etj.). K\u00ebshtu, integrimi me brokerin e mesazheve ndodh sa m\u00eb thjesht\u00eb t\u00eb jet\u00eb e mundur. <\/p>\n<p>\n<\/li>\n<li>\n<p>Data-bus na lejon t\u00eb abstraktojm\u00eb nga gjuha ose biblioteka specifike p\u00ebr pun\u00ebn me Kafka. <\/p>\n<p>\n<\/li>\n<li>\n<p>Data-bus u lejon sh\u00ebrbimeve t\u00eb tjera t\u00eb abstrahojn\u00eb nga shtresa e ruajtjes. ndoshta, n\u00eb nj\u00eb moment, do ta z\u00ebvend\u00ebsojm\u00eb Kafka me Pulsar, dhe askush nuk do ta v\u00ebr\u00eb re (t\u00eb gjitha sh\u00ebrbimet din\u00eb vet\u00ebm p\u00ebr API-n\u00eb e data-bus).<\/p>\n<p>\n<\/li>\n<li>\n<p>Data-bus e mori p\u00ebrsip\u00ebr validimin e skemave t\u00eb ngjarjeve.<\/p>\n<p>\n<\/li>\n<li>\n<p>Me ndihm\u00ebn e data-bus \u00ebsht\u00eb realizuar autentifikimi.<\/p>\n<p>\n<\/li>\n<li>\n<p>N\u00ebn mbules\u00ebn e data-bus mund t\u00eb p\u00ebrditsojm\u00eb versionet e Kafka pa ndonj\u00eb koh\u00eb pushimi, n\u00eb m\u00ebnyr\u00eb t\u00eb padukshme, dhe t\u00eb menaxhojm\u00eb centralisht konfigurimet e prodhuesve, konsumator\u00ebve, broker\u00ebve etj.<\/p>\n<p>\n<\/li>\n<li>\n<p>Data-bus na ka lejon p\u00ebr t\u00eb shtuar tiparet q\u00eb na nevojiten, t\u00eb cilat mungojn\u00eb n\u00eb Kafka (si\u00e7 jan\u00eb auditi i temave, kontrolli p\u00ebr anomali n\u00eb klaster, krijimi i DLQ, etj.).<\/p>\n<p>\n<\/li>\n<li>\n<p>Data-bus lejon t\u00eb realizohet failover n\u00eb m\u00ebnyr\u00eb qendrore p\u00ebr t\u00eb gjitha sh\u00ebrbimet.<\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Aktualisht, p\u00ebr t\u00eb filluar d\u00ebrgimin e ngjarjeve n\u00eb brokerin e mesazheve, mjafton t\u00eb lidh\u00ebsh nj\u00eb bibliotek\u00eb t\u00eb vog\u00ebl n\u00eb kodin e sh\u00ebrbimit t\u00ebnd. Kjo \u00ebsht\u00eb e gjitha. T\u00eb jep mund\u00ebsin\u00eb t\u00eb shkruash, lexosh dhe shkall\u00ebzosh me nj\u00eb rresht kodi. E t\u00ebra realizimi \u00ebsht\u00eb e fshehur nga ju, jasht\u00eb dalin vet\u00ebm disa doreza si\u00e7 \u00ebsht\u00eb p\u00ebrmasa e grupit. N\u00ebn kapak, sh\u00ebrbimi data-bus ngre n\u00eb Kubernetes numrin e nevojsh\u00ebm t\u00eb instance-ve t\u00eb prodhuesve dhe konsumer\u00ebve dhe u jep atyre konfigurimin e duhur, por e gjith\u00eb kjo \u00ebsht\u00eb transparente p\u00ebr sh\u00ebrbimin tuaj. <\/p>\n<p><\/p>\n<p>Sigurisht, nuk ka nj\u00eb plumb argjendi, dhe ky qasje ka kufizimet e veta.<\/p>\n<p><\/p>\n<ul>\n<li>Data-bus duhet t\u00eb mb\u00ebshtetet nga forcat tuaja, ndryshe nga bibliotekat e jashtme.<\/li>\n<li>Data-bus rrit numrin e nd\u00ebrveprimeve midis sh\u00ebrbimeve dhe brokerit t\u00eb mesazheve, \u00e7ka \u00e7on n\u00eb nj\u00eb r\u00ebnie t\u00eb performanc\u00ebs krahasuar me Kafka-n e past\u00ebr.<\/li>\n<li>Jo vet\u00ebm se mund t\u00eb fshihen nga sh\u00ebrbimet, ne nuk duam t\u00eb kopjojm\u00eb funksionalitetin e KSQL ose Kafka Streams n\u00eb data-bus, k\u00ebshtu q\u00eb ndonj\u00ebher\u00eb duhet t\u00eb lejojm\u00eb sh\u00ebrbimet t\u00eb kalojn\u00eb n\u00eb m\u00ebnyr\u00eb t\u00eb drejtp\u00ebrdrejt\u00eb. <\/li>\n<\/ul>\n<p><\/p>\n<p>N\u00eb rastin ton\u00eb, avantazhet p\u00ebrfunduan se ishin m\u00eb shum\u00eb se disavantazhet, dhe zgjidhja p\u00ebr t\u00eb mbuluar brokerin e mesazheve me nj\u00eb sh\u00ebrbim t\u00eb ve\u00e7ant\u00eb rezultoi e drejt\u00eb. Gjat\u00eb nj\u00eb viti p\u00ebrdorimi, nuk kemi pasur ndonj\u00eb aksident serioz apo probleme.<\/p>\n<p><\/p>\n<p>P.S. Falenderoj t\u00eb dashur\u00ebn time, Ekaterina Obalayeva, p\u00ebr imazhet fantastike t\u00eb k\u00ebsaj artikulli. N\u00ebse ju p\u00eblqen, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.instagram.com\/o.k_o.k_\/\">k\u00ebtu<\/a><\/noindex> do t\u00eb ket\u00eb edhe m\u00eb shum\u00eb ilustarime.<\/p>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/465315\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0432 \u0410\u0432\u0438\u0442\u043e \u0434\u0435\u0432\u044f\u0442\u044c \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0430\u0437\u0430\u0434 \u0432\u044b\u0431\u0440\u0430\u043b\u0438 Kafka, \u0438 \u0447\u0442\u043e \u043e\u043d\u0430 \u0438\u0437 \u0441\u0435\u0431\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442. \u041f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043a\u0435\u0439\u0441\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u0431\u0440\u043e\u043a\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0418 \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u043f\u043b\u044e\u0441\u044b \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0445\u043e\u0434\u0430 Kafka as a Service. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043c\u044b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28406,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37849","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0432 \u0410\u0432\u0438\u0442\u043e \u0434\u0435\u0432\u044f\u0442\u044c \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0430\u0437\u0430\u0434 \u0432\u044b\u0431\u0440\u0430\u043b\u0438 Kafka, \u0438 \u0447\u0442\u043e \u043e\u043d\u0430 \u0438\u0437 \u0441\u0435\u0431\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442. \u041f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043a\u0435\u0439\u0441\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u0431\u0440\u043e\u043a\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0418 \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u043f\u043b\u044e\u0441\u044b \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0445\u043e\u0434\u0430 Kafka as a Service. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043c\u044b\" \/>\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\/sq\/blog\/administrirovanie\/kafka-i-mikroservisy-obzor\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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\udd47Kafka \u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b: \u043e\u0431\u0437\u043e\u0440 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0432 \u0410\u0432\u0438\u0442\u043e \u0434\u0435\u0432\u044f\u0442\u044c \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0430\u0437\u0430\u0434 \u0432\u044b\u0431\u0440\u0430\u043b\u0438 Kafka, \u0438 \u0447\u0442\u043e \u043e\u043d\u0430 \u0438\u0437 \u0441\u0435\u0431\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442. \u041f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043a\u0435\u0439\u0441\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u0431\u0440\u043e\u043a\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0418 \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u043f\u043b\u044e\u0441\u044b \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0445\u043e\u0434\u0430 Kafka as a Service. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043c\u044b\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kafka-i-mikroservisy-obzor\" \/>\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-10-31T19:20:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:20:09+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\udd47Kafka dhe mikrosh\u00ebrbimet: p\u00ebrmbledhje | ProHoster","description":"P\u00ebrsh\u00ebndetje t\u00eb gjith\u00ebve. N\u00eb k\u00ebt\u00eb artikull do t\u00eb flas p\u00ebr arsyen pse ne n\u00eb Avito zgjodh\u00ebm Kafka n\u00ebnt\u00eb muaj m\u00eb par\u00eb dhe \u00e7far\u00eb p\u00ebrfaq\u00ebson ajo. Do t\u00eb ndaj nj\u00eb nga rastet e p\u00ebrdorimit \u2014 brokerin e mesazheve. Dhe m\u00eb n\u00eb fund, do t\u00eb flasim p\u00ebr p\u00ebrfitimet q\u00eb kemi marr\u00eb nga aplikimi i qasjes Kafka si Sh\u00ebrbim. Problemi P\u00ebr fillim nj\u00eb kontekst t\u00eb vog\u00ebl. Disa koh\u00eb m\u00eb par\u00eb ne","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kafka-i-mikroservisy-obzor","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\udd47Kafka \u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b: \u043e\u0431\u0437\u043e\u0440 | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0432 \u0410\u0432\u0438\u0442\u043e \u0434\u0435\u0432\u044f\u0442\u044c \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0430\u0437\u0430\u0434 \u0432\u044b\u0431\u0440\u0430\u043b\u0438 Kafka, \u0438 \u0447\u0442\u043e \u043e\u043d\u0430 \u0438\u0437 \u0441\u0435\u0431\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442. \u041f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043a\u0435\u0439\u0441\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u0431\u0440\u043e\u043a\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0418 \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u043f\u043b\u044e\u0441\u044b \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0445\u043e\u0434\u0430 Kafka as a Service. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043c\u044b","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kafka-i-mikroservisy-obzor","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-10-31T19:20:09+00:00","article:modified_time":"2019-10-31T19:20:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37849","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-23 19:31:03","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:19:23","updated":"2026-01-23 19:31:03","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/37849","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=37849"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/37849\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/28406"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=37849"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=37849"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=37849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}