See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 129246|Vastuse: 17

[Allikas] Kafka operatsioonid .NET/C# sõnumijärjekordade jaoks [lähtekoodiga]

[Kopeeri link]
Postitatud 13.04.2021 11:45:31 | | | |
Kafka on LinkedIni poolt välja töötatud kõrge jõudlusega hajutatud sõnumisüsteem, mida kasutatakse laialdaselt sellistes olukordades nagu logide kogumine, voogedastuse andmete töötlemine, veebipõhine ja võrguühenduseta sõnumite jagamine ning palju muud. Kuigi see ei ole traditsioonilise MQ-na, võib Kafaka enamasti asendada traditsioonilisi sõnumisüsteeme, nagu ActiveMQ.

Kafka korraldab sõnumite voogu teemade kaupa ning serverit, mis sõnumeid hoiab, nimetatakse maakleriks ning tarbijad saavad tellida ühe või mitme teema. Koormuse tasakaalustamiseks saab teema sõnumid jagada mitmeks partitsiooniks ning mida rohkem partitsioone, seda suurem on Kafka paralleelsus ja läbilaskevõime.

Kafka klastrid vajavad klastrite rakendamiseks zookeeperi tuge ning zookeeper on juba kaasatud uusimasse Kafka distributsiooni, mida saab juurutada nii zookeeperi serveri kui ka Kafka serveri käivitamiseks samaaegselt või kasutada teisi olemasolevaid zookeeperi klastriid.

Erinevalt traditsioonilisest MQ-st peavad tarbijad hoidma offset'i ise ning kafka sõnumite saamisel tõmbavad nad sõnumeid alles pärast praegust nihket. Kafka Scala/Java klient rakendab selle loogika osa juba, salvestades nihke loomaaiahoidjale. Iga tarbija saab valida ID ning sama ID-ga tarbijad saavad sama sõnumi vaid korra.Kui kõik ühe teema kasutajad kasutavad sama id-d, on tegemist traditsioonilise järjekorraga. Kui iga tarbija kasutab erinevat ID-d, on see traditsiooniline pubi-sub.

Läbivaatamine:

Lisa ActiveMQ süsteemiteenustele Windowsi all
https://www.itsvse.com/thread-6210-1-1.html

OotelSõnumite Arv, SõnumidJärjekorras, Sõnum...
https://www.itsvse.com/thread-4954-1-1.html

Kokkuvõte teabest ActiveMQ ja RabbitMQ kohta
https://www.itsvse.com/thread-4659-1-1.html

Teenusele lisatakse CentOS ActiveMQ
https://www.itsvse.com/thread-4617-1-1.html

Centos 6.2 64-bitine installatsioon activemq õpetus
https://www.itsvse.com/thread-4616-1-1.html

ActiveMQ5.15.3 ei käivitu ja teatatakse UnsupportedClassVersionError
https://www.itsvse.com/thread-4615-1-1.html

Activemq teema õiguste seaded
https://www.itsvse.com/thread-4495-1-1.html

Kasutaja itsvse ei ole volitatud lugema: ActiveMQ.Advisory.TempQueue,Activ...
https://www.itsvse.com/thread-4476-1-1.html

C# ActiveMQ klient tellib lähtekoodi
https://www.itsvse.com/thread-4470-1-1.html

.net/c# activemq, et määrata ühenduskonto ja parooli
https://www.itsvse.com/thread-4282-1-1.html

Määra kasutajanimi ja parool ACTIVEMQ teema jaoks ning järjekorraks
https://www.itsvse.com/thread-4281-1-1.html

ActiveMQ muudab veebilehe haldusparooli
https://www.itsvse.com/thread-4280-1-1.html

activemq Püsiv pood on täis
https://www.itsvse.com/thread-4125-1-1.html

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

Activemq kasutajaõiguste konfiguratsioon
https://www.itsvse.com/thread-3906-1-1.html

Erinevus activemq järjekorra ja teema vahel on see, et
https://www.itsvse.com/thread-3863-1-1.html

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

ActiveMQ püsiva tellimuse seaded
https://www.itsvse.com/thread-3451-1-1.html

