Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 129246|Odgovoriti: 17

[Vir] Kafka operacije za .NET/C# vrste sporočil [z izvorno kodo]

[Kopiraj povezavo]
Objavljeno na 13. 04. 2021 11:45:31 | | | |
Kafka je zmogljiv, distribuiran sistem za sporočanje, ki ga je razvil LinkedIn in se široko uporablja v primerih, kot so zbiranje dnevnikov, pretočna obdelava podatkov, spletna in offline distribucija sporočil ter še več. Čeprav ni zasnovan kot tradicionalni MQ, lahko Kafaka v večini primerov nadomesti tradicionalne sisteme za sporočanje, kot je ActiveMQ.

Kafka organizira pretok sporočil po temah, strežnik, ki shranjuje sporočila, pa se imenuje posrednik, potrošniki pa se lahko naročijo na eno ali več tem. Da bi uravnotežili obremenitev, je mogoče sporočila teme razdeliti v več particij, in več kot jih je, višja je paralelizemnost in prepustnost Kafke.

Kafka grozdi zahtevajo podporo za Zookeeper za implementacijo grozdov, Zookeeper pa je že vključen v najnovejšo Kafka distribucijo, ki jo je mogoče namestiti za hkratni zagon strežnika Zookeeper in strežnika Kafka ali uporabiti druge obstoječe grozde.

Za razliko od tradicionalnega MQ morajo potrošniki sami hraniti offset, in ko prejemajo sporočila iz Kafke, vlečejo sporočila šele po trenutnem offsetu. Kafkin/java odjemalec že implementira ta del logike tako, da shrani premik na Zookeeperja. Vsak potrošnik lahko izbere osebni dokument, potrošniki z isto osebno številko pa bodo isto sporočilo prejeli le enkrat.Če vsi uporabniki teme uporabljajo isti ID, gre za tradicionalno čakalno vrsto. Če vsak uporabnik uporablja drugačen ID, gre za tradicionalni pub-sub.

Pregled:

Dodajte ActiveMQ v sistemske storitve pod Windows
https://www.itsvse.com/thread-6210-1-1.html

ŠteviloČakajočih sporočil, sporočil v vrsti, sporočil...
https://www.itsvse.com/thread-4954-1-1.html

Povzetek informacij o ActiveMQ in RabbitMQ
https://www.itsvse.com/thread-4659-1-1.html

CentOS ActiveMQ je dodan storitvi
https://www.itsvse.com/thread-4617-1-1.html

Centos 6.2 64-bitna namestitev activemq tutorial
https://www.itsvse.com/thread-4616-1-1.html

ActiveMQ5.15.3 se ne zažene, zato je prijavljen UnsupportedClassVersionError
https://www.itsvse.com/thread-4615-1-1.html

Nastavitve dovoljenj za temo Activemq
https://www.itsvse.com/thread-4495-1-1.html

Uporabnik ni pooblaščen za branje iz: ActiveMQ.Advisory.TempQueue,Activ...
https://www.itsvse.com/thread-4476-1-1.html

C# ActiveMQ odjemalec se naroči na izvorno kodo
https://www.itsvse.com/thread-4470-1-1.html

.NET/C# ActiveMQ za nastavitev računa povezave in gesla
https://www.itsvse.com/thread-4282-1-1.html

Nastavite uporabniško ime in geslo za temo in čakalno vrsto ACTIVEMQ
https://www.itsvse.com/thread-4281-1-1.html

ActiveMQ spremeni geslo za upravljanje spletne strani
https://www.itsvse.com/thread-4280-1-1.html

activemq Persistentna shramba je polna
https://www.itsvse.com/thread-4125-1-1.html

.NET/C# Primer operacije ActiveMQ [Izvorna koda]
https://www.itsvse.com/thread-3907-1-1.html

Konfiguracija uporabniških dovoljenj Activemq
https://www.itsvse.com/thread-3906-1-1.html

Razlika med activemq Queue in Topic je v tem:
https://www.itsvse.com/thread-3863-1-1.html

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

