Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 10630|Svare: 1

Detaljert forklaring av Kafkas konfigurasjonsparametere

[Kopier lenke]
Publisert på 24.06.2021 11:47:12 | | |
Broker-konfigurasjoner

EiendomStandardBeskrivelse
broker.id Hver megler kan identifiseres med en unik ikke-negativ heltalls-ID; Denne ID-en kan brukes som "navnet" på megleren, og dens eksistens gjør at megleren kan migrere til en annen vert/port uten å forvirre forbrukerne. Du kan velge hvilket som helst nummer du vil som ID, så lenge ID-en er unik.
log.dirs/tmp/kafka-logsStien hvor kafka lagrer data. Denne stien er ikke unik, den kan være flere, og stiene trenger bare å være adskilt med kommaer; Når en ny partisjon opprettes, velges det å gjøre det under stien som inneholder færrest partisjoner.
Havn6667Serveren aksepterer porten klienten kobler seg til
zookeeper.connectnullFormatet til ZooKeeper-tilkoblingsstrengen er: hostname:port, hvor vertsnavn og port henholdsvis er vert og port for en node i ZooKeeper-klyngen. For å koble til andre ZooKeeper-noder når en vert går ned, kan du opprette flere verter som følger:
hostname1:port1, hostname2:port2, hostname3:port3.

