Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 129246|Vastaus: 17

[Lähde] Kafka-toiminnot .NET/C#-viestijonoille [lähdekoodin kanssa]

[Kopioi linkki]
Julkaistu 13.4.2021 11.45.31 | | | |
Kafka on LinkedInin kehittämä korkean suorituskyvyn hajautettu viestintäjärjestelmä, jota käytetään laajasti esimerkiksi lokien keruussa, suoratoistotietojen käsittely, verkko- ja offline-viestien jakelu ja muissa tilanteissa. Vaikka Kafaka ei ole suunniteltu perinteiseksi MQ:ksi, se voi useimmissa tapauksissa korvata perinteiset viestijärjestelmät, kuten ActiveMQ:n.

Kafka järjestää viestien kulun aiheiden mukaan, ja palvelinta, joka pitää viestejä, kutsutaan välittäjäksi, ja kuluttajat voivat tilata yhden tai useamman aiheen. Kuorman tasapainottamiseksi aiheen viestit voidaan jakaa useisiin osioihin, ja mitä enemmän osioita, sitä suurempi on Kafkan rinnakkaisuus ja läpäisykyky.

Kafka-klusterit vaativat zookeeper-tukea klusterien toteuttamiseen, ja zookeeper sisältyy jo uusimpaan Kafka-jakeluun, joka voidaan ottaa käyttöön käynnistämään zookeeper-palvelin ja Kafka-palvelin samanaikaisesti, tai käyttää muita olemassa olevia zookeeper-klustereita.

Toisin kuin perinteisessä MQ:ssa, kuluttajien täytyy pitää offset itse, ja kun he saavat viestejä kafkalta, he hakevat viestejä vasta nykyisen offsetin jälkeen. Kafkan Scala/Java-asiakasohjelma toteuttaa jo tämän osan logiikasta tallentamalla offsetin eläintarhanhoitajalle. Jokainen kuluttaja voi valita tunnisteen, ja saman tunnisteen omaavat kuluttajat saavat saman viestin vain kerran.Jos aiheen käyttäjät käyttävät samaa ID:tä, kyseessä on perinteinen jono. Jos jokainen kuluttaja käyttää eri tunnistetta, kyseessä on perinteinen pub-sub.

Arvostelu:

Lisää ActiveMQ järjestelmäpalveluihin Windowsissa
https://www.itsvse.com/thread-6210-1-1.html

Odottavien viestien määrä, Viestit jonossa, Viesti...
https://www.itsvse.com/thread-4954-1-1.html

Yhteenveto tiedoista ActiveMQ:sta ja RabbitMQ:sta
https://www.itsvse.com/thread-4659-1-1.html

Palveluun lisätään CentOS ActiveMQ
https://www.itsvse.com/thread-4617-1-1.html

Centos 6.2 64-bittinen asennus activemq -opas
https://www.itsvse.com/thread-4616-1-1.html

ActiveMQ5.15.3 ei käynnisty, ja raportoidaan UnsupportedClassVersionError
https://www.itsvse.com/thread-4615-1-1.html

Activemq-aiheen käyttöoikeusasetukset
https://www.itsvse.com/thread-4495-1-1.html

Käyttäjä itsvse ei ole valtuutettu lukemaan: ActiveMQ.Advisory.TempQueue,Activ...
https://www.itsvse.com/thread-4476-1-1.html

C# ActiveMQ-asiakas tilaa lähdekoodin
https://www.itsvse.com/thread-4470-1-1.html

.net/c# activemq yhdistääksesi yhteystilin ja salasanan
https://www.itsvse.com/thread-4282-1-1.html

Aseta käyttäjänimi ja salasana ACTIVEMQ-teemalle ja jonolle
https://www.itsvse.com/thread-4281-1-1.html

ActiveMQ muuttaa verkkosivuston hallintasalasanaa
https://www.itsvse.com/thread-4280-1-1.html

activemq Persistent store on täynnä
https://www.itsvse.com/thread-4125-1-1.html

.NET/C# ActiveMQ-operaatioesimerkki [Lähdekoodi]
https://www.itsvse.com/thread-3907-1-1.html

Activemq:n käyttöoikeuskonfiguraatio
https://www.itsvse.com/thread-3906-1-1.html

Ero activemq Queuen ja Topicin välillä on se, että
https://www.itsvse.com/thread-3863-1-1.html

. .Net-alusta
https://www.itsvse.com/thread-3452-1-1.html

