Konfigurácie sprostredkovateľa
| Nehnuteľnosti | Predvolený | Popis | | broker.id | | Každý broker môže byť identifikovaný jedinečným nezáporným celočíselným ID; Toto ID môže byť použité ako "meno" brokera a jeho existencia umožňuje brokerovi migrovať na iného hostiteľa/port bez zmätku spotrebiteľov. Môžete si vybrať akékoľvek číslo ako ID, pokiaľ je ID jedinečné. | | log.dirs | /tmp/kafka-logs | Cesta, kde Kafka ukladá dáta. Táto cesta nie je jedinečná, môže byť viacnásobná, a cesty je potrebné oddeliť len čiarkami; Kedykoľvek sa vytvorí nová partícia, vyberie sa tak, aby sa stala pod cestou, ktorá obsahuje najmenej partícií. | | Prístav | 6667 | Server akceptuje port, ku ktorému sa klient pripája | | zookeeper.connect | nula | Formát spojovacieho reťazca ZooKeeper je: hostname:port, kde hostname a port sú hostiteľ a port uzla v klastri ZooKeeper. Aby ste sa mohli pripojiť k iným uzlom ZooKeeper, keď hostiteľ prestane fungovať, môžete vytvoriť viacero hostiteľov nasledovne:
hostname1:port1, hostname2:port2, hostname3:port3.
ZooKeeper umožňuje pridať "chroot" cestu na uloženie všetkých kafka dát v klastri pod konkrétnu cestu. Keď viacero Kafka klastrov alebo iných aplikácií používa ten istý ZooKeeper klaster, môžete touto metódou nastaviť cestu ukladania dát. Toto je možné implementovať formátovaním spojovacieho reťazca takto: hostname1:port1,hostname2:port2,hostname3:port3/chroot/path Toto nastavenie ukladá všetky dáta z kafka klastra pod /chroot/path path. Všimnite si, že pred spustením makléra musíte vytvoriť túto cestu a spotrebitelia musia použiť rovnaký formát pripojenia. | | message.max.bajtov | 1000000 | Maximálna veľkosť správ, ktoré server môže prijať. Je dôležité, aby nastavenia spotrebiteľa a výrobcu týkajúce sa tejto vlastnosti boli synchronizované, inak je správa publikovaná producentom pre spotrebiteľa príliš veľká. | | num.network.threads | 3 | Počet sieťových vlákien, ktoré server používa na spracovanie sieťových požiadaviek; Vo všeobecnosti nemusíte túto nehnuteľnosť meniť. | | num.io.threads | 8 | Počet I/O vlákien používaných serverom na spracovanie požiadaviek; Počet vlákien by mal byť aspoň rovnaký ako počet pevných diskov. | | background.threads | 4 | Počet vlákien použitých na spracovanie na pozadí, ako je mazanie súborov; Nemusíš meniť túto nehnuteľnosť. | | queued.max.requests | 500 | Maximálny počet požiadaviek, ktoré môže I/O vlákno spracovať do fronty, kým sieťové vlákno prestane čítať nové požiadavky. | | host.name | nula | meno hostiteľa makléra; Ak je hostname už nastavené, broker bude viazaný iba na túto adresu; Ak tam nie je žiadne nastavenie, naviaže sa na všetky rozhrania a publikuje jednu kópiu do ZK | | advertised.host.name | nula | Ak je nastavený, posiela sa producentom, spotrebiteľom a ďalším sprostredkovateľom ako hostiteľské meno makléra | | advertised.port | nula | Tento port je poskytovaný producentom, spotrebiteľom a ďalším sprostredkovateľom a slúži na vytvorenie spojenia; Nastavenie je potrebné len vtedy, ak sú skutočný port a port, ktorý server potrebuje naviazať, odlišné. | | socket.send.buffer.bytes | 100 * 1024 | SO_SNDBUFF veľkosť cache, ktorú server používa na prepojenie socketov | | socket.receive.buffer.bytes | 100 * 1024 | SO_RCVBUFF veľkosť cache, ktorú server používa na pripojenie k socketom | | socket.request.max.bajtov | 100 * 1024 * 1024 | Maximálna veľkosť požiadavky povolená serverom; Tým sa vyhnete pretečeniu servera, ktoré by malo byť menšie ako veľkosť haldy v Jave | | num.partitions | 1 | Ak pri vytváraní témy nie je uvedený počet partícií, toto číslo bude predvoleným počtom partícií pod témou. | | log.segment.bytes | 1014*1024*1024 | Logy témovej partície sú uložené v mnohých súboroch v určitom adresári, ktorý rozdeľuje logy partície na segmenty; Tento atribút je maximálna veľkosť každého súboru; Keď rozmery dosiahnu túto hodnotu, vytvorí sa nový súbor. Toto nastavenie možno prepísať základom každej témy. Zobraziť Prihlásenie na hypertextový odkaz je viditeľné. | | log.roll.hours | 24 * 7 | Aj keď súbor nedosiahne log.segment.bytes, nový súbor sa vytvorí vždy, keď čas vytvorenia súboru dosiahne túto vlastnosť. Toto nastavenie je možné tiež prepísať nastavením na úrovni témy; PohľadPrihlásenie na hypertextový odkaz je viditeľné. | | log.cleanup.policy | vymazať | | | log.retention.minutes a log.retention.hours | 7 dní | Čas, kedy bol každý logový súbor uložený pred jeho vymazaním. Predvolený čas ukladania dát je rovnaký pre všetky témy. log.retention.minutes a log.retention.bytes sa používajú na nastavenie vymazania logových súborov, bez ohľadu na to, ktorá vlastnosť bola pretečená. Toto nastavenie vlastností je možné prepísať, keď je téma v podstate nastavená. PohľadPrihlásenie na hypertextový odkaz je viditeľné. | | log.retention.bytes | -1 | Celkové množstvo dát uložených každou partíciou pod každou témou; Upozorňujeme, že toto je horný limit na jednu partíciu, takže toto číslo vynásobené počtom partícií je celkové množstvo dát uložených na tému. Tiež si všimnite: Ak sú nastavené log.retention.hours aj log.retention.bytes, prekročenie ktoréhokoľvek limitu spôsobí vymazanie segmentového súboru. Upozorňujeme, že toto nastavenie je možné prepísať každou témou. PohľadPrihlásenie na hypertextový odkaz je viditeľné. | | log.retention.check.interval.ms | 5 minút | Skontrolujte interval medzi logom segmentovanými súbormi, aby ste zistili, či atribúty súborov spĺňajú požiadavky na vymazanie. | | log.cleaner.enable | false | Keď je táto vlastnosť nastavená na false, bude vymazaná, keď je log uložený na maximálny čas alebo veľkosť. Ak je nastavená na true, stane sa to, keď atribút uloženia dosiahne hornú hranicuPrihlásenie na hypertextový odkaz je viditeľné.。 | | log.cleaner.threads | 1 | Počet vlákien vykonávajúcich logaritmickú kompresiu | | log.cleaner.io.max.bajtov za sekundu | Žiadny | Maximálny počet vstupov/výstupov, ktoré môže mať upratovač logov pri vykonávaní zhutnenia logu. Toto nastavenie obmedzuje čističa, aby nezasahoval do aktívnych požiadaviek služieb. | | log.cleaner.io.buffer.size | 500*1024*1024 | Log Cleaner indexuje logy počas procesu čistenia a znižuje veľkosť použitej cache. Najlepšie je nastaviť ho veľký, aby poskytol dostatok pamäte. | | log.cleaner.io.buffer.load.factor | 512*1024 | Veľkosť I/O úseku potrebného na čistenie logov. Toto nastavenie nemusíš meniť. | | log.cleaner.io.buffer.load.factor | 0.9 | load factor hashovacej tabuľky používanej pri čistení logov; Nemusíte meniť túto možnosť. | | log.cleaner.backoff.ms | 15000 | Vykonáva sa časový interval, v ktorom sa kmeň čistí | | log.cleaner.min.cleanable.ratio | 0.5 | Táto konfigurácia riadi, ako často sa kompaktor logov snaží vyčistiť logy (predpokladá saPrihlásenie na hypertextový odkaz je viditeľné.je otvorený). Štandardne sa vyhýbajte čisteniu viac ako 50 % kmeňov. Tento pomer je viazaný na maximálny priestor spotrebovaný záložným logom (50 % logov je stlačených na 50 %). Vyššia sadzba znamená menej odpadu a efektívnejšie čistenie väčšieho priestoru. Toto nastavenie je možné prepísať v každom tematickom nastavení. PohľadPrihlásenie na hypertextový odkaz je viditeľné.。 | | log.cleaner.delete.retention.ms | 1 deň | čas skladovania; Maximálny čas na uchovávanie stlačených kmeňov; Je to tiež maximálny čas, ktorý klient spotrebuje na spracovanie správ, a rozdiel medzi log.retention.minutes je v tom, že jeden riadi nekomprimované dáta a druhý komprimované dáta, ktoré budú prepísané do špecifikovaného času pri vytvorení témy. | | log.index.size.max.bajtov | 10*1024*1024 | Maximálna veľkosť na jeden segment logaritu. Všimnite si, že ak veľkosť logu dosiahne túto hodnotu, je potrebné vygenerovať nový segment logu, aj keď veľkosť neprekročí limit log.segment.bytes. | | log.index.interval.bytes | 4096 | Pri načítaní musíte skenovať najbližší posun s určitým množstvom priestoru, čím väčšie nastavenie, tým lepšie, zvyčajne používajte predvolenú hodnotu | | log.flush.interval.messages | Long.MaxValue | Logfile "sync" na disk pred zhromažďovaním správ. Keďže prevádzka diskového IO je pomalá, ale zároveň nevyhnutným prostriedkom "spoľahlivosti dát", skontrolujte, či je potrebný časový interval na vytvrdenie na pevný disk. Ak je táto hodnota príliš veľká, povedie to k príliš dlhému času "synchronizácie" (blokovanie IO), ak je táto hodnota príliš malá, povedie to k dlhému času "fsync" (blokovanie IO), ak je táto hodnota príliš malá, povedie to k veľkému počtu časov "synchronizácie", čo znamená, že celkový klientsky požiadavok má určité oneskorenie a zlyhanie fyzického servera povedie k strate správ bez fsync. | | log.flush.scheduler.interval.ms | Long.MaxValue | Skontrolujte, či sú potrebné intervaly fsync | | log.flush.interval.ms | Long.MaxValue | Toto číslo sa používa na kontrolu časového intervalu "fsync", ak počet správ nikdy nedosiahne počet správ upevnených na disku, ale časový interval od poslednej synchronizácie disku dosiahne prah, spustí sa aj synchronizácia disku. | | log.delete.delay.ms | 60000 | Doba uchovávania po vyčistení súboru v indexe zvyčajne nie je potrebné meniť | | auto.create.topics.enable | true | Či povoliť automatické vytváranie tém. Ak je to pravda, automaticky vytvorí tému, ktorá neexistuje, keď produkcia alebo načítanie neexistujú. Inak musíte použiť príkazový riadok na vytvorenie témy | | controller.socket.timeout.ms | 30000 | Čas vypršania socketu, keď radič správy partícií vykoná zálohu. | | controller.message.queue.size | Int.MaxValue | controller-to-broker-channles | | default.replication.factor | 1 | Predvolený počet záložných kópií sa vzťahuje iba na automaticky vytvorené témy | | replica.lag.time.max.ms | 10000 | Ak nasledovník v tomto čase nepošle fetch požiadavku, vedúci nasledujúceho odstráni z ISR a považuje nasledovníka za zaveseného | | replica.lag.max.messages | 4000 | Ak má replika viac ako tento počet nezálohovaných, návodca odstráni nasledovníka a považuje ho za zavesený | | replica.socket.timeout.ms | 30*1000 | Čas vypršania líderov pre požiadavky siete socket pri zálohovaní dát | | replica.socket.receive.buffer.bytes | 64*1024 | Socket prijímací buffer pri odosielaní sieťovej požiadavky lídrovi počas zálohovania | | replica.fetch.max.bajtov | 1024*1024 | Maximálna hodnota každého načítania v čase zálohovania | | replica.fetch.min.bytes | 500 | Maximálna doba čakania, kým dáta dorazia k lídrovi, keď vedúci vykoná zálohovaciu požiadavku | | replica.fetch.min.bytes | 1 | Najmenšia veľkosť odpovede po každom načítaní pri zálohovaní | | num.replica.fetchers | 1 | Počet vlákien, ktoré zálohujú dáta z leadera | | replica.high.watermark.checkpoint.interval.ms | 5000 | Každá replika kontroluje, ako často sa najvyššia hladina vody vytvrdzuje | | fetch.purgatory.purge.interval.requests | 1000 | fetch request the purge interval | | producer.purgatory.purge.interval.requests | 1000 | Producent žiada o interval prečistenia | | zookeeper.session.timeout.ms | 6000 | Časový limit sedenia ošetrovateľa zvierat. | | zookeeper.connection.timeout.ms | 6000 | Maximálna doba, ktorú klient čaká na nadviazanie spojenia so zookeeperom | | zookeeper.sync.time.ms | 2000 | ZK nasledovník zaostáva za lídrom ZK najdlhšie | | controlled.shutdown.enable | true | Či je možné kontrolovať zatvorenie makléra. Ak je to možné, maklér bude schopný presunúť všetkých lídrov k iným maklérom pred uzavretím obchodu. To znižuje nedostupnosť počas procesu vypnutia. | | controlled.shutdown.max.retries | 3 | Počet príkazov, ktoré dokážu úspešne vykonať vypnutie pred vykonaním neúplného vypnutia. | | controlled.shutdown.retry.backoff.ms | 5000 | Čas spätného vypnutia medzi vypnutiami | | auto.leader.rebalance.enable | true | Ak je to pravda, kontrolór automaticky vyváži vedenie brokerov nad partíciami | | leader.imbalance.per.broker.percentage | 10 | Maximálny pomer nerovnováhy povolený každým maklérom | | leader.imbalance.check.interval.seconds | 300 | Skontrolujte frekvenciu nerovnováhy lídrov | | offset.metadata.max.bajtov | 4096 | Umožňuje klientom uložiť maximálny počet ich offsetov | | max.connections.per.ip | Int.MaxValue | Maximálny počet spojení na jedného brokera je možné uskutočniť na každej IP adrese | | max.connections.per.ip.overrides | | Maximálne pokrytie predvoleného pripojenia na jednu IP alebo meno hostiteľa | | connections.max.idle.ms | 600000 | Časový limit pre prázdne pripojenia | | log.roll.jitter. {ms,hours} | 0 | Maximálny počet jitterov abstrahovaný z logRollTimeMillis | | num.recovery.threads.per.data.dir | 1 | Počet vlákien, ktoré každý dátový adresár používa na logovanie obnovy | | unclean.leader.election.enable | true | Uvádza, či je možné použiť nastavenie non-replicas v ISR ako líder | | delete.topic.enable | false | Schopnosť mazať témy | | offsets.topic.num.partitions | 50 | Počet partícií pre tému commitu offsetu. Keďže zmena tejto hodnoty po nasadení momentálne nie je podporovaná, odporúčame použiť vyššie nastavenie pre produkciu (napr. 100-200). | | offsets.topic.retention.minutes | 1440 | Offsety, ktoré existovali dlhšie ako tento časový limit, budú označené ako čakajúce na vymazanie | | offsets.retention.check.interval.ms | 600000 | Správca offsetov kontroluje frekvenciu zastaraných offsetov | | offsets.topic.replication.factor | 3 | Počet záložných kópií offsetu témy. Odporúča sa nastaviť vyššie čísla, aby sa zaručila vyššia dostupnosť | | offset.topic.segment.bytes | 104857600 | Téma kompenzácií. | | offsets.load.buffer.size | 5242880 | Toto nastavenie súvisí s veľkosťou šarže a používa sa pri čítaní z offsetového segmentu. | | offsets.commit.required.acks | -1 | Počet potvrdení musí byť nastavený predtým, než je commit offsetu prijateľný, a vo všeobecnosti ho nie je potrebné meniť |
| Nehnuteľnosti | Predvolený | Predvolená vlastnosť servera | Popis | | cleanup.policy | vymazať | log.cleanup.policy | Buď "vymazať" alebo "zhutniť"; Tento reťazec naznačuje, ako využiť starú logaritmickú časť; Predvolená metóda ("vymazať") vyhodí starú časť, keď sa dosiahne ich čas recyklácie alebo limit veľkosti. "kompaktné" stlačí klády | | delete.retention.ms | 86400000 (24 hodín) | log.cleaner.delete.retention.ms | Rozdiel medzi log.retention.minutes je v tom, že jeden ovláda nekomprimované dáta a druhý komprimované dáta. Táto konfigurácia môže byť prepísaná parametrami pinovania pri vytváraní témy | | flush.messages | Žiadny | log.flush.interval.messages | Táto konfigurácia špecifikuje časový interval na vynútenie fsync logov. Napríklad, ak je táto možnosť nastavená na 1, fsync je potrebný po každej správe, a ak je nastavený na 5, fsync je potrebný pre každých 5 správ. Vo všeobecnosti sa odporúča túto hodnotu nenastavovať. Nastavenie tohto parametra vyžaduje nevyhnutný kompromis medzi "spoľahlivosťou dát" a "výkonom". Ak je táto hodnota príliš veľká, spôsobí to dlhý čas na "fsync" pri každom pokuse (IO blokovanie), a ak je táto hodnota príliš malá, povedie to k veľkému počtu "fsync", čo tiež znamená, že v celkovej požiadavke klienta je určitý oneskorenie. Fyzické zlyhanie servera spôsobí stratu správ bez fsync. | | flush.ms | Žiadny | log.flush.interval.ms | Táto konfigurácia sa používa na pripnutie časového intervalu medzi vynútením fsync logov na disk; Napríklad, ak je nastavený na 1000, fsync je potrebný každých 1000 ms. Táto možnosť sa vo všeobecnosti neodporúča | | index.interval.bytes | 4096 | log.index.interval.bytes | Predvolené nastavenie zabezpečuje, že k správe pridávame index každých 4096 bajtov a viac indexov približuje čítanú správu, ale veľkosť indexu sa zväčší. Táto možnosť zvyčajne nie je povinná | | max.message.bytes | 1000000 | max.message.bytes | Maximálna veľkosť Kafkovej pripojenej správy. Všimnite si, že ak zväčšíte túto veľkosť, musíte tiež zvýšiť veľkosť načítania vášho spotrebiteľa, aby spotrebiteľ mohol načítať správy do týchto maximálnych veľkostí. | | min.cleanable.dirty.ratio | 0.5 | min.cleanable.dirty.ratio | Táto konfigurácia určuje, ako často sa kompresor dreva pokúša vyčistiť kmene. Štandardne sa vyhýbajú záznamom s mierou kompresie nad 50 %. Tento pomer zabraňuje najväčšiemu plytvaniu miestom | | min.insync.replicas | 1 | min.insync.replicas | Keď je producent nastavený na request.required.acks na -1, min.insync.replicas určuje minimálny počet replík (každý zápis repica musí byť úspešný) a ak tento počet nie je dosiahnutý, producent vytvorí výnimku. | | retention.bytes | Žiadny | log.retention.bytes | Ak použijete politiku uchovávania "delete", táto konfigurácia sa vzťahuje na maximálnu veľkosť, ktorú môže log dosiahnuť pred jeho vymazaním. Predvolene neexistuje limit veľkosti, ale len časový limit | | retention.ms | 7 dní | log.retention.minutes | Ak použijete politiku uchovávania "delete", táto konfigurácia sa vzťahuje na čas, kedy bol log uložený pred zápisom do logu vymazania. | | segment.bytes | 1GB | log.segment.bytes | V Kafkovej metóde sa logy ukladajú v častiach, pričom táto konfigurácia sa vzťahuje na veľkosť kmeňov rozdelených na časti | | segment.index.bytes | 10MB | log.index.size.max.bajtov | Táto konfigurácia je približne veľkosti indexového súboru mapovaného medzi offsety a umiestnenia súboru; Táto konfigurácia zvyčajne nie je potrebné meniť | | segment.ms | 7 dní | log.roll.hours | Aj keď súbor log chunk nedosiahne veľkosť, ktorú je potrebné vymazať alebo komprimovať, keď log time dosiahne túto hornú hranicu, nový log chunk súbor bude nútený vytvoriť nový log chunk súbor | | segment.jitter.ms | 0 | log.roll.jitter. {ms,hours} | Maximálny jitter na odpočítanie od logRollTimeMillis. |
Spotrebiteľské konfigurácie
| Nehnuteľnosti | Predvolený | Popis | | group.id | | Reťazec, ktorý jednoznačne identifikuje skupinu, v ktorej sa nachádza spotrebiteľský proces, a ak je nastavené rovnaké ID skupiny, znamená to, že tieto procesy patria do tej istej spotrebiteľskej skupiny | | zookeeper.connect | | Špecifikujte reťazec Zookeeper pripojenia, formát je hostname:port, tu sú hostiteľ aj port hostiteľ aj port Zookeeper servera, aby ste predišli strate kontaktu po výpadku Zookeeper zariadenia, môžete určiť viacero hostname:ports, pričom ako oddelenie je čiarka: hostname1:port1,hostname2:port2,hostname3:port3 Cestu chroot ZooKeeperu môžete pridať k spojovacému reťazcu ZooKeeperu, ktorý sa používa na uloženie vlastných dát, takým spôsobom: hostname1:port1,hostname2:port2,hostname3:port3/chroot/path | | consumer.id | nula | Nie je potrebné žiadne nastavenie a zvyčajne sa generuje automaticky | | socket.timeout.ms | 30*100 | Časové limity pre sieťové požiadavky. Skutočný časový limit je max.fetch.wait+socket.timeout.ms | | socket.receive.buffer.bytes | 64*1024 | Socket sa používa na prijímanie veľkosti cache sieťových požiadaviek | | fetch.message.max.bajtov | 1024*1024 | Maximálny počet bajtov na správu načítania na jednu požiadavku na načítanie. Tieto bajty budú spravované v pamäti používanej pre každú partíciu, takže toto nastavenie bude riadiť množstvo pamäte používané spotrebiteľom. Veľkosť požiadavky na načítanie musí byť aspoň rovnaká maximálnej veľkosti správy povolenej serverom, inak je veľkosť správy, ktorú môže producent odoslať, väčšia než veľkosť, ktorú môže spotrebiteľ spotrebovať. | | num.consumer.fetchers | 1 | Počet vlákien na načítanie použitých na načítanie dát | | auto.commit.enable | true | Ak je to pravda, posun správy, ktorú spotrebiteľ získa, sa automaticky synchronizuje so zookeeperom. Tento commit offset použije nový spotrebiteľ, keď sa proces zasekne | | auto.commit.interval.ms | 60*1000 | Frekvencia, s akou zákazník odosiela offset ošetrovateľovi, je v priebehu sekúnd | | queued.max.message.chunks | 2 | Maximálny počet správ použitých na ukladanie do vyrovnávacej pamäte na spotrebu. Každý chunk musí byť rovnaký ako fetch.message.max.bytes | | rebalance.max.pokusy | 4 | Keď je do skupiny pridaný nový spotrebiteľ, skupina spotrebiteľov sa snaží vyvážiť počet partícií pridelených každému spotrebiteľovi. Ak sa zmení spotrebiteľská kolekcia, toto vyvažovanie zlyhá a znovu sa zaregistruje počas vykonávania alokácie | | fetch.min.bytes | 1 | Minimálny počet bajtov, ktoré by mal server vrátiť pri každom požiadavke na načítanie. Ak sa nevráti dostatok dát, požiadavka čaká, kým sa vráti dostatok údajov. | | fetch.wait.max.ms | 100 | Ak nie je dostatok dát na uspokojenie fetch.min.bytes, táto konfigurácia označuje maximálny čas, ktorý server zablokuje pred odpoveďou na fetch požiadavku. | | rebalance.backoff.ms | 2000 | Čas na odstúpenie pred opätovným pokusom o Reblance | | refresh.leader.backoff.ms | 200 | Existuje čas na odstup, než sa pokúsime zistiť, či líder rozdelenia stratil svoje vedenie | | auto.offset.reset | najväčší | Ak v zookeeper nie je inicializovaný offset, ak offset je odpoveďou na nasledujúcu hodnotu: najmenší: Automatický reset offset na najmenší offset najväčší: Automatický reset offset na offset najväčšieho Čokoľvek iné: Dáva to výnimku pre spotrebiteľa | | consumer.timeout.ms | -1 | Ak správa nie je dostupná, aj po určitom čase čakania, vyhodí sa výnimka na časový limit | | exclude.internal.topics | true | Či sprístupniť správy z interných tém spotrebiteľom | | paritition.assignment.strategy | Rozsah | Vyberte politiku priraďovania partícií do spotrebiteľského toku, voliteľne rozsah, roundrobin | | client.id | Hodnota ID skupiny | je používateľsky špecifický reťazec, ktorý pomáha sledovať volania v každej požiadavke. Logicky by to malo potvrdiť aplikáciu, ktorá požiadavku vygenerovala | | zookeeper.session.timeout.ms | 6000 | Časové limity pre sedenia ošetrovateľov zvierat. Ak spotrebiteľ počas tohto času nepošle správu o tlkotu srdca ošetrovateľovi, považuje sa za zavesenú a vytvorí sa reblance | | zookeeper.connection.timeout.ms | 6000 | Maximálna doba čakania, kým klient nadviaže spojenie so Zookeeperom | | zookeeper.sync.time.ms | 2000 | Nasledovníci ZK môžu zaostávať za lídrom ZK maximálne dlho | | offsets.storage | Ošetrovateľ zvierat | Miesta používané na skladovanie offsetov: Zookeeper alebo Kafka | | offset.channel.backoff.ms | 1000 | Čas spätného ukončenia pri opätovnom pripojení na kanál offsetov alebo opätovnom pokuse o načítanie/commit požiadavky na neúspešný offset | | offsets.channel.socket.timeout.ms | 10000 | Časový limit socketu pre odpoveď na odpoveď na požiadavku na načítanie/commit pri čítaní offsetu. Tento časový limit využíva požiadavka consumerMetadata na žiadosť o správu offsetu | | offsets.commit.max.retries | 5 | Počet opakovaných pokusov o commit offsetu. Tento pokus sa používa len na offsetové commity medzi vypnutím. On | | dual.commit.enabled | true | Ak použiješ "kafka" ako offsets.storage, môžeš commset commitovať do zookeeperu dvakrát (a raz do kafky). Toto je nevyhnutné pri migrácii z offsetového úložiska založeného na Zookeeper na offsetové úložisko založené na Kafke. Pre akúkoľvek spotrebiteľskú skupinu je bezpečné túto možnosť po dokončení migrácie vypnúť | | partition.assignment.strategy | Rozsah | Vyberte si medzi politikami "rozsah" a "roundrobin" ako politiku priraďovania partícií spotrebiteľským dátovým tokom; Cirkulárny alokátor partcií alokuje všetky dostupné partície, ako aj všetky dostupné spotrebiteľské vlákna. Priradí slučku partície spotrebiteľskému vláknu. Ak sú všetky spotrebiteľské inštancie pripísané k determined, rozdelenia sa rozdelia na deterministické rozdelenia. Stratégia alokácie round-robin je možná len vtedy, ak sú splnené nasledujúce podmienky: (1) Každá téma má rovnaký počet dátových tokov na počet spotrebiteľov. (2) Zbierka prihlásených tém sa určuje pre každú spotrebiteľskú inštanciu v spotrebiteľskej skupine. |
Konfigurácie producentov
| Nehnuteľnosti | Predvolený | Popis | | metadata.broker.list | | Slúžte si na vlastnú výrobu. Producer sa používa len na získavanie metadát (témy, partície, repliky). Pripojenie socketu na odoslanie skutočných dát bude vytvorené na základe vrátených metadát. Formát je: host1:port1,host2:port2 Tento zoznam môže byť podzoznam maklérov alebo VIP odkazujúci na maklérov | | request.required.acks | 0 | Táto konfigurácia je hodnotou potvrdenia, ktorá indikuje, kedy je požiadavka na produkciu považovaná za dokončenú. Konkrétne, koľko ďalších maklérov muselo predložiť údaje do svojich logov a potvrdiť tieto informácie svojmu vedúcemu. Typické hodnoty zahŕňajú: 0: Označuje, že producent nikdy nečaká na potvrdenie od makléra (rovnaké správanie ako pri 0,7). Táto možnosť poskytuje najmenšiu latenciu, ale zároveň najväčšie riziko (pretože pri výpadku servera dochádza k strate dát). 1: Označuje, že replika lídra dostala potvrdenie dát. Táto možnosť má nízku latenciu a zabezpečuje, že server potvrdí prijatie. -1: Producent dostane potvrdenie, že všetky synchronizované repliky dostali dáta. Latencia je najväčšia, avšak táto metóda úplne neeliminuje riziko straty správ, pretože počet synchronizovaných replík môže byť 1. Ak chcete zabezpečiť, že niektoré repliky prijímajú dáta, mali by ste nastaviť možnosť min.insync.replicas v nastaveniach na úrovni témy. Prečítajte si návrhovú dokumentáciu pre podrobnejšiu diskusiu. | | request.timeout.ms | 10000 | Broker sa snaží čo najlepšie implementovať požiadavku request.required.acks, inak sa klientovi pošle chyba | | producer.type | synchronizácia | Táto možnosť pripína, či je správa odoslaná asynchrónne vo vlákne na pozadí. Správne hodnoty: (1) asynchrónne: Asynchrónne odosielanie (2) synchronizácia: Synchronizované odosielanie Nastavením producenta na asynchrónny režim môžeme spracovávať požiadavky v dávkach (čo je dobré pre vyššiu priepustnosť), ale zároveň to vytvára možnosť, že klientský stroj stratí neodoslané dáta | | serializer.class | kafka.serializer.DefaultEncoder | Kategória serializácie správy. Predvolený enkodér zadá jeden bajt[] a vráti rovnaký bajt[] | | key.serializer.class | | Trieda serializácie pre kľúčové slová. Ak to nie je uvedené, predvolene sa správa zodpovedá | | partitioner.class | kafka.producer.DefaultPartitioner | trieda partitioner na rozdelenie správ medzi podtémy. Predvolený partitioner je založený na hash tabuľke kľúča | | compression.codec | žiadny | Tento parameter môže nastaviť kodek na kompresiu dát, ktorý je možné vybrať ako "žiadne", "gzip", "snappy". | | compressed.topics | nula | Tento parameter možno použiť na určenie, či sú určité témy komprimované. Ak je komprimovaný kodek iný ako NoCompressCodec, tieto kodeky sa aplikujú na špecifikované témy. Ak je zoznam komprimovaných tém prázdny, aplikujte konkrétny komprimovaný kodek na všetky témy. Ak je komprimovaný kodek NoCompressionCodec, kompresia nie je dostupná pre všetky témy. | | message.send.max.retries | 3 | Tento parameter spôsobí, že producent automaticky zopakuje neúspešné požiadavky na odoslanie. Tento parameter určuje počet opakovaní. Poznámka: Nastavenie hodnoty inej ako 0 spôsobí opakovanie určitých sieťových chýb: spôsobí odosielanie a stratu potvrdenia | | retry.backoff.ms | 100 | Pred každým opakovaným pokusom producent aktualizuje metadáta príslušnej témy, aby zistil, či je priradený nový vedúci. Keďže výber lídra trvá trochu času, táto možnosť špecifikuje, ako dlho musí producent počkať, kým aktualizuje metadáta. | | topic.metadata.refresh.interval.ms | 600*1000 | Producent zvyčajne aktualizuje metadáta témy v niektorých scenároch zlyhania (chýba partícia, nedostupný leader a pod.). Prejde pravidelným cyklom. Ak nastavíte zápornú hodnotu, metadáta sa aktualizujú len v prípade zlyhania. Ak je nastavené na 0, metadáta sa aktualizujú po odoslaní každej správy (táto možnosť sa neodporúča, systém spotrebúva príliš veľa). Dôležité: Aktualizácie nastávajú až po odoslaní správy, takže ak producent správu nikdy neodosla, metadáta sa nikdy neaktualizujú. | | queue.buffering.max.ms | 5000 | Maximálny časový interval, v ktorom používateľ ukladá dáta do vyrovnávacej pamäte pri použití asynchrónneho režimu. Napríklad, ak je správa nastavená na 100, správy do 100 ms budú spracované v dávkach. To zlepší priepustnosť, ale zvýši latenciu vďaka cache. | | queue.buffering.max.messages | 10000 | Pri použití asynchrónneho režimu musí byť maximálny počet neodoslaných správ, ktoré môžu byť uložené do fronty do vyrovnávacej pamäte pred producentom, zablokovaný alebo stratou dát | | batch.num.messages | 200 | Pri použití asynchrónneho režimu môžete dávkovo spracovať maximálny počet správ. Alebo počet správ dorazil online alebo queue.buffer.max.ms dorazil a producent to spracuje | | send.buffer.bytes | 100*1024 | Veľkosť cache pre zápis socketu | | client.id | “” | Toto ID klienta je používateľsky špecifický reťazec, ktorý je zahrnutý v každej požiadavke na sledovanie hovoru, a logicky by mal byť schopný potvrdiť, že aplikácia požiadavku vykonala. |
Konfigurácie producentov
| Meno | Typ | Predvolený | Význam | Popis | | boostrap.servers | Zoznam | | vysoko | Skupina host/port na nadviazanie spojenia s Kafka klastrom. Dáta budú načítané rovnomerne na všetkých serveroch, bez ohľadu na to, ktorý server je určený na bootstrap. Tento zoznam ovplyvňuje iba inicializované hostiteľy (ktoré sa používajú na objavenie všetkých serverov). Tento formát zoznamu:
host1:port1,host2:port2,... Keďže tieto servery slúžia len na inicializáciu spojení na zistenie všetkých členov klastra (ktoré sa môžu dynamicky meniť), tento zoznam nemusí obsahovať všetky servery (možno budete chcieť viac ako jeden server, hoci v tomto prípade môže byť jeden server nefunkčný). Ak sa v tomto zozname neobjaví žiadny server, odosielanie dát zlyhá, kým nebude zoznam dostupný. | | ACKS | Struna | 1 | vysoko | Producent potrebuje signál zo servera na potvrdenie prijatia dát po prijatí údajov, pričom táto konfigurácia sa vzťahuje na to, koľko takýchto potvrdenia signálov dodávateľ potrebuje. Táto konfigurácia v skutočnosti predstavuje dostupnosť záloh dát. Nasledujúce nastavenia sú bežné možnosti: (1) acks=0: Nastavené na 0 znamená, že producent nemusí čakať na potvrdenie prijatých informácií. Replika bude okamžite pridaná do socket bufferu a považovaná za odoslanú. V tomto prípade nie je zaručené, že server úspešne prijal dáta, a opätovné skúšanie konfigurácie nebude fungovať (pretože klient nevie, či zlyhalo) a offset spätnej väzby bude vždy nastavený na -1. (2) acks=1: To znamená, že aspoň počkajte, kým leader úspešne zapíše dáta do lokálneho logu, ale nie na úspešný zápis všetkých followerov. V takom prípade, ak follower úspešne nezálohuje dáta a vedúci opäť zloží, správa sa stratí. (3) acks=all: To znamená, že líder musí počkať, kým všetky zálohy úspešne zapíšu logy, a táto stratégia zabezpečí, že dáta nebudú stratené, pokiaľ jedna záloha prežije. Toto je najsilnejšia záruka. (4) Sú tiež možné aj iné nastavenia, ako acks=2, ktoré vyžadujú určitý počet acks, ale táto stratégia sa vo všeobecnosti zriedka používa. | | buffer.memory | dlhý | 33554432 | vysoko | Producent môže slúžiť na uloženie veľkosti pamäte dát do vyrovnávacej pamäte. Ak sú dáta generované rýchlejšie, než sú odoslané brokerovi, producent zablokuje alebo vyhodí výnimku, označenú "block.on.buffer.full".
Toto nastavenie bude súvisieť s celkovou pamäťou, ktorú môže producent použiť, ale nie je to tvrdý limit, pretože nie všetka pamäť používaná producentom sa využíva na cache. Časť dodatočnej pamäte sa používa na kompresiu (ak je kompresia zavedená) a časť na požiadavky na údržbu. | | Kompresia.typ | Struna | žiadny | vysoko | Producer je typ kompresie používaný na kompresiu dát. Predvolená je nekomprimovaná. Správne hodnoty voličov sú žiadne, gzip, snappy. Kompresia je najvhodnejšia pri dávkovom spracovaní, čím viac správ sa spracuje v dávkach, tým lepší je výkon kompresie. | | Opakované pokusy | int | 0 | vysoko | Nastavenie hodnoty väčšej ako 0 spôsobí, že klient po ich zlyhaní odošle akékoľvek dáta znova. Upozorňujeme, že tieto opakovania sa nelíšia od tých, keď klient dostane chybu odoslania. Umožňuje opätovné pokusy potenciálne zmeniť poradie dát, ak sú oba záznamy správ odoslané na tú istú partíciu, prvá správa zlyhá, druhá správa sa objaví skôr ako prvá. | | batch.size | int | 16384 | Stredná | Producent sa pokúsi dávkovať záznamy správ, aby znížil počet požiadaviek. To zlepší výkon medzi klientom a serverom. Táto konfigurácia riadi predvolený počet bajtov správ dávkového spracovania. Nerobia sa žiadne pokusy spracovať bajty správ väčšie ako tento počet bajtov. Požiadavky zaslané brokerom budú obsahovať viacero dávok, ktoré budú obsahovať jednu požiadavku pre každú partíciu. Menšie hodnoty dávkovania sa používajú menej a môžu znížiť priepustnosť (0 použije iba dávkové spracovanie). Väčšie dávkové hodnoty zaberajú viac miesta v pamäti, takže je potrebné alokovať pamäť na konkrétne dávkové hodnoty. | | client.id | Struna | | Stredná | Tento reťazec sa odosiela serveru pri vykonaní požiadavky. Účelom je byť schopný vystopovať zdroj požiadaviek, aby niektoré aplikácie mimo IP/Port povoleného zoznamu mohli posielať informácie. Táto aplikácia dokáže nastaviť akýkoľvek reťazec, pretože nemá žiadny funkčný účel okrem nahrávania a sledovania | | linger.ms | dlhý | 0 | Stredná | Skupina producentov zhromaždí všetky správy, ktoré prídu medzi požiadavkou a odoslaním, a zaznamená samostatnú dávku požiadaviek. Typicky sa to deje len vtedy, keď je záznam generovaný rýchlejšie ako je odosielacia rýchlosť. Avšak za určitých podmienok bude klient chcieť znížiť počet požiadaviek, alebo dokonca na strednú záťaž. Toto nastavenie sa vykonáva pridaním malého oneskorenia – t. j. namiesto okamžitého odoslania záznamu producent počká na stanovený čas oneskorenia, aby mohol odoslať ďalšie záznamy správ, ktoré je možné dávkovať. Toto možno považovať za podobný algoritmus ako TCP Nagle. Toto nastavenie nastavuje vyššiu hranicu latencie pre batchovanie: keď získame veľkosť batch.party partície, okamžite ju odošle bez ohľadu na toto nastavenie, ale ak dostaneme správu s oveľa menším počtom bajtov než toto nastavenie, musíme "zostať" na konkrétny čas, aby sme dostali viac správ. Toto nastavenie je predvolene nastavené na 0, teda bez oneskorenia. Nastavenie linger.ms=5 napríklad zníži počet požiadaviek, ale zároveň predĺži oneskorenie o 5 ms. | | max.request.size | int | 1028576 | Stredná | Maximálny požadovaný počet bajtov. Toto je tiež efektívne pokrytie pre maximálnu zaznamenanú veľkosť. Poznámka: Server má vlastné prepísanie veľkosti záznamov správ, ktoré sa líšia od tohto nastavenia. Toto nastavenie obmedzuje počet požiadaviek, ktoré môžu producenti naraz posielať hromadne, aby sa zabránilo veľkému počtu žiadostí. | | receive.buffer.bytes | int | 32768 | Stredná | Veľkosť TCP prijímacej cache, ktorá sa používa pri čítaní dát | | send.buffer.bytes | int | 131072 | Stredná | Veľkosť cache TCP odosielania, ktorá sa používa pri odosielaní dát | | timeout.ms | int | 30000 | Stredná | Táto konfiguračná možnosť riadi maximálny čas, počas ktorého server čaká na potvrdenie od sledovateľov. Ak počet potvrdených požiadaviek nie je splnený v tomto čase, zobrazí sa chyba. Tento časový limit sa meria na strane servera a nemá sieťovú latenciu vrátane požiadaviek | | block.on.buffer.full | Boolean | true | nízke | Keď nám dôjde pamäťová vyrovnávacia pamäť, musíme prestať prijímať nové záznamy správ alebo vyhodiť chyby. Predvolene je to nastavené na true, avšak niektoré blokovanie nemusí byť očakávané, takže je lepšie hneď hodiť chybu. Toto je prípad, keď je nastavený na false: producent vyhodí chybu výnimky: BufferExhaustedException, ak bol záznam odoslaný a cache je plná | | metadata.fetch.timeout.ms | dlhý | 60000 | nízke | Označuje údaje o prvom čase niektorých prvkov, ktoré sme získali. Prvky zahŕňajú: tému, hostiteľa, partementy. Táto konfigurácia označuje čas potrebný na úspešné dokončenie prvku podľa fetch, inak bude klientovi zaslaná výnimka. | | metadata.max.age.ms | dlhý | 300000 | nízke | Čas v mikrosekundách je interval, v ktorom nútime aktualizáciu metadát. Aj keď neuvidíme žiadne zmeny vo vedení rozdelenia. | | metric.reporters | Zoznam | [] | nízke | Zoznam tried používaných na meranie metrík. Implementácia rozhrania MetricReporter umožní pridávať triedy, ktoré sa menia pri generovaní nových metrík. JMXReporter vždy bude obsahovať spôsob registrácie štatistík JMX | | metrics.num.samples | int | 2 | nízke | Počet vzoriek použitých na udržiavanie metrík | | metrics.sample.window.ms | dlhý | 30000 | nízke | Systém Metrics udržiava konfigurovateľný počet vzoriek v korekčnej veľkosti okna. Táto konfigurácia napríklad konfiguruje veľkosť okna. Môžeme uchovávať dve vzorky počas 30 sekúnd. Keď sa okno vysunie, vymažeme a prepíšeme najstaršie okno | | recoonect.backoff.ms | dlhý | 10 | nízke | Keď spojenie zlyhá, čas čakania pri opätovnom pripojení. Tým sa predchádza opakovaným opätovným pripojeniam klientov | | retry.backoff.ms | dlhý | 100 | nízke | Čakacia doba pred opätovným pokusom o neúspešnú žiadosť o ovocie a zeleninu. Vyhnite sa uviaznutiu v mŕtvej slučke odosielania a neúspechu.
|
|