ZooKeeper lar deg legge til en "chroot"-sti for å lagre all kafka-data i klyngen under en spesifikk sti. Når flere Kafka-klynger eller andre applikasjoner bruker samme ZooKeeper-klynge, kan du bruke denne metoden for å sette datalagringsstien. Dette kan implementeres ved å formatere tilkoblingsstrengen slik:
vertsnavn1:port1,vertsnavn2:port2,vertsnavn3:port3/chroot/path
Dette oppsettet lagrer all kafka-klyngedata under /chroot/path-stien. Merk at før du starter megleren, må du opprette denne veien, og forbrukerne må bruke samme tilkoblingsformat.
message.max.bytes1000000Den maksimale størrelsen på meldinger en server kan motta. Det er viktig at innstillingene til forbruker og produsent når det gjelder denne eiendommen er synkronisert, ellers blir budskapet som publiseres av produsenten for stort for forbrukeren.
num.nettverk.tråder3Antall nettverkstråder serveren bruker for å behandle nettverksforespørsler; Du trenger vanligvis ikke å endre denne eiendommen.
num.io.threads8Antall I/O-tråder som brukes av serveren til å behandle forespørsler; Antall tråder bør være minst likt antall harddisker.
bakgrunn.tråder4Antall tråder brukt til bakgrunnsbehandling, som filsletting; Du trenger ikke å endre denne eiendommen.
queued.max.forespørsler500Det maksimale antallet forespørsler som kan stilles i kø for en I/O-tråd å behandle før en nettverkstråd slutter å lese nye forespørsler.
host.namenullmeglerens vertsnavn; Hvis vertsnavnet allerede er satt, vil megleren kun være bundet til denne adressen; Hvis det ikke finnes noen innstilling, vil den binde til alle grensesnitt og publisere én kopi til ZK
advertised.host.namenullHvis det er satt, sendes det til produsenter, forbrukere og andre meglere som vertsnavnet til megleren
annonsert.portnullDenne porten gis til produsenter, forbrukere og andre meglere, og brukes til å etablere en forbindelse; Den trenger bare å settes hvis den faktiske porten og porten serveren må binde er forskjellige.
socket.send.buffer.bytes100 * 1024SO_SNDBUFF Cache-størrelse, som serveren bruker for å lage socket-tilkoblinger
socket.receive.buffer.bytes100 * 1024SO_RCVBUFF cache-størrelse, som brukes av serveren til å koble til sockets
socket.request.max.bytes100 * 1024 * 1024Maksimal forespørselsstørrelse tillatt av serveren;  Dette vil unngå serveroverløp, som bør være mindre enn størrelsen på Java-heapen
num.partisjoner1Hvis antallet partisjoner ikke er oppgitt ved opprettelse av et tema, vil dette tallet være standardantallet partisjoner under emnet.
log.segment.bytes1014*1024*1024Loggene til emnepartisjonen lagres i mange filer i en bestemt mappe, som deler loggene til partisjonen inn i segmenter; Denne attributten er maksimal størrelse for hver fil; Når dimensjonene når denne verdien, opprettes en ny fil. Denne innstillingen kan overstyres av grunnlaget for hvert tema.
Utsikt  Innloggingen med hyperkoblingen er synlig.
logg.rull.timer24 * 7Selv om filen ikke når log.segment.bytes, opprettes en ny fil hver gang filopprettelsestiden når denne egenskapen. Denne innstillingen kan også overstyres av temanivå-innstillinger;
UtsiktInnloggingen med hyperkoblingen er synlig.
log.cleanup.policySlett
logg.retention.minutes og log.retention.hours7 dagerTiden hver loggfil ble lagret før den ble slettet. Standard datasparetid er den samme for alle temaer.
log.retention.minutes og log.retention.bytes brukes begge for å sette sletting av loggfiler, uavhengig av hvilken egenskap som er overløpt.
Denne egenskapsinnstillingen kan overstyres når emnet i praksis er satt.
UtsiktInnloggingen med hyperkoblingen er synlig.
log.retention.bytes-1Den totale mengden data lagret av hver partisjon under hvert emne; Merk at dette er øvre grense per partisjon, så dette tallet multiplisert med antall partisjoner er den totale mengden data lagret per emne. Merk også: Hvis både log.retention.hours og log.retention.bytes er satt, vil overskridelse av noen av grensene føre til at en segmentfil slettes.
Merk at denne innstillingen kan overstyres av hvert tema.
UtsiktInnloggingen med hyperkoblingen er synlig.
log.retention.check.interval.ms5 minutterSjekk intervallet mellom loggsegmenterte filer for å avgjøre om filattributtene oppfyller slettingskravene.
log.cleaner.enablefalseNår denne egenskapen settes til falsk, vil den bli slettet når loggen er lagret i maksimal tid eller størrelse. Hvis det settes til true, vil det skje når lagringsattributtet når øvre grenseInnloggingen med hyperkoblingen er synlig.
log.cleaner.threads1Antallet tråder som utfører log-komprimering
log.cleaner.io.max.bytes.per.sekundIngenDet maksimale antallet I/O-er en loggrenser kan ha når den utfører en loggkomprimering. Denne innstillingen begrenser renseren for å unngå å forstyrre aktive forespørslingstjenester.
log.cleaner.io.buffer.size500*1024*1024Log Cleaner indekserer logger under opprydningsprosessen og reduserer størrelsen på cachen som brukes. Det er best å sette den stor for å gi rikelig med minne.
log.cleaner.io.buffer.load.factor512*1024Størrelsen på I/O-biten som kreves for tømmerrengjøring. Du trenger ikke å endre denne innstillingen.
log.cleaner.io.buffer.load.factor0.9lastfaktoren til hashtabellen som brukes i loggrensing; Du trenger ikke å endre dette alternativet.
log.cleaner.backoff.ms15000Tidsintervallet hvor loggen ryddes opp utføres
tømmerrenser.min.rengjørbar.ratio0.5Denne konfigurasjonen styrer hvor ofte loggkompaktoren prøver å rydde opp i loggene (antattInnloggingen med hyperkoblingen er synlig.er åpen). Som standard bør du unngå å rense mer enn 50 % av stokkene. Dette forholdet er knyttet til maksimal plass som brukes av sikkerhetskopiloggen (50 % av loggene komprimeres ved 50 %). En høyere sats betyr mindre avfall og mer plass kan ryddes mer effektivt. Denne innstillingen kan overstyres i hver temainnstilling.
UtsiktInnloggingen med hyperkoblingen er synlig.
log.cleaner.delete.retention.ms1 daglagringstid; Maksimal tid for å oppbevare komprimerte logger; Det er også maksimal tid for klienten til å konsumere meldinger, og forskjellen mellom log.retention.minutes er at den ene kontrollerer de ukomprimerte dataene og den andre kontrollerer de komprimerte dataene, som vil bli overskrevet innen den angitte tiden når temaet opprettes.
log.index.size.max.bytes10*1024*1024Maksimal størrelse per tømmersegment. Merk at hvis log-størrelsen når denne verdien, må et nytt log-segment genereres selv om størrelsen ikke overstiger log.segment.bytes-grensen.
log.index.interval.bytes4096Når du utfører en fetch, må du skanne nærmeste offset med en viss plass, jo større innstilling, desto bedre, vanligvis bruk standardverdien
log.flush.interval.messagesLong.MaxValueLoggfilen "synkroniserer" til disk før den akkumulerer meldinger. Siden disk-IO-operasjoner er en langsom operasjon, men også et nødvendig middele for "datapålitelighet", sjekk om tidsintervallet for å herde til harddisken er nødvendig. Hvis denne verdien er for stor, vil det føre til for lang "synkronisering"-tid (IO-blokkering), hvis denne verdien er for liten, vil det føre til lang tid med "fsync" (IO-blokkering), hvis denne verdien er for liten, vil det føre til et stort antall "synkroniserings"-tider, noe som betyr at den totale klientforespørselen har en viss forsinkelse, og feil på den fysiske serveren vil føre til tap av meldinger uten fsync.
log.flush.scheduler.interval.msLong.MaxValueSjekk om det kreves fsync-intervaller
log.flush.interval.msLong.MaxValueDette tallet brukes til å kontrollere tidsintervallet for «fsync»; hvis antall meldinger aldri når antallet meldinger som er festet til disken, men tidsintervallet fra siste disksynkronisering når terskelen, vil også disksynkronisering bli utløst.
log.delete.delay.ms60000Oppbevaringstiden etter at filen er slettet i indeksen trenger vanligvis ikke å endres
auto.create.topics.enabletrueOm man skal tillate automatisk opprettelse av emner. Hvis det er sant, vil det automatisk opprette et emne som ikke eksisterer når produce eller fetch ikke eksisterer. Ellers må du bruke kommandolinjen for å opprette et emne
controller.socket.timeout.ms30000Tidsavbruddstiden for socketen når partisjonsstyringskontrolleren utfører en sikkerhetskopi.
controller.message.queue.sizeInt.MaxValueController-til-megler-kanaler
default.replication.factor1Standardantallet sikkerhetskopier refererer kun til automatisk opprettede emner
replica.lag.time.max.ms10000Hvis en følger ikke sender en henteforespørsel innen denne tiden, vil lederen fjerne følgeren fra ISR og betrakte følgeren som hengt
replica.lag.max.meldinger4000Hvis en replika har flere enn dette antallet usikkerhetskopierte, vil lederen fjerne følgeren og anse følgeren som hengt
replica.socket.timeout.ms30*1000Lederens tidsavbrudd for socket-nettverksforespørsler ved sikkerhetskopiering av data
replica.socket.receive.buffer.bytes64*1024Socket mottaksbuffer når man sender en nettverksforespørsel til lederen under backup
replica.fetch.max.bytes1024*1024Maksimal verdi for hver henting ved sikkerhetskopiering
replica.fetch.min.bytes500Maksimal ventetid for at data skal nå lederen når lederen gjør en backup-forespørsel
replica.fetch.min.bytes1Den minste størrelsen på responsen etter hver henting når man rygger
num.replica.fetchers1Antall tråder som sikkerhetskopierer data fra lederen
replica.high.watermark.checkpoint.interval.ms5000Hver kopi sjekker hvor ofte det høyeste vannstanden herdes
fetch.purgatory.purge.interval.requests1000hent forespørsel om purge-intervallet
producer.purgatory.purge.interval.requests1000produsent ber om et purge-intervall
zookeeper.session.timeout.ms6000Timeout for dyrepasser-økten.
zookeeper.connection.timeout.ms6000Den maksimale tiden klienten venter på å etablere en forbindelse med dyrepasseren
zookeeper.sync.time.ms2000ZK Follower ligger bak ZK Leader i lang tid
controlled.shutdown.enabletrueOm det er mulig å kontrollere nedleggelsen av megleren. Hvis mulig, vil megleren kunne flytte alle ledere til andre meglere før overtakelsen. Dette reduserer utilgjengelighet under nedstengningsprosessen.
controlled.shutdown.max.prøver på nytt3Antall kommandoer som kan utføre en avstenging før en ufullstendig avstenging.
controlled.shutdown.retry.backoff.ms5000Tid for tilbaketrekning mellom nedstengninger
auto.leader.rebalance.enabletrueHvis dette stemmer, vil kontrolløren automatisk balansere meglerens ledelse over partisjonene
leder.ubalanse.per.megler.prosent10Maksimal ubalansegrad tillatt av hver megler
leader.imbalance.check.interval.seconds300Sjekk frekvensen av lederubalanse
offset.metadata.max.bytes4096Lar klienter lagre maksimalt antall offsets sine
max.connections.per.ipInt.MaxValueMaksimalt antall tilkoblinger per megler kan gjøres til hver IP-adresse
max.connections.per.ip.overrides Maksimal dekning av standardtilkoblingen per IP eller vertsnavn
connections.max.idle.ms600000Tidsbegrensning for tomme tilkoblinger
logg.rull.jitter. {ms,timer}0Det maksimale antallet nerver abstrahert fra logRollTimeMillis
num.recovery.threads.per.data.dir1Antall tråder som hver datakatalog bruker for å loggføre gjenoppretting
uren.leder.valg.enabletrueIndikerer om det er mulig å bruke innstillingen for ikke-replikaer i ISR som leder
delete.topic.enablefalseKan slette emner
offsets.topic.num.partitions50Antall partisjoner for offset-commit-temaet. Siden det å endre dette etter utrulling for øyeblikket ikke støttes, anbefaler vi å bruke en høyere innstilling for produksjon (f.eks. 100-200).
offsets.topic.retention.minutes1440Offsets som har eksistert lenger enn denne tidsgrensen vil bli markert som ventende sletting
offsets.retention.check.interval.ms600000Offset-manageren sjekker hyppigheten av stale offsets
offsets.topic.replication.factor3Antall sikkerhetskopier av emnets offset. Det anbefales å sette høyere tall for å sikre høyere tilgjengelighet
offset.topic.segment.bytes104857600Offset-tema.
offsets.load.buffer.size5242880Denne innstillingen er relatert til batchstørrelsen og brukes når man leser fra offset-segmentet.
offsets.commit.required.acks-1Antallet bekreftelser må settes før offset-commit er akseptabelt, og trenger vanligvis ikke endres


