{"id":71213,"date":"2020-02-24T16:09:17","date_gmt":"2020-02-24T13:09:17","guid":{"rendered":"https:\/\/prohoster.info\/blog\/opredelyaem-podhodyashhij-razmer-dlya-klastera-kafka-v-kubernetes"},"modified":"2020-03-03T16:14:29","modified_gmt":"2020-03-03T13:14:29","slug":"opredelyaem-podhodyashhij-razmer-dlya-klastera-kafka-v-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/opredelyaem-podhodyashhij-razmer-dlya-klastera-kafka-v-kubernetes","title":{"rendered":"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Sh\u00ebn. p\u00ebrkth.<\/b>: N\u00eb k\u00ebt\u00eb artikull, kompania Banzai Cloud ndan nj\u00eb shembull t\u00eb p\u00ebrdorimit t\u00eb utilitar\u00ebve t\u00eb saj t\u00eb ve\u00e7ant\u00eb p\u00ebr t\u00eb leht\u00ebsuar operimin e Kafka brenda Kubernetes. Udh\u00ebzimet e dh\u00ebna ilustrojn\u00eb se si mund t\u00eb p\u00ebrcaktoni madh\u00ebsin\u00eb optimale t\u00eb infrastruktur\u00ebs dhe t\u00eb konfiguroni Kafka p\u00ebr t\u00eb arritur kapacitetin e nevojsh\u00ebm t\u00eb kalimit.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/8a598ec7db091c2944a6442f9bc124da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nApache Kafka \u00ebsht\u00eb nj\u00eb platform\u00eb e shp\u00ebrndar\u00eb p\u00ebr rrjedhjen e t\u00eb dh\u00ebnave, e cila lejon krijimin e sistemeve t\u00eb besueshme, t\u00eb shkall\u00ebzueshme dhe me performanc\u00eb t\u00eb lart\u00eb t\u00eb rrjedhave n\u00eb koh\u00eb reale. Mund\u00ebsit\u00eb e saj t\u00eb jasht\u00ebzakonshme mund t\u00eb zgjerohen p\u00ebrmes Kubernetes. P\u00ebr k\u00ebt\u00eb, ne zhvilluam <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/banzaicloud\/kafka-operator\">Operatorin Open Source t\u00eb Kafka<\/a><\/noindex> dhe nj\u00eb mjet t\u00eb quajtur <noindex><a rel=\"nofollow\" href=\"https:\/\/banzaicloud.com\/docs\/supertubes\/overview\/\">Supertubes<\/a><\/noindex>. K\u00ebto lejojn\u00eb ekzekutimin e Kafka n\u00eb Kubernetes dhe p\u00ebrdorimin e funksioneve t\u00eb saj t\u00eb ndryshme, si konfigurimi i detajuar i brokerit, shkall\u00ebzimi n\u00eb baz\u00eb t\u00eb metrikeve me rimbalancim, ndjeshm\u00ebria ndaj raftit (rack awareness), dhe <i>(graceful)<\/i> l\u00ebshimi i p\u00ebrdit\u00ebsimeve, etj.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<blockquote><p>Provo Supertubes n\u00eb klastrin t\u00ebnd:<\/p>\n<pre><code class=\"bash\">curl https:\/\/getsupertubes.sh | sh dhe supertubes install -a --no-democluster --kubeconfig<\/code><\/pre>\n<p>\nOse kontakto <noindex><a rel=\"nofollow\" href=\"https:\/\/banzaicloud.com\/docs\/supertubes\/cli\/reference\/\">dokumentacionin<\/a><\/noindex>. Gjithashtu, mund t\u00eb lexoni rreth disa mund\u00ebsive t\u00eb Kafka, me t\u00eb cilat pun\u00ebsohet automatikisht p\u00ebrmes Supertubes dhe operatorit t\u00eb Kafka. P\u00ebr to, ne kemi shkruar tashm\u00eb n\u00eb blog:<\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/banzaicloud.com\/blog\/kafka-operator\/\">Oh, jo! Edhe nj\u00eb operator tjet\u00ebr Kafka p\u00ebr Kubernetes<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/banzaicloud.com\/blog\/kafka-alert\/\">Monitoroni dhe operoni Kafka n\u00eb baz\u00eb t\u00eb metrikeve Prometheus<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/banzaicloud.com\/blog\/kafka-rack-awareness\/\">Ndjeshm\u00ebria ndaj raftit t\u00eb Kafka n\u00eb Kubernetes<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/banzaicloud.com\/blog\/kafka-on-istio-performance\/\">Ekzekutimi i Apache Kafka mbi Istio \u2014 benchmark<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/banzaicloud.com\/blog\/kafka-topic-user-management\/\">Klastrit t\u00eb verifikuar t\u00eb p\u00ebrdoruesit dhe kontrollit t\u00eb qasjes me operatorin e Kafka<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/banzaicloud.com\/blog\/kafka-rolling-upgrade\/\">P\u00ebrdit\u00ebsimi i rrotulluesh\u00ebm t\u00eb Kafka dhe konfigurimi dinamik n\u00eb Kubernetes<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/banzaicloud.com\/blog\/kafka-envoy-protocol-filter\/\">Filtri i protokollit Envoy p\u00ebr Kafka, i mb\u00ebshtetur<\/a><\/noindex>.<\/li>\n<\/ul>\n<\/blockquote>\n<p>\nDuke vendosur t\u00eb vendosni nj\u00eb klaster Kafka n\u00eb Kubernetes, sigurisht q\u00eb do t\u00eb p\u00ebrballeni me problematik\u00ebn e p\u00ebrcaktimit t\u00eb madh\u00ebsis\u00eb optimale t\u00eb infrastruktur\u00ebs baz\u00eb dhe nevoj\u00ebs p\u00ebr t\u00eb optimizuar n\u00eb detaje konfigurimin e Kafka p\u00ebr t\u00eb p\u00ebrmbushur k\u00ebrkesat p\u00ebr kapacitetin e kalimit. Performanca maksimale e \u00e7do brokeri p\u00ebrcaktohet nga performanca e komponent\u00ebve t\u00eb infrastruktur\u00ebs n\u00eb baz\u00ebn e tij, si\u00e7 jan\u00eb memorja, procesori, shpejt\u00ebsia e diskut, kapaciteti i rrjetit, etj.<\/p>\n<p>Idealisht, konfigurimi i brokerit duhet t\u00eb jet\u00eb i till\u00eb q\u00eb t\u00eb gjith\u00eb element\u00ebt e infrastruktur\u00ebs t\u00eb p\u00ebrdoren n\u00eb maksimumin e potencialit t\u00eb tyre. Megjithat\u00eb, n\u00eb praktik\u00eb, nj\u00eb konfigurim i till\u00eb \u00ebsht\u00eb shum\u00eb i v\u00ebshtir\u00eb. M\u00eb e mundshme \u00ebsht\u00eb q\u00eb p\u00ebrdoruesit t\u00eb konfigurojn\u00eb broker\u00ebt n\u00eb nj\u00eb m\u00ebnyr\u00eb q\u00eb maksimalizojn\u00eb p\u00ebrdorimin e nj\u00eb ose dy komponenteve (diskut, memorie apo procesor). N\u00eb p\u00ebrgjith\u00ebsi, brokeri tregon maksimumin e performanc\u00ebs kur konfigurimi i tij lejon q\u00eb komponenti m\u00eb i ngadalsh\u00ebm t\u00eb p\u00ebrdoret \u201cn\u00eb kapacitet t\u00eb plot\u00eb\u201d. K\u00ebshtu, ne mund t\u00eb marrim nj\u00eb ide t\u00eb p\u00ebraf\u00ebrt mbi ngarkes\u00ebn me t\u00eb cil\u00ebn mund t\u00eb p\u00ebrballoj\u00eb nj\u00eb broker.<\/p>\n<p>Teorikisht, ne gjithashtu mund t\u00eb llogarisim numrin e broker\u00ebve q\u00eb nevojiten p\u00ebr t\u00eb p\u00ebrballuar nj\u00eb ngarkes\u00eb t\u00eb caktuar. Megjithat\u00eb, n\u00eb praktik\u00eb, ka shum\u00eb mund\u00ebsi konfigurimi n\u00eb nivele t\u00eb ndryshme, saq\u00eb t\u00eb vler\u00ebsosh performanc\u00ebn potenciale t\u00eb nj\u00eb konfigurimi \u00ebsht\u00eb shum\u00eb e v\u00ebshtir\u00eb (n\u00ebse jo e pamundur). N\u00eb fjal\u00eb t\u00eb tjera, \u00ebsht\u00eb shum\u00eb e v\u00ebshtir\u00eb t\u00eb planifikosh nj\u00eb konfigurim n\u00eb baz\u00eb t\u00eb nj\u00eb performance t\u00eb caktuar.<\/p>\n<p>P\u00ebr p\u00ebrdoruesit e Supertubes, ne zakonisht ndjekim qasjen e m\u00ebposhtme: fillojm\u00eb me nj\u00eb konfigurim t\u00eb caktuar (infrastruktura + cil\u00ebsime), pastaj masim performanc\u00ebn e saj, rregullojm\u00eb cil\u00ebsimet e brokerit dhe e p\u00ebrs\u00ebrisim procesin p\u00ebrs\u00ebri. Kjo ndodh deri n\u00eb momentin kur potenciali i komponentit m\u00eb t\u00eb ngadalsh\u00ebm t\u00eb infrastruktur\u00ebs \u00ebsht\u00eb plot\u00ebsisht e angazhuar.<\/p>\n<p>Me k\u00ebt\u00eb m\u00ebnyr\u00eb ne marrim nj\u00eb p\u00ebrfaq\u00ebsim m\u00eb t\u00eb qart\u00eb t\u00eb numrit t\u00eb broker\u00ebve t\u00eb nevojsh\u00ebm p\u00ebr klasterin q\u00eb t\u00eb p\u00ebrballoj\u00eb nj\u00eb ngarkes\u00eb t\u00eb caktuar (numri i broker\u00ebve gjithashtu varet nga faktor\u00eb t\u00eb tjer\u00eb, si numri minimal i replikave t\u00eb mesazheve p\u00ebr t\u00eb siguruar q\u00ebndrueshm\u00ebrin\u00eb, numri i lider\u00ebve t\u00eb partition-it, etj.). P\u00ebr m\u00eb tep\u00ebr, ne kemi nj\u00eb ide se p\u00ebr cilin komponent infrastruktural \u00ebsht\u00eb e d\u00ebshirueshme shkall\u00ebzimi n\u00eb m\u00ebnyr\u00eb vertikale.<\/p>\n<p>N\u00eb k\u00ebt\u00eb artikull do t\u00eb flasim p\u00ebr hapat q\u00eb ndjekim p\u00ebr t\u00eb \"nxjerr\u00eb gjith\u00e7ka\" nga komponent\u00ebt m\u00eb t\u00eb ngadalsh\u00ebm n\u00eb konfigurimet fillestare dhe p\u00ebr t\u00eb matur kapacitetin e klasterit Kafka. Nj\u00eb konfigurim i q\u00ebndruesh\u00ebm k\u00ebrkon t\u00eb pakt\u00ebn tre broker\u00eb q\u00eb funksionojn\u00eb.<code>min.insync.replicas=3<\/code>), t\u00eb shp\u00ebrndara n\u00eb tre zona t\u00eb ndryshme t\u00eb disponueshm\u00ebris\u00eb. P\u00ebr konfigurimin, zgjerimin dhe monitorimin e infrastruktur\u00ebs Kubernetes, ne p\u00ebrdorim platform\u00ebn ton\u00eb t\u00eb menaxhimit t\u00eb kontejner\u00ebve p\u00ebr nube hibride \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/banzaicloud\/pipeline\">Pipeline<\/a><\/noindex>. Ajo mb\u00ebshtet on-premise (bare metal, VMware) dhe pes\u00eb lloje nube (Alibaba, AWS, Azure, Google, Oracle), si dhe \u00e7do kombinim t\u00eb tyre.<\/p>\n<h2>Mendime mbi infrastruktur\u00ebn dhe konfigurat\u00ebn e klasterit Kafka<\/h2>\n<p>\nP\u00ebr shembujt e m\u00ebposht\u00ebm, ne zgjodh\u00ebm AWS si ofruesin e sh\u00ebrbimeve n\u00eb nube dhe EKS si shp\u00ebrndarjen e Kubernetes. Nj\u00eb konfigurim t\u00eb ngjash\u00ebm mund t\u00eb realizohet me <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/banzaicloud\/pke\">PKE<\/a><\/noindex> \u2014 shp\u00ebrndarja e Kubernetes nga Banzai Cloud, e certifikuar nga CNCF.<\/p>\n<h3>Disku<\/h3>\n<p>\nAmazon ofron lloje t\u00eb ndryshme <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/ebs-volume-types.html\">t\u00eb volumeve EBS<\/a><\/noindex>. N\u00eb thelb, <i>gp2<\/i> dhe <i>io1<\/i> bazohet n\u00eb disqe SSD, megjithat\u00eb p\u00ebr t\u00eb siguruar nj\u00eb shkall\u00eb t\u00eb lart\u00eb kalimi, <i>gp2<\/i> konsumon kredit\u00eb e grumbulluara <i>(I\/O credits)<\/i>, prandaj ne preferuam llojin <i>io1<\/i>, i cili ofron nj\u00eb shkall\u00eb t\u00eb q\u00ebndrueshme t\u00eb lart\u00eb kalimi.<\/p>\n<h3>Llojet e instancave<\/h3>\n<p>\nPerformanca e Kafka varet shum\u00eb nga cache-i i faqeve t\u00eb sistemit operativ, prandaj na duhen instanca me mjaftuesh\u00ebm memorie p\u00ebr broker\u00ebt (JVM) dhe cache-in e faqeve. Instanca <i>c5.2xlarge<\/i> \u00ebsht\u00eb nj\u00eb fillim i mir\u00eb, pasi ka 16 GB memorie dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/ebs-optimized.html\">\u00ebsht\u00eb optimizuar p\u00ebr pun\u00eb me EBS.<\/a><\/noindex>E meta e tij \u00ebsht\u00eb se ai mund t\u00eb siguroj\u00eb performanc\u00eb maksimale p\u00ebr m\u00eb shum\u00eb se 30 minuta \u00e7do 24 or\u00eb. N\u00ebse ngarkesa e pun\u00ebs k\u00ebrkon performanc\u00eb maksimale p\u00ebr nj\u00eb periudh\u00eb m\u00eb t\u00eb gjat\u00eb, duhet t\u00eb shqyrtojm\u00eb lloje t\u00eb tjera instancash. Ne pik\u00ebrisht k\u00ebshtu vepruam, duke u ndalur n\u00eb <i>c5.4xlarge.<\/i>Ai siguron nj\u00eb shkall\u00eb maksimale kalimi n\u00eb <b>593.75 MB\/s.<\/b>Shkalla maksimale e kalimit p\u00ebr volumet EBS <i>io1<\/i> \u00ebsht\u00eb m\u00eb e lart\u00eb se ajo e instanc\u00ebs <i>c5.4xlarge.<\/i>, prandaj elementi m\u00eb i ngadalt\u00eb i infrastruktur\u00ebs duket se \u00ebsht\u00eb shkalla e kalimit I\/O e k\u00ebtij lloji instancash (\u00e7ka gjithashtu duhet t\u00eb konfirmohet nga rezultatet e testeve tona t\u00eb ngarkes\u00ebs).<\/p>\n<h3>Rrjeti<\/h3>\n<p>\nShkalla e kalimit t\u00eb rrjetit duhet t\u00eb jet\u00eb e mjaftueshme n\u00eb krahasim me performanc\u00ebn e instanc\u00ebs VM dhe diskun; ndryshe, rrjeti b\u00ebhet nj\u00eb ngushtic\u00eb. N\u00eb rastin ton\u00eb, nd\u00ebrfaqja e rrjetit <i>c5.4xlarge.<\/i> mb\u00ebshtet shpejt\u00ebsin\u00eb deri n\u00eb 10 Gb\/s, q\u00eb \u00ebsht\u00eb duksh\u00ebm m\u00eb e lart\u00eb se shkalla e kalimit I\/O e instanc\u00ebs VM.<\/p>\n<h3>Dislokimi i broker\u00ebve<\/h3>\n<p>\nBrokers duhet t\u00eb instalohen (planifikohen n\u00eb Kubernetes) n\u00eb nodet e dedikuara, p\u00ebr t\u00eb shmangur konkurrenc\u00ebn me proceset e tjera p\u00ebr burimet e CPU, memories, rrjetit dhe diskut.<\/p>\n<h3>Versioni Java<\/h3>\n<p>\nZgjedhja logjike \u00ebsht\u00eb Java 11, pasi \u00ebsht\u00eb e pajtueshme me Docker n\u00eb kuptimin q\u00eb JVM e p\u00ebrcakton sakt\u00eb procesor\u00ebt dhe memories e disponueshme p\u00ebr kontejnerin ku funksionon brokeri. Duke ditur se kufijt\u00eb e procesor\u00ebve jan\u00eb t\u00eb r\u00ebnd\u00ebsish\u00ebm, JVM brenda dhe n\u00eb m\u00ebnyr\u00eb transparente p\u00ebrcakton numrin e flukseve GC dhe flukseve t\u00eb kompilimit JIT. Ne p\u00ebrdor\u00ebm imazhin Kafka <code>banzaicloud\/kafka:2.13-2.4.0<\/code>, duke p\u00ebrfshir\u00eb versionin Kafka 2.4.0 (Scala 2.13) n\u00eb Java 11.<\/p>\n<blockquote><p>N\u00ebse d\u00ebshironi t\u00eb dini m\u00eb shum\u00eb rreth Java\/JVM n\u00eb Kubernetes, shikoni publikimet tona t\u00eb m\u00ebposhtme:<\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/banzaicloud.com\/blog\/java-resource-limits\/\">Pse aplikacioni im Java \u00ebsht\u00eb OOMKilled<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/banzaicloud.com\/blog\/java10-container-sizing\/\">Si t\u00eb p\u00ebrcaktoni sakt\u00eb madh\u00ebsit\u00eb e kontejner\u00ebve p\u00ebr aplikacionet Java 10<\/a><\/noindex>.<\/li>\n<\/ul>\n<\/blockquote>\n<p><\/p>\n<h3>Cil\u00ebsimet e memories s\u00eb brokerit<\/h3>\n<p>\nKa ekzistojn\u00eb dy aspekte ky\u00e7e n\u00eb konfigurimin e memories s\u00eb brokerit: t\u00eb dh\u00ebnat p\u00ebr JVM dhe p\u00ebr pod-in e Kubernetes. Kufiri i memories i vendosur p\u00ebr pod-in duhet t\u00eb jet\u00eb m\u00eb i madh se madh\u00ebsia maksimale heap, n\u00eb m\u00ebnyr\u00eb q\u00eb JVM t\u00eb ket\u00eb hap\u00ebsir\u00eb p\u00ebr hap\u00ebsir\u00ebn meta t\u00eb Java, e cila ndodhet n\u00eb memorjen e saj, si dhe p\u00ebr cache-in e faqeve t\u00eb sistemit operativ, t\u00eb cilin Kafka e p\u00ebrdor aktivisht. Ne n\u00eb testet tona kemi nisur broker\u00ebt Kafka me parametrat <code>-Xmx4G -Xms2G<\/code>, dhe kufiri i memories p\u00ebr pod-in ishte <code>10 Gi<\/code>. Ju lutem vini re se cil\u00ebsimet e memories p\u00ebr JVM mund t\u00eb merren automatikisht p\u00ebrmes <code>-XX:MaxRAMPercentage<\/code> dhe <code>-X:MinRAMPercentage<\/code>, n\u00eb baz\u00eb t\u00eb limitit t\u00eb memories p\u00ebr pod-in.<\/p>\n<h3>Cil\u00ebsimet e procesor\u00ebve t\u00eb brokerit<\/h3>\n<p>\nP\u00ebr gjith\u00ebsisht, mund t\u00eb rritet performanca duke rritur paralelizmin n\u00ebp\u00ebrmjet rritjes s\u00eb numrit t\u00eb flukseve t\u00eb p\u00ebrdorura nga Kafka. Sa m\u00eb shum\u00eb procesor\u00eb t\u00eb jen\u00eb t\u00eb disponuesh\u00ebm p\u00ebr Kafka, aq m\u00eb mir\u00eb. N\u00eb testin ton\u00eb filluam me nj\u00eb kufi prej 6 procesor\u00ebsh dhe gradualisht (n\u00eb iteracione) e rrit\u00ebm numrin e tyre deri n\u00eb 15. P\u00ebr m\u00eb tep\u00ebr, ne vendos\u00ebm <code>num.network.threads=12<\/code> n\u00eb cil\u00ebsimet e brokerit, p\u00ebr t\u00eb rritur numrin e flukseve q\u00eb pranojn\u00eb t\u00eb dh\u00ebna nga rrjeti dhe i d\u00ebrgojn\u00eb ato. Menj\u00ebher\u00eb, duke kuptuar se brokerat pasues nuk mund t\u00eb marrin replikat mjaft shpejt, e rrit\u00ebm <code>num.replica.fetchers<\/code> deri n\u00eb 4, p\u00ebr t\u00eb p\u00ebrshpejtuar shpejt\u00ebsin\u00eb me t\u00eb cil\u00ebn brokerat pasues replikonin mesazhet nga lider\u00ebt.<\/p>\n<h3>Instrumenti i gjenerimit t\u00eb ngarkes\u00ebs<\/h3>\n<p>\nDuhet t\u00eb sigurohemi q\u00eb potenciali i gjeneratorit t\u00eb ngarkes\u00ebs t\u00eb mos shteroj\u00eb para se klasteri Kafka (benchmark-u i t\u00eb cilit po kryhet) t\u00eb arrij\u00eb ngarkes\u00ebn e saj maksimale. N\u00eb terma t\u00eb tjer\u00eb, \u00ebsht\u00eb e nevojshme t\u00eb b\u00ebhet nj\u00eb vler\u00ebsim paraprak i mund\u00ebsive t\u00eb mjetit t\u00eb gjenerimit t\u00eb ngarkes\u00ebs, si dhe t\u00eb zgjidhen p\u00ebr t\u00eb tipet e instance-ve me num\u00ebr t\u00eb mjaftuesh\u00ebm procesor\u00ebsh dhe memories. N\u00eb k\u00ebt\u00eb rast, mjeti yn\u00eb do t\u00eb prodhoj\u00eb m\u00eb shum\u00eb ngarkes\u00eb se sa klasteri Kafka \u00ebsht\u00eb n\u00eb gjendje t\u00eb p\u00ebrballoj\u00eb. Pas shum\u00eb eksperimenteve, ne u ndal\u00ebm n\u00eb tre instance <i>c5.4xlarge.<\/i>, n\u00eb secil\u00ebn prej t\u00eb cilave u ejecua gjeneratori.<\/p>\n<h2>Benchmarking<\/h2>\n<p>\nMatja e performanc\u00ebs \u00ebsht\u00eb nj\u00eb proces iterativ q\u00eb p\u00ebrfshin stadet e m\u00ebposhtme:<\/p>\n<ul>\n<li> konfigurimi i infrastruktur\u00ebs (klasterit EKS, klasterit Kafka, mjetit p\u00ebr gjenerimin e ngarkes\u00ebs, si dhe Prometheus dhe Grafana);<\/li>\n<li> gjenerimi i ngarkes\u00ebs p\u00ebr nj\u00eb periudh\u00eb t\u00eb caktuar p\u00ebr filtrimin e devijimeve t\u00eb rast\u00ebsishme n\u00eb treguesit e performanc\u00ebs q\u00eb mblidhen;<\/li>\n<li> rregullimi i infrastruktur\u00ebs dhe konfigurimit t\u00eb brokerit n\u00eb baz\u00eb t\u00eb treguesve t\u00eb performanc\u00ebs s\u00eb v\u00ebzhguar;<\/li>\n<li> p\u00ebrs\u00ebritja e procesit deri sa t\u00eb arrihet niveli i k\u00ebrkuar i kapacitetit t\u00eb klasterit Kafka. Gjat\u00eb k\u00ebtij procesi, ai duhet t\u00eb jet\u00eb stabilisht i riprodhuesh\u00ebm dhe t\u00eb tregoj\u00eb variacione minimale t\u00eb kapacitetit.<\/li>\n<\/ul>\n<p>\nN\u00eb seksionin e m\u00ebpassh\u00ebm jan\u00eb p\u00ebrshkruar hapat q\u00eb jan\u00eb ndjekur gjat\u00eb procesit t\u00eb benchmarking-ut t\u00eb klasterit provues.<\/p>\n<h3>Mjetet<\/h3>\n<p>\nP\u00ebr t\u00eb p\u00ebrshpejtuar implementimin e konfiguracionit baz\u00eb, gjenerimin e ngarkes\u00ebs dhe matjen e performanc\u00ebs u p\u00ebrdor\u00ebn mjetet e m\u00ebposhtme:<\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/banzaicloud.com\/docs\/pipeline\/overview\/\">Banzai Cloud Pipeline<\/a><\/noindex> p\u00ebr organizimin e klasterit EKS nga Amazon me <noindex><a rel=\"nofollow\" href=\"https:\/\/prometheus.io\/\">Prometheus<\/a><\/noindex> (p\u00ebr mbledhjen e metrikave t\u00eb Kafka dhe infrastruktur\u00ebs) dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/\">N\u00ebse tashm\u00eb e dini se \u00e7far\u00eb \u00ebsht\u00eb analiza e grupeve dhe se si ta b\u00ebni n\u00eb SQL, kaloni menj\u00ebher\u00eb n\u00eb seksionin e fundit.<\/a><\/noindex> (p\u00ebr vizualizimin e k\u00ebtyre metrikave). Ne p\u00ebrfituam nga <b>sh\u00ebrbimet<\/b> n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/banzaicloud\/pipeline\">Pipeline<\/a><\/noindex> e integruara, t\u00eb cilat ofrojn\u00eb monitorim federal, grumbullim t\u00eb centralizuar t\u00eb log-ve, skanimin e dob\u00ebsive, rikuperimin nga d\u00ebshtimet, sigurin\u00eb e nivelit korporativ dhe shum\u00eb t\u00eb tjera.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jamiealquiza\/sangrenel\">Sangrenel<\/a><\/noindex> \u2014 mjeti p\u00ebr testimin e ngarkes\u00ebs s\u00eb klasterit Kafka.<\/li>\n<li> Panelet Grafana p\u00ebr vizualizimin e metrikave t\u00eb Kafka dhe infrastruktur\u00ebs: <noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/grafana\/dashboards\/10123\">Kubernetes Kafka<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/grafana\/dashboards\/1860\">Node Exporter<\/a><\/noindex>.<\/li>\n<li> Supertubes CLI p\u00ebr konfigurimin maksimalisht t\u00eb thjesht\u00eb t\u00eb nj\u00eb klasteri Kafka n\u00eb Kubernetes. Zookeeper, Kafka operator, Envoy dhe shum\u00eb komponente t\u00eb tjera jan\u00eb instaluar dhe jan\u00eb konfiguruar si\u00e7 duhet p\u00ebr t\u00eb nisur nj\u00eb klaster Kafka t\u00eb gatsh\u00ebm p\u00ebr prodhim n\u00eb Kubernetes.\n<ul>\n<li> P\u00ebr instalimin <i>supertubes CLI<\/i> p\u00ebrdorni udh\u00ebzimet e dh\u00ebna <noindex><a rel=\"nofollow\" href=\"https:\/\/banzaicloud.com\/docs\/supertubes\/cli\/install\/\">k\u00ebtu<\/a><\/noindex>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/23ecf423b1ea66813406943ae7eabf61.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Kluster EKS<\/h3>\n<p>\nP\u00ebrgatitni klust\u00ebr EKS me nod t\u00eb dedikuar punues <i>c5.4xlarge.<\/i> n\u00eb zona t\u00eb ndryshme disponueshm\u00ebrie p\u00ebr pod-at me broker\u00ebt Kafka, si dhe node t\u00eb dedikuara p\u00ebr gjeneratorin e ngarkes\u00ebs dhe infrastruktur\u00ebn e monitorimit.<\/p>\n<pre><code class=\"bash\">banzai cluster create -f https:\/\/raw.githubusercontent.com\/banzaicloud\/kafka-operator\/master\/docs\/benchmarks\/infrastructure\/cluster_eks_202001.json<\/code><\/pre>\n<p>\nKur klusteri EKS t\u00eb jet\u00eb aktiv, aktivizoni <noindex><a rel=\"nofollow\" href=\"https:\/\/banzaicloud.com\/docs\/pipeline\/features\/integrated-services\/\">sh\u00ebrbimin e tij t\u00eb monitorimit<\/a><\/noindex> \u2014 ai do t\u00eb deploy Prometheus dhe Grafana n\u00eb kluster.<\/p>\n<h3>Komponent\u00ebt sistemik\u00eb t\u00eb Kafka<\/h3>\n<p>\nInstaloni komponent\u00ebt sistemik\u00eb t\u00eb Kafka (Zookeeper, kafka-operator) n\u00eb EKS duke p\u00ebrdorur supertubes CLI:<\/p>\n<pre><code class=\"bash\">supertubes install -a --no-democluster --kubeconfig<\/code><\/pre>\n<p><\/p>\n<h3>Klusteri Kafka<\/h3>\n<p>\nNga parazgjedhja n\u00eb EKS p\u00ebrdoren v\u00ebllime EBS t\u00eb tipit <i>gp2<\/i>, prandaj \u00ebsht\u00eb e nevojshme t\u00eb krijoni nj\u00eb klas\u00eb t\u00eb ve\u00e7ant\u00eb ruajtjeje t\u00eb bazuar n\u00eb v\u00ebllime <i>io1<\/i> p\u00ebr klusterin Kafka:<\/p>\n<pre><code class=\"plaintext\">kubectl create -f - &lt;&lt;EOF\napiVersion: storage.k8s.io\/v1\nkind: StorageClass\nmetadata:\n  name: fast-ssd\nprovisioner: kubernetes.io\/aws-ebs\nparameters:\n  type: io1\n  iopsPerGB: &quot;50&quot;\n  fsType: ext4\nvolumeBindingMode: WaitForFirstConsumer\nEOF<\/code><\/pre>\n<p>\nVendosni parametrin p\u00ebr broker\u00ebt <code>min.insync.replicas=3<\/code> dhe shp\u00ebrndani pod-at e broker\u00ebve n\u00eb node n\u00eb tri zona t\u00eb ndryshme disponueshm\u00ebrie:<\/p>\n<pre><code class=\"bash\">supertubes cluster create -n kafka --kubeconfig  -f https:\/\/raw.githubusercontent.com\/banzaicloud\/kafka-operator\/master\/docs\/benchmarks\/infrastructure\/kafka_202001_3brokers.yaml --wait --timeout 600<\/code><\/pre>\n<p><\/p>\n<h3>Temat<\/h3>\n<p>\nNe kemi nisur paralelisht tre instanca t\u00eb gjeneratorit t\u00eb ngarkes\u00ebs. Secila prej tyre shkruan n\u00eb tem\u00ebn e saj, dmth. na nevojiten gjithsej tre tema:<\/p>\n<pre><code class=\"bash\">supertubes cluster topic create -n kafka --kubeconfig  -f -&lt;&lt;EOF\napiVersion: kafka.banzaicloud.io\/v1alpha1\nkind: KafkaTopic\nmetadata:\n  name: perftest1\nspec:\n  name: perftest1\n  partitions: 12\n  replicationFactor: 3\n  retention.ms: &#039;28800000&#039;\n  cleanup.policy: delete\nEOF\n\nsupertubes cluster topic create -n kafka --kubeconfig  -f -&lt;&lt;EOF\napiVersion: kafka.banzaicloud.io\/v1alpha1\nkind: KafkaTopic\nmetadata:\n    name: perftest2\nspec:\n  name: perftest2\n  partitions: 12\n  replicationFactor: 3\n  retention.ms: &#039;28800000&#039;\n  cleanup.policy: delete\nEOF\n\nsupertubes cluster topic create -n kafka --kubeconfig  -f -&lt;&lt;EOF\napiVersion: kafka.banzaicloud.io\/v1alpha1\nkind: KafkaTopic\nmetadata:\n  name: perftest3\nspec:\n  name: perftest3\n  partitions: 12\n  replicationFactor: 3\n  retention.ms: &#039;28800000&#039;\n  cleanup.policy: delete\nEOF<\/code><\/pre>\n<p>\nP\u00ebr secil\u00ebn tem\u00eb, faktori i replikimit \u00ebsht\u00eb 3 \u2014 vlera minimale e rekomanduar p\u00ebr sisteme prodhimi me disponibilitet t\u00eb lart\u00eb.<\/p>\n<h3>Instrumenti i gjenerimit t\u00eb ngarkes\u00ebs<\/h3>\n<p>\nNe nis\u00ebm tre instance t\u00eb gjeneratorit t\u00eb ngarkes\u00ebs (secili shkruante n\u00eb nj\u00eb tem\u00eb t\u00eb ve\u00e7ant\u00eb). P\u00ebr pod-at e gjeneratorit t\u00eb ngarkes\u00ebs duhet t\u00eb specifikoni afinitet node, q\u00eb ata t\u00eb planifikohen vet\u00ebm n\u00eb node t\u00eb dedikuara p\u00ebr ta:<\/p>\n<pre><code class=\"plaintext\">apiVersion: extensions\/v1beta1\nkind: Deployment\nmetadata:\n  labels:\n    app: loadtest\n  name: perf-load1\n  namespace: kafka\nspec:\n  progressDeadlineSeconds: 600\n  replicas: 1\n  revisionHistoryLimit: 10\n  selector:\n    matchLabels:\n      app: loadtest\n  strategy:\n    rollingUpdate:\n      maxSurge: 25%\n      maxUnavailable: 25%\n    type: RollingUpdate\n  template:\n    metadata:\n      creationTimestamp: null\n      labels:\n        app: loadtest\n    spec:\n      affinity:\n        nodeAffinity:\n          requiredDuringSchedulingIgnoredDuringExecution:\n            nodeSelectorTerms:\n            - matchExpressions:\n              - key: nodepool.banzaicloud.io\/name\n                operator: In\n                values:\n                - loadgen\n      containers:\n      - args:\n        - -brokers=kafka-0:29092,kafka-1:29092,kafka-2:29092,kafka-3:29092\n        - -topic=perftest1\n        - -required-acks=all\n        - -message-size=512\n        - -workers=20\n        image: banzaicloud\/perfload:0.1.0-blog\n        imagePullPolicy: Always\n        name: sangrenel\n        resources:\n          limits:\n            cpu: 2\n            memory: 1Gi\n          requests:\n            cpu: 2\n            memory: 1Gi\n        terminationMessagePath: \/dev\/termination-log\n        terminationMessagePolicy: File\n      dnsPolicy: ClusterFirst\n      restartPolicy: Always\n      schedulerName: default-scheduler\n      securityContext: {}\n      terminationGracePeriodSeconds: 30<\/code><\/pre>\n<p>\nDisa pika p\u00ebr t'u marr\u00eb parasysh:<\/p>\n<ul>\n<li> Gjeneratori i ngarkes\u00ebs krijon mesazhe me gjat\u00ebsi 512 byte dhe i publikton ato n\u00eb Kafka n\u00eb grupe t\u00eb 500 mesazheve.<\/li>\n<li> Me ndihm\u00ebn e argumentit <code>-required-acks=all<\/code> publikimi konsiderohet i suksessh\u00ebm kur t\u00eb gjitha replikat e sinkronizuara t\u00eb mesazhit jan\u00eb marr\u00eb dhe konfirmuar nga brokera t\u00eb Kafka. Kjo do t\u00eb thot\u00eb se n\u00eb benchmark ne mat\u00ebm jo vet\u00ebm shpejt\u00ebsin\u00eb e lider\u00ebve q\u00eb marrin mesazhe, por edhe t\u00eb pasuesve t\u00eb tyre, q\u00eb riprodhojn\u00eb mesazhet. Q\u00ebllimi i k\u00ebtij testi nuk \u00ebsht\u00eb t\u00eb vler\u00ebsoj\u00eb shpejt\u00ebsin\u00eb e leximit nga konsumator\u00ebt <i>(consumers)<\/i> e mesazheve t\u00eb sapo pranuara, t\u00eb cilat aktualisht q\u00ebndrojn\u00eb n\u00eb caches e faqeve t\u00eb OS, dhe krahasimi i saj me shpejt\u00ebsin\u00eb e leximit t\u00eb mesazheve q\u00eb ruhen n\u00eb disk.<\/li>\n<li> Gjeneratori i ngarkes\u00ebs nis 20 pun\u00ebtor\u00eb n\u00eb m\u00ebnyr\u00eb t\u00eb paralel dhe (<code>-workers=20<\/code>). \u00c7do pun\u00ebtor merr pjes\u00eb me 5 prodhues, t\u00eb cil\u00ebt ndajn\u00eb lidhjen e pun\u00ebtorit me klasterin Kafka. Si rezultat, \u00e7do gjenerator num\u00ebron 100 prodhues, dhe t\u00eb gjith\u00eb ata d\u00ebrgojn\u00eb mesazhe n\u00eb klasterin Kafka.<\/li>\n<\/ul>\n<p><\/p>\n<h3>V\u00ebzhgimi i gjendjes s\u00eb klasterit<\/h3>\n<p>\nGjat\u00eb testimit t\u00eb ngarkes\u00ebs s\u00eb klasterit Kafka ne gjithashtu monitoronim sh\u00ebndetin e tij, p\u00ebr t\u00eb siguruar q\u00eb nuk kishte rindizje t\u00eb pod-eve, replikash t\u00eb \u00e7rregulluara dhe kapacitet maksimal me variacione minimale:<\/p>\n<ul>\n<li> Generatori i ngarkes\u00ebs shkruan statistika standarde mbi numrin e mesazheve t\u00eb publikuara dhe nivelin e gabimeve. Pjesa e gabimeve duhet t\u00eb mbetet n\u00eb vler\u00ebn <code>0,00%<\/code>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/linkedin\/cruise-control\">Cruise Control<\/a><\/noindex>, i zhvilluar nga kafka-operator, ofron nj\u00eb panel monitorimi, ku gjithashtu mund t\u00eb ndjekim gjendjen e klasterit. P\u00ebr t\u00eb par\u00eb k\u00ebt\u00eb panel, ekzekutoni:\n<pre><code class=\"bash\">supertubes cluster cruisecontrol show -n kafka --kubeconfig<\/code><\/pre>\n<\/li>\n<li> Niveli ISR <i>(numri i kopjeve \"in-sync\")<\/i> shrink dhe expansion jan\u00eb t\u00eb barabarta me 0.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Rezultatet e matjeve<\/h2>\n<p><\/p>\n<h3>3 broker\u00eb, madh\u00ebsia e mesazheve \u2014 512 byte<\/h3>\n<p>\nMe partition, t\u00eb shp\u00ebrndara n\u00eb m\u00ebnyr\u00eb t\u00eb barabart\u00eb n\u00eb tre broker, arrit\u00ebm nj\u00eb performanc\u00eb <i>~500 Mb\/s (paku 990 mij\u00eb mesazhe n\u00eb sekond\u00eb)<\/i>:<\/p>\n<p><img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/df65ff6a1a26e28d5e5a7a5ab1a20d98.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/15c5883c0056c651f0a0bd14e9991967.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/9b708fa5ce809b0d059cba9f5edfbb2f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKonsumi i memorjes nga JVM nuk e kaloi 2 Gb:<\/p>\n<p><img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/3320e2eea891055cc0935da492d18ee9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/6e3976c310309aa8be45fa3fdf547750.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/94baa1b689ae854693fb7cc4ed6e105e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKapaciteti i kalimit t\u00eb t\u00eb dh\u00ebnave arriti kapacitetin maksimale I\/O t\u00eb nyj\u00ebs n\u00eb t\u00eb tri instancat ku ishin aktivizuar broker\u00ebt:<\/p>\n<p><img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/408139ad33cda1294755660df1c128a8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/391d2df0ddfe82f94abdb200370ff775.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/e7e9fd021a2cdc71992ce672363a78ec.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNga t\u00eb dh\u00ebnat mbi p\u00ebrdorimin e memorjes nga nyjat, thuhet se sistemet e buferizimit dhe t\u00eb caches z\u00ebn\u00eb rreth 10-15 Gb:<\/p>\n<p><img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/781887507e01a4903b86871961ff9260.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/63f10177f01342039f04192ea93c8bca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/48b992cc73a968b3d3b1442f96562c4e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>3 broker\u00eb, madh\u00ebsia e mesazheve \u2014 100 byte<\/h3>\n<p>\nMe uljen e madh\u00ebsis\u00eb s\u00eb mesazheve, kapaciteti i kalimit t\u00eb t\u00eb dh\u00ebnave bie rreth 15-20%: ndikon koha e kaluar p\u00ebr t\u00eb p\u00ebrpunuar secilin mesazh. P\u00ebr m\u00eb tep\u00ebr, ngarkesa mbi procesorin \u00ebsht\u00eb rritur gati dyfish.<\/p>\n<p><img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/2f7dc5a94da371cfe17c9e0fc0ec1941.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/986160a3a4e099a0dbb8aeefaf6f1c2f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/c08244457bf4dbfadf52838d4ea2969e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDuke qen\u00eb se ka ende b\u00ebrthama t\u00eb pap\u00ebrdorura n\u00eb nyjat e broker\u00ebve, performanca mund t\u00eb p\u00ebrmir\u00ebsohet duke ndryshuar konfigurimin e Kafka-s. Kjo \u00ebsht\u00eb nj\u00eb detyr\u00eb e v\u00ebshtir\u00eb, prandaj p\u00ebr t\u00eb rritur kapacitetin e kalimit, \u00ebsht\u00eb m\u00eb mir\u00eb t\u00eb punoni me mesazhe m\u00eb t\u00eb m\u00ebdha.<\/p>\n<h3>4 broker\u00eb, madh\u00ebsia e mesazheve \u2014 512 byte<\/h3>\n<p>\n\u00cbsht\u00eb e leht\u00eb t\u00eb rritet performanca e klasterit Kafka thjesht duke shtuar broker t\u00eb rinj dhe duke ruajtur ekuilibrin e partition (kjo siguron shp\u00ebrndarje t\u00eb barabart\u00eb t\u00eb ngarkes\u00ebs midis broker\u00ebve). N\u00eb rastin ton\u00eb, pas shtimit t\u00eb nj\u00eb broker, kapaciteti i klasterit u rrit n\u00eb <i>~580 Mb\/s (~1,1 milion mesazhe n\u00eb sekond\u00eb)<\/i>. Rritja rezultoi t\u00eb ishte m\u00eb e vog\u00ebl se sa pritej: kryesisht kjo shpjegohet me disbalanc\u00ebn e partition (jo t\u00eb gjith\u00eb broker\u00ebt funksionojn\u00eb n\u00eb kapacitetin maksimal).<\/p>\n<p><img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/8c8d2e70739add3c3f88fe42acf98c46.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/a6e4812270c04487de0ad39b996a13f8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/6162c04cfb87b9d9cd0f3147a4ae1647.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/dae5de3b14be212c679f3627a3b77d7b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKonsumimi i memories nga JVM mbetet n\u00ebn 2 GB:<\/p>\n<p><img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/0bca07a817d7da3104b08de10979f049.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/7e1e64f80ec140f13e171cfe3be930ce.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/5e9700b1e54e45f9cd5fa018ec07dba1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/4ba0c4b59bfe72bcb0d2f22056c47d79.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nE pun\u00ebs s\u00eb broker\u00ebve me ruajt\u00ebs ka ndikuar disbalanca e partition:<\/p>\n<p><img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/2b8ed3c21adf70c751d1daa6d4c41895.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/77b980869b99903d9de5cd7d43d79291.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/f2f9569a3a1ef0ce35e89b2e52e4a8b2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e duhur p\u00ebr klasterin Kafka n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/191d6d97b32b2128c5cfd3914171de15.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>P\u00ebrfundimet<\/h2>\n<p>\nQasja iterative e paraqitur m\u00eb sip\u00ebr mund t\u00eb zgjerohet p\u00ebr t\u00eb p\u00ebrfshir\u00eb skenare m\u00eb komplekse, duke p\u00ebrfshir\u00eb qindra konsumator\u00eb, ripartitun, azhornime incremental, rinisje pod dhe t\u00eb tjera. T\u00eb gjitha k\u00ebto na lejojn\u00eb t\u00eb vler\u00ebsojm\u00eb kufijt\u00eb e aft\u00ebsive t\u00eb klasterit Kafka n\u00ebn kushte t\u00eb ndryshme, t\u00eb identifikojm\u00eb ngushticat n\u00eb funksionimin e tij dhe t\u00eb gjejm\u00eb m\u00ebnyra p\u00ebr t'u p\u00ebrballur me to.<\/p>\n<p>Kemi zhvilluar Supertubes p\u00ebr shp\u00ebrndarjen e shpejt\u00eb dhe t\u00eb leht\u00eb t\u00eb klasterit, konfigurimin e tij, shtimin\/zhb\u00ebrjen e broker\u00ebve dhe temave, p\u00ebrgjigjen ndaj alarm\u00ebve dhe sigurimin e funksionimit t\u00eb duhur t\u00eb Kafka n\u00eb Kubernetes si nj\u00eb e t\u00ebr\u00eb. Q\u00ebllimi yn\u00eb \u00ebsht\u00eb t\u00eb ndihmojm\u00eb t\u00eb p\u00ebrqendrohemi n\u00eb detyr\u00ebn kryesore (\u2018t\u00eb gjenerojm\u00eb\u2019 dhe \u2018t\u00eb konsumojm\u00eb\u2019 mesazhet Kafka), dhe gjith\u00eb pun\u00ebn e r\u00ebnd\u00eb t'ia l\u00ebm\u00eb Supertubes dhe kafka operator.<\/p>\n<p>N\u00ebse jeni t\u00eb interesuar n\u00eb teknologjit\u00eb dhe projektet Open Source t\u00eb Banzai Cloud, abonohuni n\u00eb kompanin\u00eb n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/banzaicloud\">GitHub<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.linkedin.com\/company\/banzaicloud\">LinkedIn<\/a><\/noindex> ose <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/BanzaiCloud\">Twitter<\/a><\/noindex>.<\/p>\n<h2>P.S. nga p\u00ebrkthyesi<\/h2>\n<p>\nLexoni gjithashtu n\u00eb blogun ton\u00eb:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/480722\/\">Nj\u00eb histori me operatorin Redis n\u00eb K8s dhe nj\u00eb mini-p\u00ebrmbledhje e mjeteve p\u00ebr analiz\u00ebn e t\u00eb dh\u00ebnave t\u00eb k\u00ebsaj DB.<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/450662\/\">Migrimi i thjesht\u00eb i RabbitMQ n\u00eb Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/329224\/\">zetcd nga CoreOS: Z\u00ebvend\u00ebsimi i ZooKeeper me\u2026 depo etcd<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/488920\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Banzai Cloud \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0435\u0451 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 \u0434\u043b\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 Kafka \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Kubernetes. \u041f\u0440\u0438\u0432\u043e\u0434\u0438\u043c\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0430\u043c\u0443 Kafka \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438. Apache Kafka \u2014 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433\u043e\u0432\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0445, \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":71214,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-71213","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.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Banzai Cloud \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0435\u0451 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 \u0434\u043b\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 Kafka \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Kubernetes.\" \/>\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\/opredelyaem-podhodyashhij-razmer-dlya-klastera-kafka-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.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\udd47\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kafka \u0432 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Banzai Cloud \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0435\u0451 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 \u0434\u043b\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 Kafka \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Kubernetes.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/opredelyaem-podhodyashhij-razmer-dlya-klastera-kafka-v-kubernetes\" \/>\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=\"2020-02-24T13:09:17+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:14:29+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\udd47P\u00ebrcaktojm\u00eb madh\u00ebsin\u00eb e p\u00ebrshtatshme p\u00ebr klasterin Kafka n\u00eb Kubernetes | ProHoster","description":"Sh\u00ebnim i p\u00ebrkthyesit: N\u00eb k\u00ebt\u00eb artikull, kompan\u00eda Banzai Cloud ndan nj\u00eb shembull t\u00eb p\u00ebrdorimit t\u00eb veglave t\u00eb saj speciale p\u00ebr t\u00eb leht\u00ebsuar operimin e Kafka n\u00eb kuad\u00ebr t\u00eb Kubernetes.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/opredelyaem-podhodyashhij-razmer-dlya-klastera-kafka-v-kubernetes","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\udd47\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kafka \u0432 Kubernetes | ProHoster","og:description":"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Banzai Cloud \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0435\u0451 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 \u0434\u043b\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 Kafka \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Kubernetes.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/opredelyaem-podhodyashhij-razmer-dlya-klastera-kafka-v-kubernetes","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":"2020-02-24T13:09:17+00:00","article:modified_time":"2020-03-03T13:14:29+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"71213","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:06:22","updated":"2022-10-04 20:58:00","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\/71213","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=71213"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/71213\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/71214"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=71213"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=71213"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=71213"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}