ActiveMQ:n pysyvät tilausasetukset
https://www.itsvse.com/thread-3451-1-1.html

RabbitMQ BasicQos kuluttajien rinnakkaiskäsittelyn rajoitus
https://www.itsvse.com/thread-4667-1-1.html

rabbitMQ Queue Queue Message Persistence [lähdekoodin kanssa]
https://www.itsvse.com/thread-4657-1-1.html

【Harjoittele】rabbitMQ-konsolilla tilitietojen lisäämiseksi
https://www.itsvse.com/thread-4655-1-1.html

Syvällinen analyysi RabbitMQ:n viestivasteen mekanismista
https://www.itsvse.com/thread-4639-1-1.html

.net/c# RabbitMQ-yhteyden katkaisu - katkaisu ja uudelleenyhdistäminen
https://www.itsvse.com/thread-4636-1-1.html

Johdanto RabbitMQ:n kolmeen vaihtotilaan (fanout, suora ja aihe)
https://www.itsvse.com/thread-4635-1-1.html

【Practice】RabbitMQ asentaa web-hallintapluginin
https://www.itsvse.com/thread-4631-1-1.html

【Practical Combat】RabbitMQ:n asennusopas Windowsissa
https://www.itsvse.com/thread-4630-1-1.html
Kafkan kulutus