EiendomStandardServerens standardegenskapBeskrivelse
Cleanup.policySlettlog.cleanup.policyEnten «slette» eller «kompakt»; Denne strengen viser hvordan man kan bruke den gamle tømmerdelen; Standardmetoden ("slett") vil forkaste den gamle delen når resirkuleringstiden eller størrelsesgrensen er nådd. "kompakt" vil komprimere loggene
delete.retention.ms864000000 (24 timer)log.cleaner.delete.retention.msForskjellen mellom log.retention.minutes er at den ene kontrollerer ukomprimerte data og den andre kontrollerer komprimerte data. Denne konfigurasjonen kan overstyres av pinningsparametrene når temaet opprettes
flush.meldingerIngenlog.flush.interval.messagesDenne konfigurasjonen spesifiserer et tidsintervall for å tvinge fsync-logger. For eksempel, hvis dette alternativet er satt til 1, kreves fsync etter hver melding, og hvis det er satt til 5, kreves fsync for hver 5. melding. Generelt anbefales det at du ikke setter denne verdien. Innstillingen av denne parameteren krever den nødvendige avveiningen mellom «datapålitelighet» og «ytelse». Hvis denne verdien er for stor, vil det føre til lang tid med å "fsynce" hver gang (IO-blokkering), og hvis denne verdien er for liten, vil det føre til et stort antall "fsync", som også betyr at det er en viss forsinkelse i den totale klientforespørselen. Feil på den fysiske serveren vil føre til at meldinger går tapt uten fsync.
flush.msIngenlog.flush.interval.msDenne konfigurasjonen brukes for å fastsette tidsintervallet mellom tvinging av fsync-logger til disken; For eksempel, hvis den settes til 1000, kreves fsync hver 1000 ms. Dette alternativet anbefales generelt ikke
index.interval.bytes4096log.index.interval.bytesStandardinnstillingen sikrer at vi legger til en indeks i meldingen hver 4096 byte, og flere indekser gjør lesemeldingen nærmere, men indeksstørrelsen vil øke. Dette alternativet er vanligvis ikke nødvendig
max.message.bytes1000000max.message.bytesDen maksimale størrelsen på kafka-legg-meldingen. Merk at hvis du øker denne størrelsen, må du også øke hentestørrelsen til forbrukeren slik at forbrukeren kan hente meldinger til disse maksimale størrelsene.
min.rengjøringsbart.skittent.forhold0.5min.rengjøringsbart.skittent.forholdDenne konfigurasjonen styrer hvor ofte loggkompressoren forsøker å tømme loggene. Som standard vil logger med en komprimeringsrate på mer enn 50 % unngås. Dette forholdet unngår størst mulig plasssløsing
min.insync.replicas1min.insync.replicasNår produsenten settes til request.required.acks til -1, spesifiserer min.insync.replicas minimum antall replikaer (hver repica-skriving må være vellykket), og hvis dette tallet ikke nås, vil produsenten lage et unntak.
retention.bytesIngenlog.retention.bytesHvis du bruker «delete»-lagringspolicyen, refererer denne konfigurasjonen til maksimal størrelse loggen kan oppnå før den slettes. Som standard finnes det ingen størrelsesgrense, bare en tidsbegrensning
retention.ms7 dagerlogg.retention.minutesHvis du bruker «slett»-oppbevaringspolicyen, refererer denne konfigurasjonen til tidspunktet da loggen ble lagret før slettingsloggen.
segment.bytes1GBlog.segment.bytesI Kafka lagres stokker i biter, og denne konfigurasjonen refererer til størrelsen på stokker delt inn i biter
segment.index.bytes10MBlog.index.size.max.bytesDenne konfigurasjonen er omtrent på størrelse med indeksfilen som er kartlagt mellom offsets og filplasseringer; Denne konfigurasjonen trenger vanligvis ikke å endres
segment.ms7 dagerlogg.rull.timerSelv om loggchunk-filen ikke når den størrelsen som må slettes eller komprimeres, vil en ny log chunk-fil bli tvunget til å bli tvunget til å bli tvunget når logg-tiden når denne øvre grensen.
segment.jitter.ms0 logg.rull.jitter. {ms,timer}Maksimal jitter som skal trekkes fra logRollTimeMillis.