RabbitMQ BasicQos tarbija paralleeltöötluse piirang
https://www.itsvse.com/thread-4667-1-1.html

rabbitMQ järjekorra sõnumi püsivus [lähtekoodiga]
https://www.itsvse.com/thread-4657-1-1.html

【Harjuta】rabbitMQ konsooli konto lisamiseks
https://www.itsvse.com/thread-4655-1-1.html

RabbitMQ sõnumivastuse mehhanismi põhjalik analüüs
https://www.itsvse.com/thread-4639-1-1.html

.net/c# RabbitMQ ühenduse katkestus – ühenduse katkestamine ja taasühendamine
https://www.itsvse.com/thread-4636-1-1.html

Sissejuhatus RabbitMQ kolme vahetusrežiimi (fanout, otse ja teema) kohta
https://www.itsvse.com/thread-4635-1-1.html

【Practice】RabbitMQ installib veebihaldusplugina
https://www.itsvse.com/thread-4631-1-1.html

【Practical Combat】RabbitMQ paigaldusõpetus Windowsis
https://www.itsvse.com/thread-4630-1-1.html
Kafka tarbimine

1. Sama group_id tarbijad, ainult üks tarbija võib sõnumeid tarbida (Järjekorra režiim

2. Erinevate group_id tarbijad saavad sama uudise

Kafka eelised

Hajutatud ja väga skaleeritav. Kafka klastreid saab läbipaistvalt skaleerida, et lisada klastrisse uusi servereid.

Kõrge jõudlusega. Kafka jõudlus ületab oluliselt traditsiooniliste MQ rakenduste, nagu ActiveMQ ja RabbitMQ, eriti Kafka, mis toetab samuti partiioperatsioone. Järgmine pilt näitab LinkedIni tarbijate soorituse stressitesti tulemusi:

Veakindlus. Iga Kafka partitsiooni andmed replitseeritakse mitmele serverile. Kui maakler ebaõnnestub, teavitab ZooKeeper teenus tootjat ja tarbijat, kes vahetavad maakleri vastu.

Kafka puudused:

Korda sõnumeid. Kafka garanteerib, et iga sõnum toimetatakse vähemalt korra, ja kuigi tõenäosus on väike, on võimalus, et sõnum toimetatakse mitu korda.
Uudised on katki. Kuigi partitsiooni sees olevad sõnumid on garanteeritult korras, ei ole sõnumite edastamine partitsioonide vahel garanteeritud, kui teemal on mitu partitsiooni.
Keerukus. Kafka vajab loomaaiahoidjate klastrite tuge ning teemad vajavad tavaliselt käsitsi tööd, et luua, juurutada ja hooldada, mis on kallim kui üldised sõnumijärjekorrad

.NET/C# sõnumijärjekorra Kafka operatsioonid

Esiteks kasuta .NET Core 3.1, et luua kaks uut konsooliprojekti, nimelt Kafka-Consumer ja Kafka-Producer

Kasuta nuget'i, et viidata Confluent.Kafka paketile nii, järgmise käsuga:

GitHubi aadress:Hüperlingi sisselogimine on nähtav.

Alustame esmalt Tootja programmi, ja kui alustame tarbijat, saame järgmise vea:
Viga tekkis: Maakler: Tundmatu teema või partitsioon

See artikkel kasutab seadeidEnableAutoOffsetStore on vale, see tähendab nihkesalvestuse käsitsi seadistamist (sarnane käsitsi kinnitussõnumile)

Tarbijad ei sea OffsetStore'i pärast tarbimist

Proovi kasutada tootjat, et toota kaks sõnumit, lülita tarbija tarbimine sisse, MaxPollIntervalMs = 10000 // 10 sekundit ilma käsitsi seadistamata, lase teistel klientidel tarbida, loomulikult ei tarbita teised kliendid seda 10 sekundi jooksul

MaxPollIntervalMs selgitab
Edasijõudnute tarbijate jaoks võimaldas maksimaalne aeg sõnumite tarbimiseks kõnede vahel (näiteks rd_kafka_consumer_poll()). Kui see intervall ületatakse, loetakse tarbija ebaõnnestunuks ja grupp tasakaalustatakse nii, et partitsioon määratakse teisele tarbijagrupi liikmele. Hoiatus: Offset-commitid ei pruugi praegu olla võimalikud. Märkus: Soovitatav on seada "enable.auto.offset.store=false" rakendustele, mis on pikka aega töötlemisel, ning seejärel salvestada nihe (kasutades offsets_store()) pärast sõnumi töötlemist*, et tagada nihke automaatse kinnitamise puudumine enne töötlemise lõppu. Kontrolli kord sekundis kahe kaupa. Lisateabe saamiseks vaata KIP-62.

Renderdused on järgmised:



OffsetStore seadistatakse pärast tarbija kulutamist

kood

Kui seadistamine on tehtud, oota 10 sekundit ja see töötab ikkaSain viimase sõnumi kätte(Kui tarbija ühendub maakleriga,Alusta tarbimist nihutatud asendistKui c.Commit(cr) on seatud; Viimast sõnumit ei jõuta korduvalt vastu.

Vaata lähtekoodi



commit offset + 1 commit ja lõpuks kutsuda Librdkafka.topic_partition_list_destroy(cOffsets);

Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.

Sea teine GroupId

Proovi määrata teine GroupId käsurea parameetri kaudu ja seejärel saata sõnum tootja kaudu, nagu näidatud järgmisel pildil:



Nii clinet1 kui client2Ajalooliste sõnumite vastuvõtmine, ja pärast seda, kui produtsent on sõnumi saatnud, on mõlemad peaaeguSõnumite vastuvõtmine samaaegselt

Uued tarbijad saavad ainult uusi sõnumeid

Kuidas panna uus klient saama ainult uusi sõnumeid ja ignoreerima ajaloolisi andmeid?

Seaded on järgmised:

Nagu allpool näidatud:



Tootjakood

Järgmiselt:

Tarbijakood

Järgmiselt:

Lähtekoodi allalaadimine

Turistid, kui soovite näha selle postituse peidetud sisu, palunVastuse






Eelmine:.NET/C# Erand Tencent Enterprise postkasti kasutamisel: Operatsioon on aegunud.
Järgmine:NuGet puhastab vahemälu
 Üürileandja| Postitatud 15.04.2021 09:31:05 |
Kui .NET Kafka klient on lahti ühendatud, ei teki see erandit ja ühendub uuesti pärast võrgu normaalsust
%4|1618450028.267| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Ühendus katkenud (pärast 59926ms olekus UP)
%3|1618450028.267| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Ühendus katkenud (pärast 59926ms olekus UP)
%3|1618450028.267| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Ühendus ipv4#192.168.1.175:9092 ebaõnnestus: Tundmatu viga (pärast 0ms olekus CONNECT)
%3|1618450028.268| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Ühendu ipv4#192.168.1.175:9092 ebaõnnestus: Tundmatu viga (pärast 0ms olekus CONNECT)
%3|1618450028.357| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Ühendus ipv4#192.168.1.175:9092 ebaõnnestus: Tundmatu viga (pärast 10 ms olekus CONNECT, 1 identne viga summutatud)
%3|1618450028.357| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: ühendus ipv4#192.168.1.175:9092 ebaõnnestus: Tundmatu viga (pärast 10 ms olekus CONNECT, 1 identne viga summutatud)
%3|1618450062.882| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Ühendus ipv4#192.168.1.175:9092 ebaõnnestus: Tundmatu viga (pärast 0ms olekus CONNECT, 8 identset viga(t) summutatud)
%3|1618450062.882| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Ühendus ipv4#192.168.1.175:9092 ebaõnnestus: Tundmatu viga (pärast 0ms olekus CONNECT, 8 identset viga summutatud)
%3|1618450098.255| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Ühendus ipv4#192.168.1.175:9092 ebaõnnestus: Tundmatu viga (pärast 11 ms olekus CONNECT, 4 identset viga summutatud)
%3|1618450098.255| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: ühendus ipv4#192.168.1.175:9092 ebaõnnestus: Tundmatu viga (pärast 11 ms olekus CONNECT, 4 identset viga summutatud)
%3|1618450138.243| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Ühendus ipv4#192.168.1.175:9092 ebaõnnestus: Tundmatu viga (pärast 0ms olekus CONNECT, 4 identset viga summutatud)
%3|1618450138.244| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Ühendus ipv4#192.168.1.175:9092 ebaõnnestus: Tundmatu viga (pärast 0ms olekus CONNECT, 4 identset viga summutatud)
%3|1618450168.254| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Ühendus ipv4#192.168.1.175:9092 ebaõnnestus: Tundmatu viga (pärast 10 ms olekus CONNECT, 3 identset viga summutatud)
%3|1618450168.254| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: ühendus ipv4#192.168.1.175:9092 ebaõnnestus: Tundmatu viga (pärast 10 ms olekus CONNECT, 3 identset viga summutatud)

 Üürileandja| Postitatud 13.04.2021 16:26:58 |
Sõnumi tarbimise põhimõte:

Tegelikus tootmisprotsessis on igal teemal mitu partitsiooni ning mitme partitsiooni eeliseks on see, et ühelt poolt vähendab andmete jagamise võimalus maakleril sõnumite mahtu ja parandab IO jõudlust. Teisest küljest, et parandada tarbijapoolse tarbimisvõimsust, käsitletakse tavaliselt sama teemat mitme tarbija kaudu, st tarbija poole koormuse tasakaalustamise mehhanismi, mida me järgmisena mõistame, kuidas tarbijad tarbivad sõnumeid mitme partitsiooni ja mitme tarbija puhul? Kafka eksisteerib tarbijagruppide kontseptsioonis, st group.id sama tüüpi tarbijad, kes kuuluvad tarbijagruppi, ning kõik grupi tarbijad koordineerivad, et tarbida kõik tellimuse teema partitsioonid. Loomulikult saavad iga partitsiooni tarbida ainult sama tarbijagrupi tarbijad, nii et kuidas jaotavad sama tarbijagrupi tarbijad andmed, milles partitsioon peaks tarbima? Lihtsa näite näiteks, kui partitsioone kaotatakse, st kui partitonide arv on sama mis tarbijate arv, vastab iga tarbija partitsioonile, kui tarbijate arv on suurem kui partitsioonid, siis lisatarbijate arv ei tööta, vastupidi, tarbijad tarbivad mitut partitsiooni.

Tsoonimise määramise strateegia:

Kafkas on kaks partitsioonide jaotuse strateegiat: üks on Range (vaikimisi) ja teine RoundRobin (küsitlus). Seda määrab tarbija konfiguratsioon partition.assignment.strategy parameeter.


Vaata kõiki teemasid


Vaata teema üksikasju




 Üürileandja| Postitatud 08.05.2021 17:17:33 |
Kafka kustutab tarbijagrupid



Taotletud tarbijagruppide ('itsvse') kustutamine õnnestus.


Järgmised vead võivad olla teatatud:

Error: Deletion of some consumer groups failed:
* Gruppi 'itsvse' ei saanud kustutada, sest: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.GroupNotEmptyException: Grupp ei ole tühi.
lahus

Tarbida kõik sõnumid või määrata nihe

Siis kustuta see uuesti!

 Üürileandja| Postitatud 13.04.2021 15:40:48 |
Power Shell Command



Igal tarbijakliendil on 2 ühendust Kafka teenusega
 Üürileandja| Postitatud 07.05.2021 12:37:06 |
kafka, et vaadata kindla grupi all olevate teemade virnade arvu

Postitatud 16.06.2021 12:41:09 |
Palun küsi, miks koodi ei saa vaadata~
 Üürileandja| Postitatud 25.06.2021 10:50:06 |
Kafka saab teema suuruse käsu:



 Üürileandja| Postitatud 18.07.2021 10:15:01 |
Kafka käsurea teemade loomiseks:

Postitatud 03.09.2021 11:52:41 |
Kafkas on endiselt palju lõkse, õpitud
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com