1. Saman group_id kuluttajat voivat käyttää viestejä (Jonotustila

2. Eri group_id kuluttajat saavat saman uutisen

Kafkan edut

Hajautettu ja erittäin skaalautuva. Kafka-klustereita voidaan skaalata läpinäkyvästi lisäämään uusia palvelimia klusteriin.

Korkea suorituskyky. Kafkan suorituskyky ylittää selvästi perinteisten MQ-toteutusten, kuten ActiveMQ:n ja RabbitMQ:n, erityisesti Kafkan, joka tukee myös eräajotoimintoja. Seuraava kuva näyttää LinkedInin kuluttajasuorituskyvyn stressitestin tulokset:

Viansietokyky. Jokaisen Kafkan osion data replikoidaan useille palvelimille. Kun välittäjä epäonnistuu, ZooKeeper-palvelu ilmoittaa tuottajalle ja kuluttajalle, jotka vaihtavat toiseen välittäjään.

Kafkan haitat:

Toista viestejä. Kafka takaa, että jokainen viesti toimitetaan vähintään kerran, ja vaikka mahdollisuudet ovat pienet, on mahdollista, että viesti toimitetaan useita kertoja.
Uutiset ovat väärässä. Vaikka viestit osion sisällä ovat taatusti järjestyksessä, jos aiheessa on useita osioita, viestien välittäminen osioiden välillä ei ole taattua järjestystä.
Monimutkaisuus. Kafka vaatii eläintarhanhoitajien klustereiden tuen, ja aiheet vaativat yleensä manuaalista työtä luomiseen, käyttöönottoon ja ylläpitoon, joka on kalliimpaa kuin tavalliset viestijonot

.NET/C# viestijonon Kafka-toiminnot

Ensiksi käytä .NET Core 3.1:ttä luodaksesi kaksi uutta konsoliprojektia, nimittäin Kafka-Consumerin ja Kafka-Producerin

Käytä nugetia viittaamaan Confluent.Kafka-pakettiin näin, seuraavalla komennolla:

GitHub-osoite:Hyperlinkin kirjautuminen on näkyvissä.

Aloitamme ensin tuottajaohjelman, ja jos käynnistämme kuluttajan ensin, saamme seuraavan virheen:
Virhe tapahtui: Välittäjä: Tuntematon aihe tai osio

Tämä artikkeli käsittelee asetuksiaEnableAutoOffsetStore on väärä, eli offset-tallennustilan manuaalinen asetus (samankaltainen kuin manuaalinen vahvistusviesti)

Kuluttajat eivät aseta OffsetStorea kulutuksen jälkeen

Yritä käyttää tuottajaa kahden viestin tuottamiseen, laita kuluttajan kulutus päälle, MaxPollIntervalMs = 10000 // 10 sekuntia ilman manuaalista asetusta, anna muiden asiakkaiden kuluttaa, tietenkään muut asiakkaat eivät kuluta sitä 10 sekunnin kuluessa

MaxPollIntervalMs selittää
Edistyneille kuluttajille maksimiaika salli viestien kuluttamiseen puheluiden välillä (esimerkiksi rd_kafka_consumer_poll()). Jos tämä väli ylittyy, kuluttaja katsotaan epäonnistuneeksi ja ryhmä tasapainotetaan uudelleen siten, että osio siirretään toiselle kuluttajaryhmän jäsenelle. Varoitus: Offset-commitit eivät välttämättä ole tällä hetkellä mahdollisia. Huomautus: Suositellaan asettamaan "enable.auto.offset.store=false" sovelluksille, jotka ovat prosessoineet pitkään, ja tallentamaan offset (käyttäen offsets_store()) viestin käsittelyn jälkeen* varmistaakseen, ettei siirtymää sitoudu automaattisesti ennen käsittelyn valmistumista. Tarkista kerran sekunnissa kahden välein. Lisätietoja löytyy KIP-62:sta.

Renderöinnit ovat seuraavat:



OffsetStore asetetaan sen jälkeen, kun kuluttaja on lopettanut kulutuksensa

koodi

Kun asennus on valmis, odota 10 sekuntia, niin se toimii edelleenSain viimeisen viestin(Kun kuluttaja yhdistyy välittäjään,Aloita kulutus offset-asennostaJos c.Commit(cr) on asetettu; Viimeistä viestiä ei vastaanoteta toistuvasti.

Katso lähdekoodi



commit offset + 1 commit, ja lopulta kutsutaan Librdkafka.topic_partition_list_destroy(cOffsets);

Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.

Aseta eri GroupId

Kokeile asettaa toinen GroupId komentoriviparametrin kautta ja lähettää sitten viesti tuottajan kautta, kuten seuraavassa kuvassa näkyy:



Sekä clinet1 että client2Vastaanota historiallisia viestejä, ja kun tuottaja lähettää viestin, molemmat ovat melkeinVastaanota viestejä samanaikaisesti

Uudet kuluttajat saavat vain uusia viestejä

Miten saat uuden asiakkaan vastaanottamaan vain uusia viestejä ja jättämään historialliset tiedot huomiotta?

Ympäristöt ovat seuraavat:

Kuten alla on esitetty:



Tuottajakoodi

Seuraavasti:

Kuluttajakoodi

Seuraavasti:

Lähdekoodin lataus

Turistit, jos haluatte nähdä tämän postauksen piilotetun sisällön, olkaa hyväVastaus






Edellinen:.NET/C# Poikkeus Tencent Enterprise Mailboxin avulla: Operaatio on aikakatkaistu.
Seuraava:NuGet tyhjentää välimuistin
 Vuokraisäntä| Julkaistu 15.4.2021 9.31.05 |
Kun .NET Kafka -asiakas irrotetaan, se ei tee poikkeusta ja yhdistyy uudelleen, kun verkko on normaali
%4|1618450028.267| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Yhteys katkesi (59926 ms jälkeen tilassa UP)
%3|1618450028.267| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Yhteys katkesi (59926ms jälkeen tilassa UP)
%3|1618450028.267| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Yhdistä ipv4#192.168.1.175:9092 epäonnistui: Tuntematon virhe (0ms jälkeen tilassa CONNECT)
%3|1618450028.268| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Yhdistä ipv4#192.168.1.175:9092 epäonnistui: Tuntematon virhe (0ms jälkeen tilassa CONNECT)
%3|1618450028.357| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Yhdistä ipv4#192.168.1.175:9092 epäonnistui: Tuntematon virhe (10 ms CONNECT-tilassa, 1 identtinen virhe(t) vaimennettu)
%3|1618450028.357| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Yhdistä ipv4#192.168.1.175:9092 epäonnistui: Tuntematon virhe (10 ms CONNECT-tilassa, 1 identtinen virhe(t) suljettu)
%3|1618450062.882| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Yhdistä ipv4#192.168.1.175:9092 epäonnistui: Tuntematon virhe (0ms jälkeen tilassa CONNECT, 8 identtistä virhettä vaimennettu)
%3|1618450062.882| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Yhdistä ipv4#192.168.1.175:9092 epäonnistui: Tuntematon virhe (0ms jälkeen tilassa CONNECT, 8 identtistä virhettä suljettu)
%3|1618450098.255| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Yhdistä ipv4#192.168.1.175:9092 epäonnistui: Tuntematon virhe (11 ms CONNECT-tilassa, 4 identtistä virhettä suljettu)
%3|1618450098.255| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Yhdistä ipv4#192.168.1.175:9092 epäonnistui: Tuntematon virhe (11 ms CONNECT-tilassa, 4 identtistä virhettä suljettu)
%3|1618450138.243| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Yhdistä ipv4#192.168.1.175:9092 epäonnistui: Tuntematon virhe (0ms CONNECT-tilassa, 4 identtistä virhettä vaimennettu)
%3|1618450138.244| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Yhdistä ipv4#192.168.1.175:9092 epäonnistui: Tuntematon virhe (0ms CONNECT-tilassa, 4 identtistä virhettä suljettu)
%3|1618450168.254| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Yhdistä ipv4#192.168.1.175:9092 epäonnistui: Tuntematon virhe (10 ms CONNECT-tilassa, 3 identtistä virhettä vaimennettu)
%3|1618450168.254| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Yhdistä ipv4#192.168.1.175:9092 epäonnistui: Tuntematon virhe (10 ms CONNECT-tilassa, 3 identtistä virhettä suljettu)

 Vuokraisäntä| Julkaistu 13.4.2021 16.26.58 |
Viestin kulutuksen periaate:

Varsinaisessa tuotantoprosessissa jokaisella aiheella on useita osioita, ja useiden osioiden etuna on, että toisaalta mahdollisuus jakaa tiedot välittäjälle vähentää viestien kapasiteettia ja parantaa IO:n suorituskykyä. Toisaalta, kuluttajapuolen kulutusvoiman parantamiseksi sama aihe käsitellään yleensä useiden kuluttajien kesken, eli kuluttajapuolen kuormantasapainotusmekanismi, jonka seuraavaksi ymmärrämme: miten kuluttajat kuluttavat viestejä useiden osioiden ja useiden kuluttajien tapauksessa? Kafka esiintyy kuluttajaryhmien käsitteessä, eli group.id samanlaisia kuluttajia, jotka kuuluvat kuluttajaryhmään, ja kaikki ryhmän kuluttajat koordinoivat kuluttamaan kaikki tilausaiheen osiot. Tietenkin kutakin osiota voivat käyttää vain saman kuluttajaryhmän kuluttajat, joten miten saman kuluttajaryhmän kuluttajat jakavat datan, jossa osio tulisi kuluttaa? Yksinkertaisena esimerkkinä, jos osiot häviävät, eli kun partitonien määrä on sama kuin kuluttajien, jokainen kuluttaja vastaa yhtä osuutta; jos kuluttajien määrä on suurempi kuin osiot, ylimääräinen kuluttajien määrä ei toimi, päinvastoin, on kuluttajia, jotka kuluttavat useita osioita.

Kaavoitusjakostrategia:

Kafkassa on kaksi jakojen allokointistrategiaa, toinen on Range (oletus) ja toinen RoundRobin (kysely). Tämä asetetaan kulutajan konfiguraatioparametrilla partition.assignment.strategy.


Katso kaikki aiheet


Katso aiheen tiedot




 Vuokraisäntä| Julkaistu 8.5.2021 17.17.33 |
Kafka poistaa kuluttajaryhmät



Pyydetyjen kuluttajaryhmien ('itsvse') poistaminen onnistui.


Seuraavat virheet voidaan raportoida:

Error: Deletion of some consumer groups failed:
* Ryhmää 'itsvse' ei voitu poistaa, koska: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.GroupNotEmptyException: Ryhmä ei ole tyhjä.
ratkaisu

Käytä kaikki viestit tai aseta siirtymä

Kafka asettaa siirtymän manuaalisesti
https://www.itsvse.com/thread-9641-1-1.html
Sitten poista se uudelleen!

 Vuokraisäntä| Julkaistu 13.4.2021 15.40.48 |
Power Shell Command



Jokaisella kuluttajaasiakkaalla on kaksi yhteyttä Kafka-palveluun
 Vuokraisäntä| Julkaistu 7.5.2021 12.37.06 |
kafka, joka näkee aihepinojen määrän määritellyn ryhmän alla

Julkaistu 16.6.2021 12.41.09 |
Kysy, miksi koodia ei voi nähdä~
 Vuokraisäntä| Julkaistu 25.6.2021 10.50.06 |
Kafka saa topic size -komennon:



 Vuokraisäntä| Julkaistu 18.7.2021 10.15.01 |
Kafka-komentorivi aiheiden luomiseen:

Julkaistu 3.9.2021 11.52.41 |
Kafkassa on vielä monia sudenkuoppia, opittu
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com