Forbrukerkonfigurasjoner

EiendomStandardBeskrivelse
group.id En streng som entydig identifiserer gruppen der forbrukerprosessen befinner seg, og hvis samme gruppe-ID er satt, betyr det at disse prosessene tilhører samme forbrukergruppe
zookeeper.connect Spesifiser strengen til Zookeeper-tilkoblingen, formatet er hostname:port, her er verten og porten både verten og porten til Zookeeper-serveren. For å unngå å miste kontakt etter at en Zookeeper-maskin går ned, kan du spesifisere flere hostname:ports, ved å bruke kommaer som separasjon:
vertsnavn1:port1,vertnavn2:port2,vertsnavn3:port3
Du kan legge til ZooKeepers chroot-sti i ZooKeeper-tilkoblingsstrengen, som brukes til å lagre egne data, på en måte:
vertsnavn1:port1,vertsnavn2:port2,vertsnavn3:port3/chroot/path
consumer.idnullIngen oppsett er nødvendig, og det genereres vanligvis automatisk
socket.timeout.ms30*100Tidsbegrensninger for nettverksforespørsler. Den egentlige timeout-grensen er max.fetch.wait+socket.timeout.ms
socket.receive.buffer.bytes64*1024Socket brukes til å motta cache-størrelsen til nettverksforespørsler
fetch.message.max.bytes1024*1024Maksimalt antall bytes per hentemelding per henteforespørsel. Disse bytene vil bli overvåket i minnet som brukes for hver partisjon, så denne innstillingen vil kontrollere mengden minne som brukes av forbrukeren. Størrelsen på henteforespørselen må være minst lik den maksimale meldingsstørrelsen serveren tillat, ellers er størrelsen på meldingen produsenten kan sende større enn størrelsen forbrukeren kan konsumere.
num.forbruker.hentere1Antall hentetråder brukt for hentedata
auto.commit.enabletrueHvis det stemmer, vil offset av meldingen som hentes av forbrukeren automatisk synkroniseres med dyrepasseren. Denne commit-offset vil bli brukt av den nye forbrukeren når prosessen stopper opp
auto.commit.interval.ms60*1000Frekvensen forbrukeren sender inn offset til dyrepasseren er i sekunder
queued.max.message.chunks2Det maksimale antallet meldinger som brukes til å cache for konsum. Hver chunk må være den samme som fetch.message.max.bytes
rebalance.max. prøver på nytt4Når en ny forbruker legges til i en forbrukergruppe, forsøker samlingen av forbrukere å rebalansere antall partisjoner tildelt hver forbruker. Hvis forbrukerens samling endres, feiler denne rebalanseringen og reenterifiseres når allokeringen utføres
hent.min.bytes1Minimum antall bytes som serveren skal returnere med hver henteforespørsel. Hvis ikke nok data returneres, venter forespørselen til nok data er returnert.
fetch.wait.max.ms100Hvis det ikke er nok data til å tilfredsstille fetch.min.bytes, refererer denne konfigurasjonen til maksimal tid serveren blokkerer før den svarer på en fetch-forespørsel.
rebalance.backoff.ms2000Tid for å trekke seg tilbake før jeg prøver reblance på nytt
refresh.leader.backoff.ms200Det er en tid til å vente før man prøver å avgjøre om lederen for en deling har mistet sitt lederskap
auto.offset.resetStørstHvis det ikke finnes noe initialisert offset i Zookeeper, hvis offset er et svar på følgende verdi:
minste: Auto-reset offset til minste offset
største: Automatisk tilbakestillingsoffset til offset av største
Alt annet: gir et unntak for forbrukeren
consumer.timeout.ms-1Hvis ingen melding er tilgjengelig, selv etter å ha ventet en bestemt tid, kastes et timeout-unntak
ekskluder.intern.emnertrueOm man skal eksponere meldinger fra interne temaer til forbrukerne
parition.assignment.strategyUtbredelseVelg policyen for å tildele partisjoner til forbrukerflyten, eventuelt range, roundrobin
client.idGruppe-ID-verdier en brukerspesifikk streng som hjelper til med å spore kall i hver forespørsel. Den skal logisk bekrefte applikasjonen som genererte forespørselen
zookeeper.session.timeout.ms6000Tidsbegrensninger for dyrepasser-økter. Hvis forbrukeren ikke sender en hjerteslagsmelding til dyrepasseren i denne perioden, regnes den som hengt opp og en reblance vil bli generert
zookeeper.connection.timeout.ms6000Maksimal ventetid for en klient å etablere en Zookeeper-forbindelse
zookeeper.sync.time.ms2000ZK-følgere kan henge etter ZK-lederen i maksimal tid
offsets.storageDyrepasserenSteder brukt til å lagre offsets: dyrepassere eller kafka
offset.channel.backoff.ms1000Backoff-tiden for å koble til offset-kanalen igjen eller prøve hente-/commit-forespørselen på nytt for den mislykkede offseten
offsets.channel.socket.timeout.ms10000Socket-timeout-grensen for responsen på hente-/commit-forespørselen når leseoffset. Denne tidsbegrensningen brukes av consumerMetadata-forespørselen for å be om offset-administrasjon
offsets.commit.max. prøver på nytt5Antall ganger offset-commit ble prøvd på nytt. Dette forsøket brukes kun på offset-commits mellom nedstengninger. ham
dual.commit.enabledtrueHvis du bruker "kafka" som offsets.storage, kan du commit offset til Zookeeper to ganger (og én gang til kafka). Dette er et must når man migrerer fra dyrepasser-basert offset-lagring til kafka-basert offset-lagring. For enhver forbrukergruppe er det en trygg anbefaling å slå av dette alternativet når migreringen er fullført
partition.assignment.strategyUtbredelseVelg mellom "range"- og "roundrobin"-policyene som policy for å tildele partisjoner til forbrukerdataflyter; Den sirkulære partisjonsallokatoren allokerer alle tilgjengelige partisjoner samt alle tilgjengelige forbrukertråder. Den vil tildele partisjonsløkken til forbrukertråden. Hvis alle forbrukerinstanser abonneres på en determinert, deles partisjonene inn i deterministiske fordelinger. Round-robin-allokeringsstrategien er kun mulig hvis følgende betingelser er oppfylt: (1) Hvert emne har samme antall dataflyter per forbrukerstyrke. (2) Samlingen av abonnerte temaer bestemmes for hver forbrukerinstans i forbrukergruppen.