Trajne nastavitve naročnine ActiveMQ
https://www.itsvse.com/thread-3451-1-1.html

RabbitMQ BasicQos omejitev za potrošniške paralelne procese
https://www.itsvse.com/thread-4667-1-1.html

rabbitMQ Queue Queue Message Persistence [z izvorno kodo]
https://www.itsvse.com/thread-4657-1-1.html

【Practice】rabbitMQ konzola za dodajanje podatkov o računu
https://www.itsvse.com/thread-4655-1-1.html

Poglobljena analiza mehanizma odziva na sporočila RabbitMQ
https://www.itsvse.com/thread-4639-1-1.html

.net/c# RabbitMQ prekinitev povezave – prekinitev in ponovna povezava
https://www.itsvse.com/thread-4636-1-1.html

Uvod v tri načine izmenjave (fanout, direct in topic) v RabbitMQ
https://www.itsvse.com/thread-4635-1-1.html

【Practice】RabbitMQ namesti vtičnik za upravljanje spletnih strani
https://www.itsvse.com/thread-4631-1-1.html

【Praktični boj】Uvodni vodič za namestitev RabbitMQ pod Windows
https://www.itsvse.com/thread-4630-1-1.html
Kafka potrošnja

1. Potrošniki istega group_id, le en potrošnik lahko porablja sporočila (Način čakalne vrste

2. Potrošniki različnih group_id prejmejo enake novice

Prednosti Kafke

Distribuirano in zelo razširljivo. Kafka grozdi je mogoče transparentno skalirati za dodajanje novih strežnikov v grozd.

Visoka zmogljivost. Kafkina zmogljivost močno presega tradicionalne implementacije MQ, kot sta ActiveMQ in RabbitMQ, zlasti Kafka, ki prav tako podpira serijske operacije. Naslednja slika prikazuje rezultate LinkedInovega stresnega testa potrošniške uspešnosti:

Odpornost na napake. Podatki iz vsake particije v Kafki se replicirajo na več strežnikov. Ko posrednik odpove, storitev ZooKeeper obvesti proizvajalca in potrošnika, ki preklopita na drugega posrednika.

Slabosti Kafke:

Ponovite sporočila. Kafka zagotavlja le to, da bo vsako sporočilo dostavljeno vsaj enkrat, in čeprav so možnosti majhne, obstaja možnost, da bo sporočilo dostavljeno večkrat.
Novice so izven reda. Čeprav so sporočila znotraj particije zagotovljeno urejena, če ima tema več particij, dostava sporočil med particijami ni zagotovljeno urejena.
Kompleksnost. Kafka zahteva podporo grozdov Zookeeper, teme pa običajno zahtevajo ročno delo za ustvarjanje, nameščanje in vzdrževanje, dražje kot običajne vrste sporočil

.NET/C# čakalna vrsta sporočil Kafka operacije

Najprej uporabite .NET Core 3.1 za ustvarjanje dveh novih konzolnih projektov, in sicer Kafka-Consumer in Kafka-Producer

Uporabite nuget za referenco na paket Confluent.Kafka tako, z naslednjim ukazom:

GitHub naslov:Prijava do hiperpovezave je vidna.

Najprej začnemo program Producent, in če najprej zaženemo potrošnika, dobimo naslednjo napako:
Prišlo je do napake: Posrednik: Neznana tema ali particija

Ta članek bo zajemal okoljaEnableAutoOffsetStore je napačen, torej ročno nastaviti pomnilnik odmika (podobno kot ročno potrditveno sporočilo)

Potrošniki ne nastavijo OffsetStore po potrošnji

Poskusite uporabiti producent za ustvarjanje dveh sporočil, vklopite potrošniško porabo, MaxPollIntervalMs = 10000 // 10 sekund brez ročne nastavitve, dovolite drugim odjemalcem, da jih porabijo, seveda ga drugi odjemalci ne bodo porabili v 10 sekundah

MaxPollIntervalMs pojasnjuje
Za napredne uporabnike je to največji dovoljeni čas za porabo sporočil med klici (na primer rd_kafka_consumer_poll()). Če je ta interval presežen, se potrošnik šteje za neuspešnega in skupina se ponovno uravnoteži, tako da se particija dodeli drugemu članu potrošniške skupine. Opozorilo: Offset commiti trenutno morda niso mogoči. Opomba: Priporočljivo je nastaviti "enable.auto.offset.store=false" za aplikacije, ki obdelujejo dolgo časa, in nato eksplicitno shraniti premik (z uporabo offsets_store()) po obdelavi sporočila*, da se zagotovi, da premik ni samodejno potrjen, preden je obdelava dokončana. Preverjaj enkrat na sekundo v intervalih po dva. Za več informacij glejte KIP-62.

Upodobitve so naslednje:



OffsetStore se nastavi po tem, ko potrošnik konča s porabo

koda

Ko je nastavitev končana, počakaj 10 sekund in bo še vedno delovaloPrejel zadnje sporočilo(Ko se potrošnik poveže z posrednikom,Začni porabo iz offset položajaČe je c.Commit(cr) nastavljen; Zadnje sporočilo ne bo prejelo večkrat.

Oglejte si izvorno kodo



potrdi premik + 1 commit in na koncu pokliči Librdkafka.topic_partition_list_destroy(cOffsets);

Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.

Nastavi drugačen GroupId

Poskusite nastaviti drugačen GroupId preko parametra ukazne vrstice in nato pošljite sporočilo preko producenta, kot je prikazano na naslednji sliki:



Tako clinet1 kot client2Prejemanje zgodovinskih sporočil, in ko producent pošlje sporočilo, bosta skoraj obaPrejemajte sporočila hkrati

Novi potrošniki prejemajo le nova sporočila

Kako narediti, da nova stranka prejema samo nova sporočila in ignorira zgodovinske podatke?

Nastavitve so naslednje:

Kot je prikazano spodaj:



Koda proizvajalca

Kot sledi:

Potrošniška koda

Kot sledi:

Prenos izvorne kode

Turisti, če želite videti skrito vsebino te objave, prosimOdgovoriti






Prejšnji:.NET/C# Izjema z uporabo Tencent Enterprise Mailbox: Operacija je potekla.
Naslednji:NuGet počisti predpomnilnik
 Najemodajalec| Objavljeno na 15. 04. 2021 09:31:05 |
Ko je .NET Kafka odjemalec odklopljen, ne sproži izjeme in se ponovno poveže, ko je omrežje normalno
%4|1618450028.267| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Odklopljeno (po 59926 ms v državi UP)
%3|1618450028.267| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Odklopljeno (po 59926 ms v državi UP)
%3|1618450028.267| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Povezava na ipv4#192.168.1.175:9092 ni uspelo: Neznana napaka (po 0ms v stanju CONNECT)
%3|1618450028.268| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Connect to ipv4#192.168.1.175:9092 ni uspelo: Neznana napaka (po 0ms v stanju CONNECT)
%3|1618450028.357| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Povezava na ipv4#192.168.1.175:9092 neuspešno: Neznana napaka (po 10 ms v stanju CONNECT, 1 identična napaka potlačena)
%3|1618450028.357| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Connect to ipv4#192.168.1.175:9092 ni uspelo: Neznana napaka (po 10 ms v stanju CONNECT, 1 enaka napaka potlačena)
%3|1618450062.882| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Povezava na ipv4#192.168.1.175:9092 neuspešno: Neznana napaka (po 0ms v stanju CONNECT, 8 enakih napak potlačenih)
%3|1618450062.882| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Connect to ipv4#192.168.1.175:9092 ni uspelo: Neznana napaka (po 0ms v stanju CONNECT, 8 enakih napak potlačenih)
%3|1618450098.255| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Povezava na ipv4#192.168.1.175:9092 neuspešno: Neznana napaka (po 11 ms v stanju CONNECT, 4 enake napake potlačene)
%3|1618450098.255| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Connect to ipv4#192.168.1.175:9092 ni uspelo: Neznana napaka (po 11 ms v stanju CONNECT, 4 enake napake potlačene)
%3|1618450138.243| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Connect na ipv4#192.168.1.175:9092 ni uspelo: Neznana napaka (po 0ms v stanju CONNECT, 4 enake napake potlačene)
%3|1618450138.244| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Connect to ipv4#192.168.1.175:9092 ni uspelo: Neznana napaka (po 0ms v stanju CONNECT, 4 enake napake potlačene)
%3|1618450168.254| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Povezava na ipv4#192.168.1.175:9092 neuspešno: Neznana napaka (po 10 ms v stanju CONNECT so 3 enake napake potlačene)
%3|1618450168.254| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Connect to ipv4#192.168.1.175:9092 ni uspelo: Neznana napaka (po 10 ms v stanju CONNECT, 3 enake napake potlačene)

 Najemodajalec| Objavljeno na 13. 04. 2021 16:26:58 |
Načelo sprejemanja sporočil:

V dejanskem produkcijskem procesu ima vsaka tema več particij, prednost več particij pa je, da po eni strani možnost razdeljevanja podatkov na posrednika učinkovito zmanjša kapaciteto sporočil in izboljša zmogljivost vhodno-vhodnih podatkov. Po drugi strani pa, da bi izboljšali potrošniško moč potrošnika, bo ista tema običajno uporabljena pri več porabnikih, torej mehanizem uravnoteženja obremenitve na strani potrošnika, kar bomo razumeli naslednje: kako potrošniki porabljajo sporočila v primeru več particij in več potrošnikov? Kafka obstaja v konceptu potrošniških skupin, torej group.id iste vrste potrošnikov, ki pripadajo potrošniški skupini, in vsi potrošniki v skupini usklajujejo uporabo vseh particij naročniške teme. Seveda lahko vsako particijo porabijo le potrošniki v isti skupini, zato kako potrošniki v isti skupini razdelijo podatke, v katerih naj se particija porabi? Za preprost primer: če izgubljajo particije, torej ko je število partitonov enako številu porabnikov, vsak uporabnik ustreza particiji; če je število porabnikov večje od particij, potem dodatno število porabnikov ne deluje, nasprotno pa bodo porabniki porabljali več particij.

Strategija dodeljevanja prostorskega načrtovanja:

V Kafki obstajata dve strategiji dodeljevanja particij, ena je Range (privzeto) in druga RoundRobin (anketiranje). To določa parameter konfiguracije uporabnika partition.assignment.strategy.


Oglejte si vse teme


Oglejte si podrobnosti o temi




 Najemodajalec| Objavljeno na 8. 05. 2021 17:17:33 |
Kafka izbriše potrošniške skupine



Izbris zahtevanih potrošniških skupin ('itsvse') je bil uspešen.


Lahko se prijavijo naslednje napake:

Error: Deletion of some consumer groups failed:
* Skupine 'itsvse' ni bilo mogoče izbrisati zaradi: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.GroupNotEmptyException: Skupina ni prazna.
rešitev

Porabite vsa sporočila ali nastavite zamik

Potem jo spet izbriši!

 Najemodajalec| Objavljeno na 13. 04. 2021 15:40:48 |
Ukaz Power Shell



Vsak potrošniški odjemalec vzdržuje 2 povezavi s storitvijo Kafka
 Najemodajalec| Objavljeno na 7. 05. 2021 12:37:06 |
Kafka, za ogled števila skladov tem pod določeno skupino

Objavljeno na 16. 06. 2021 12:41:09 |
Prosimo, vprašajte, zakaj kode ni mogoče pregledati~
 Najemodajalec| Objavljeno na 25. 06. 2021 10:50:06 |
Kafka dobi ukaz za velikost teme:



 Najemodajalec| Objavljeno na 18. 07. 2021 10:15:01 |
Kafka ukazna vrstica za ustvarjanje tem:

Objavljeno na 3. 09. 2021 11:52:41 |
Še vedno je veliko pasti pri Kafki, naučenih
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com