Produsentkonfigurasjoner

EiendomStandardBeskrivelse
metadata.broker.list Tjener bootstrapping. Producer brukes kun til å hente metadata (emner, partisjoner, replikaer). Socket-tilkoblingen for å sende de faktiske dataene vil bli etablert basert på de returnerte metadataene. Formatet er:
vert1:port1,vert2:port2
Denne listen kan være en underliste over meglere eller en VIP som peker til meglere
forespørsel.påkrevd.acks0Denne konfigurasjonen er en bekreftelsesverdi som indikerer når en produksjonsforespørsel anses som fullført. Spesielt hvor mange andre meglere som må ha sendt inn data til loggene sine og bekreftet denne informasjonen til sin leder. Typiske verdier inkluderer:
0: Indikerer at produsenten aldri venter på bekreftelse fra megleren (samme oppførsel som 0,7). Dette alternativet gir minst ventetid, men samtidig størst risiko (fordi data går tapt når serveren går ned).
1: Indikerer at lederreplikaen har mottatt databekreftelsen. Dette alternativet har lav latens og sikrer at serveren bekrefter at det er mottatt.
-1: Produsenten får bekreftelse på at alle synkroniserte replikaer har mottatt data. Forsinkelsen er størst, men denne metoden eliminerer ikke helt risikoen for tapte meldinger, fordi antallet synkroniserte replikaer kan være 1. Hvis du vil sikre at noen replikaer mottar data, bør du sette valget min.insync.replicas i temanivåinnstillingene. Les designdokumentasjonen for en mer grundig diskusjon.
request.timeout.ms10000Megleren gjør sitt beste for å implementere request.required.acks-kravet, ellers vil en feil bli sendt til klienten
producer.typeSynkroniseringDette valget fester om meldingen sendes asynkront i en bakgrunnstråd. Riktige verdier:
(1) asynkron: Asynkron sending
(2) synkronisering: Synkronisert sending
Ved å sette produsenten til asynkron kan vi behandle forespørsler i batcher (noe som er bra for høyere gjennomstrømning), men dette skaper også muligheten for at klientmaskinen mister usendte data
serializer.classkafka.serializer.DefaultEncoderSerialiseringskategorien til meldingen. Standardkoderen taster inn én byte[] og returnerer samme byte[]
key.serializer.class Serialiseringsklasse for nøkkelord. Hvis dette ikke er gitt, er standarden å matche meldingen
partitioner.classkafka.producer.DefaultPartitionerpartisjonerklasse for å dele meldinger mellom underemner. Standardpartisjoneren er basert på nøkkelens hashtabell
compression.codecingenDenne parameteren kan sette kodeken for komprimering av data, som kan velges som "ingen", "gzip", "snappy".
komprimerte.emnernullDenne parameteren kan brukes til å bestemme om visse temaer skal komprimeres. Hvis den komprimerte kodeken er en annen kodek enn NoCompressCodec, brukes disse kodekene på de spesifiserte emnedataene. Hvis listen over komprimerte temaer er tom, bruk den spesifikke komprimerte kodeken på alle temaer. Hvis den komprimerte kodeken er NoCompressionCodec, er ikke komprimeringen tilgjengelig for alle emner.
message.send.max. prøver på nytt3Denne parameteren vil få produsenten til automatisk å prøve mislykkede send-forespørsler på nytt. Denne parameteren fastsetter antall forsøk. Merk: Å sette en verdi som ikke er 0 vil føre til at visse nettverksfeil gjentas: forårsaker sending og tap av bekreftelse
retry.backoff.ms100Før hvert nytt forsøk oppdaterer produsenten metadataene til det aktuelle temaet for å se om den nye lederen er tildelt. Fordi ledervalget tar litt tid, spesifiserer dette valget hvor lenge produsenten må vente før metadataene kan oppdateres.
topic.metadata.refresh.interval.ms600*1000Produsenten oppdaterer vanligvis emnets metadata i noen feilscenarier (partisjon mangler, leder utilgjengelig, osv.). Han vil gå gjennom en vanlig syklus. Hvis du setter den til en negativ verdi, vil metadataene bare bli oppdatert hvis den feiler. Hvis den settes til 0, oppdateres metadataene etter hver melding som sendes (dette alternativet anbefales ikke, systemet bruker for mye). Viktig: Oppdateringer skjer først etter at meldingen er sendt, så hvis produsenten aldri sender meldingen, blir metadataene aldri oppdatert.
queue.buffering.max.ms5000Det maksimale tidsintervallet brukeren cacher data når asynkron modus benyttes. For eksempel, hvis meldingen settes til 100, vil meldinger innenfor 100 ms bli behandlet i batcher. Dette vil forbedre gjennomstrømningen, men øke latensen på grunn av caching.
queue.buffering.max.meldinger10000Når man bruker asynkron modus, må det maksimale antallet usendte meldinger som kan caches til køen før produsenten blokkeres, eller data må gå tapt
batch.num.meldinger200Når du bruker asynkron modus, kan du batchbehandle maksimalt antall meldinger. Eller antallet meldinger har nådd dette på nettet eller queue.buffer.max.ms har ankommet, og produsenten vil behandle det
send.buffer.bytes100*1024Socket write cache-størrelse
client.id“”Denne klient-ID-en er en brukerspesifikk streng som inkluderes i hver forespørsel for å spore kallet, og han bør logisk kunne bekrefte at applikasjonen har gjort forespørselen.


Produsentkonfigurasjoner

NavnTypeStandardBetydningBeskrivelse
boostrap.servereListe høytVert/port-gruppe for å etablere en forbindelse til kafka-klyngen. Data vil bli lastet jevnt på tvers av alle servere, uavhengig av hvilken server som er utpekt for oppstart. Denne listen påvirker kun de initialiserte vertene (som brukes til å oppdage alle servere). Dette listeformatet:
host1:port1,host2:port2,...
Siden disse serverne kun brukes til å initialisere tilkoblinger for å oppdage alle medlemskapene i klyngen (som kan endres dynamisk), trenger ikke denne listen å inneholde alle servere (du kan ønske mer enn én server, selv om én server i dette tilfellet kan være nede). Hvis ingen server vises i denne listen, vil sending av data feile inntil listen er tilgjengelig.
ACKSStreng1høytProdusenten trenger et signal fra serveren for å bekrefte mottak etter å ha mottatt dataene, og denne konfigurasjonen refererer til hvor mange slike bekreftelsessignaler prokuratoren trenger. Denne konfigurasjonen representerer faktisk tilgjengeligheten av sikkerhetskopier av data. Følgende innstillinger er vanlige alternativer:
(1) acks=0: Satt til 0 betyr at produsenten ikke trenger å vente på noen bekreftelse av den mottatte informasjonen. Replikaen vil umiddelbart bli lagt til socket-bufferen og regnes som sendt. Det er ingen garanti for at serveren har mottatt dataene i dette tilfellet, og et nytt forsøk på konfigurasjonen vil ikke fungere (fordi klienten ikke vet om det feilet), og offsetet av tilbakemeldingen vil alltid være satt til -1.
(2) acks=1: Dette betyr at man i det minste må vente på at lederen skal skrive dataene til den lokale loggen, men ikke at alle følgerne skal skrive riktig. I dette tilfellet, hvis følgeren ikke tar sikkerhetskopi av dataene og lederen legger på igjen, vil meldingen gå tapt.
(3) acks=alle: Dette betyr at lederen må vente på at alle sikkerhetskopier skal skrive logger, og denne strategien vil sikre at data ikke går tapt så lenge én sikkerhetskopi overlever. Dette er den sterkeste garantien.
(4) Andre innstillinger, som acks=2, er også mulige, som krever et gitt antall acks, men denne strategien brukes vanligvis sjelden.
buffer.minnelang33554432høytProdusenten kan brukes til å cache minnestørrelsen på dataene. Hvis dataene genereres raskere enn de sendes til megleren, vil produsenten blokkere eller kaste et unntak, indikert med "block.on.buffer.full".

Denne innstillingen vil være relatert til det totale minnet produsenten kan bruke, men det er ikke en hard grense, siden ikke alt minne produsenten bruker til caching. Noe ekstra minne brukes til komprimering (hvis komprimering introduseres), og noe brukes til vedlikeholdsforespørsler.
compression.typeStrengingenhøytProdusent er typen komprimering som brukes til å komprimere data. Standardinnstillingen er ukomprimert. De riktige opsjonsverdiene er ingen, gzip, snappy.
Komprimering er best egnet for batchbehandling; jo flere meldinger som behandles i batcher, desto bedre komprimeringsytelse.
Forsøk på nyttInt0høytÅ sette en verdi større enn 0 vil føre til at klienten sender data på nytt når dataene feiler. Merk at disse forsøkene ikke er annerledes enn de når klienten mottar en send-feil. Tillater nye forsøk på å potensielt endre rekkefølgen på dataene; hvis begge meldingspostene sendes til samme partisjon, feiler den første meldingen, og den andre meldingen vises tidligere enn den første.
batch.sizeInt16384MiddelsProdusenten vil forsøke å batche meldingspostene for å redusere antall forespørsler. Dette vil forbedre ytelsen mellom klient og server. Denne konfigurasjonen styrer standardantall byte for batchbehandlingsmeldinger.
Det gjøres ingen forsøk på å behandle meldingsbytes større enn dette byteantallet.
Forespørsler sendt til meglere vil inneholde flere batcher, som vil inneholde én forespørsel for hver partisjon.
Mindre batchverdier brukes mindre og kan redusere gjennomstrømningen (0 vil kun bruke batchprosessering). Større batchverdier kaster bort mer minneplass, så du må allokere minne til spesifikke batchverdier.
client.idStreng MiddelsDenne strengen sendes til serveren når en forespørsel gjøres. Hensikten er å kunne spore kilden til forespørsler slik at noen applikasjoner utenfor IP/Port-allowlisten kan sende informasjon. Denne appen kan sette hvilken som helst streng fordi den ikke har noen funksjonell funksjon annet enn å ta opp og spore
linger.mslang0MiddelsProdusentgruppen vil aggregere alle meldinger som ankommer mellom forespørselen og sendingen, og registrere en separat batch med forespørsler. Vanligvis skjer dette bare når posten genereres raskere enn sendehastigheten. Men under visse betingelser vil klienten ønske å redusere antall forespørsler, eller til og med til moderat belastning. Denne oppsettet gjøres ved å legge til en liten forsinkelse – det vil si at i stedet for å sende en post umiddelbart, vil produsenten vente til en gitt forsinkelsestid for å tillate at andre meldingsposter kan sendes, som kan batches. Dette kan betraktes som en lignende algoritme som TCP Nagle. Denne innstillingen setter en høyere latensgrense for batching: når vi får batch.size til en partisjon, vil den sende den umiddelbart uavhengig av denne innstillingen, men hvis vi får en melding med mye mindre byteantall enn denne innstillingen, må vi "bli værende" en bestemt tid for å få flere meldinger. Denne innstillingen er standard 0, altså ingen forsinkelse. Å sette linger.ms=5, for eksempel, vil redusere antall forespørsler, men samtidig øke forsinkelsen med 5 ms.
max.request.sizeInt1028576MiddelsMaksimalt antall bytes som ønskes. Dette er også en effektiv dekning for maksimal registrert størrelse. Merk: Serveren har sin egen overstyring av meldingspoststørrelser, som er annerledes enn denne innstillingen. Denne innstillingen begrenser antall forespørsler produsenter kan sende i bulk om gangen for å forhindre et stort antall forespørsler.
receive.buffer.bytesInt32768MiddelsTCP receivecache-størrelse, som brukes når man leser data
send.buffer.bytesInt131072MiddelsTCP send cache-størrelse, som brukes når man sender data
timeout.msInt30000MiddelsDette konfigurasjonsvalget styrer hvor lang tid serveren venter på bekreftelse fra følgere. Hvis antallet bekreftede forespørsler ikke er oppfylt innen denne tiden, returneres en feilmelding. Denne timeout-grensen måles på serversiden og har ingen nettverksforsinkelse inkludert forespørsler
block.on.buffer.fullBoolesktruelavtNår minnecachen vår går tom, må vi slutte å motta nye meldingsposter eller kaste feil. Som standard er dette satt til true, men noe blokkering er kanskje ikke verdt å forvente, så det er bedre å gi en feil med en gang. Dette er tilfellet når det settes til false: produsenten kaster en unntaksfeil: BufferExhaustedException hvis posten er sendt og cachen er full
metadata.fetch.timeout.mslang60000lavtDet refererer til førstegangsdata for noen elementer vi har innhentet. Elementene inkluderer: tema, vert, partisjoner. Denne konfigurasjonen refererer til tiden som kreves for at elementet skal fullføres i henhold til hentingen, ellers vil et unntak bli sendt til klienten.
metadata.max.age.mslang300000lavtTid i mikrosekunder er intervallet hvor vi tvinger metadataene til å oppdateres. Selv om vi ikke ser noen endringer i delingsledelsen.
metric.reportersListe[]lavtEn liste over klasser som brukes til å måle målinger. Implementeringen av MetricReporter-grensesnittet vil gjøre det mulig å legge til klasser som endres etter hvert som nye måleparametere genereres. JmxReporter vil alltid inkludere en måte å registrere JMX-statistikk på
metrics.num.samplesInt2lavtAntall utvalg brukt for å opprettholde måleparametere
metrics.sample.window.mslang30000lavtMetrics-systemet opprettholder et konfigurerbart antall prøver i et korrigerbart vindu. Denne konfigurasjonen konfigurerer for eksempel vindusstørrelsen. Vi kan beholde to prøver i 30 sekunder. Når et vindu rulles ut, sletter og skriver vi om det eldste vinduet
recoonect.backoff.mslang10lavtNår forbindelsen svikter, ventetiden når vi kobler til igjen. Dette unngår gjentatte klienttilkoblinger
retry.backoff.mslang100lavtVentetiden før man prøver å prøve på nytt en mislykket forespørsel om frukt og grønt. Unngå å bli sittende fast i en send-fail deadloop.




Foregående:【Practice】Eclipse installerer lombok-pluginen
Neste:Java JMX er enkelt å forstå og bruke
 Vert| Publisert på 02.11.2021 14:10:57 |
Server.Properties-konfigurasjon

Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com