Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 129246|Odpoveď: 17

[Zdroj] Kafka operácie pre .NET/C# fronty správ [so zdrojovým kódom]

[Kopírovať odkaz]
Zverejnené 13. 4. 2021 11:45:31 | | | |
Kafka je vysoko výkonný, distribuovaný systém správ vyvinutý spoločnosťou LinkedIn, ktorý sa široko používa v situáciách ako zber logov, spracovanie streamovaných dát, online a offline distribúcia správ a ďalšie. Hoci nie je navrhnutý ako tradičný MQ, Kafaka môže vo väčšine prípadov nahradiť tradičné komunikačné systémy, ako je ActiveMQ.

Kafka organizuje tok správ podľa tém a server, ktorý správy uchováva, sa nazýva broker, pričom spotrebitelia sa môžu prihlásiť na odber jednej alebo viacerých tém. Na vyváženie záťaže je možné správy témy rozdeliť do viacerých častíc, pričom čím viac oddielov, tým väčší paralelizmus a priepustnosť Kafku.

Kafka klastre vyžadujú podporu zookeeperu na implementáciu klastrov a zookeeper je už zahrnutý v najnovšej Kafka distribúcii, ktorú možno nasadiť na súčasné spustenie zookeeper servera a Kafka servera, alebo použiť iné existujúce zookeeper klastre.

Na rozdiel od tradičného MQ si spotrebitelia potrebujú offset ponechať sami a pri prijímaní správ z Kafky sťahujú správy až po aktuálnom offsete. Kafka scala/java klient už túto časť logiky implementuje tým, že offset ukladá do zookeepera. Každý spotrebiteľ si môže vybrať ID a spotrebitelia s rovnakým ID dostanú rovnakú správu len raz.Ak všetci spotrebitelia témy používajú rovnaké ID, ide o tradičnú frontu. Ak každý spotrebiteľ používa iné ID, ide o tradičný pub-sub.

Revízia:

Pridajte ActiveMQ do systémových služieb pod Windows
https://www.itsvse.com/thread-6210-1-1.html

PočetČakajúcichSpráv, Správy v rade, Správy...
https://www.itsvse.com/thread-4954-1-1.html

Súhrn informácií o ActiveMQ a RabbitMQ
https://www.itsvse.com/thread-4659-1-1.html

Do služby je pridaný CentOS ActiveMQ
https://www.itsvse.com/thread-4617-1-1.html

Centos 6.2 64-bitová inštalácia activemq tutoriál
https://www.itsvse.com/thread-4616-1-1.html

ActiveMQ5.15.3 sa nespustí a hlási sa UnsupportedClassVersionError
https://www.itsvse.com/thread-4615-1-1.html

Nastavenia oprávnení témy Activemq
https://www.itsvse.com/thread-4495-1-1.html

Používateľ nemá oprávnenie čítať z: ActiveMQ.Advisory.TempQueue,Activ...
https://www.itsvse.com/thread-4476-1-1.html

C# ActiveMQ klient predberá zdrojový kód
https://www.itsvse.com/thread-4470-1-1.html

.net/c# activemq na nastavenie účtu pripojenia a hesla
https://www.itsvse.com/thread-4282-1-1.html

Nastavte používateľské meno a heslo pre tému a frontu ACTIVEMQ
https://www.itsvse.com/thread-4281-1-1.html

ActiveMQ upravuje heslo na správu webu
https://www.itsvse.com/thread-4280-1-1.html

activemq persistentný úlož je plný
https://www.itsvse.com/thread-4125-1-1.html

.NET/C# Príklad operácie ActiveMQ [Zdrojový kód]
https://www.itsvse.com/thread-3907-1-1.html

Konfigurácia používateľských oprávnení Activemq
https://www.itsvse.com/thread-3906-1-1.html

Rozdiel medzi activemq Queue a Topic je v tom, že
https://www.itsvse.com/thread-3863-1-1.html

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

Nastavenia trvalého predplatného ActiveMQ
https://www.itsvse.com/thread-3451-1-1.html

RabbitMQ BasicQos limit spotrebiteľského paralelného spracovania
https://www.itsvse.com/thread-4667-1-1.html

rabbitMQ Queue Queue Persistence Message [so zdrojovým kódom]
https://www.itsvse.com/thread-4657-1-1.html

【Practice】rabbitMQ konzola na pridanie informácií o účte
https://www.itsvse.com/thread-4655-1-1.html

Hĺbková analýza mechanizmu odpovede na správy v RabbitMQ
https://www.itsvse.com/thread-4639-1-1.html

.net/c# RabbitMQ odpojenie a opätovné pripojenie
https://www.itsvse.com/thread-4636-1-1.html

Úvod do troch výmenných režimov (fanout, priamy a tematický) v RabbitMQ
https://www.itsvse.com/thread-4635-1-1.html

【Practice】RabbitMQ inštaluje plugin na správu webu
https://www.itsvse.com/thread-4631-1-1.html

【Praktický boj】Inštalačný tutoriál RabbitMQ pod Windows
https://www.itsvse.com/thread-4630-1-1.html
Kafka spotreba

1. Spotrebitelia tej istej group_id, iba jeden spotrebiteľ môže konzumovať správy (Režim fronty

2. Spotrebitelia rôznych group_id dostávajú rovnaké správy

Výhody Kafku

Distribuované a vysoko škálovateľné. Kafka klastre je možné transparentne škálovať tak, aby pridávali nové servery do klastra.

Vysoký výkon. Výkon Kafky výrazne prevyšuje tradičné implementácie MQ, ako sú ActiveMQ a RabbitMQ, najmä Kafka, ktorá tiež podporuje dávkové operácie. Nasledujúci obrázok ukazuje výsledky záťažového testu spotrebiteľskej výkonnosti LinkedIn:

Odolnosť voči chybám. Dáta z každej partície v Kafka sa replikujú na niekoľko serverov. Keď sprostredkovateľ zlyhá, služba ZooKeeper informuje producenta a spotrebiteľa, ktorí prejdú na iného sprostredkovateľa.

Nevýhody Kafku:

Opakované správy. Kafka zaručuje, že každá správa bude doručená aspoň raz, a hoci sú šance malé, existuje šanca, že správa bude doručená viackrát.
Správy sú mimo poriadku. Hoci správy v rámci partície sú zaručene usporiadané, ak má téma viacero partícií, doručenie správ medzi partiérami nie je zaručene usporiadané.
Komplexnosť. Kafka vyžaduje podporu zookeeper klastroch a témy zvyčajne vyžadujú manuálnu prácu na vytvorenie, nasadenie a údržbu, ktorá je drahšia než bežné fronty správ

.NET/C# fronta správ Kafka operácie

Najprv použiť .NET Core 3.1 na vytvorenie dvoch nových konzolových projektov, konkrétne Kafka-Consumer a Kafka-Producer

Použite nuget na odkazovanie na balík Confluent.Kafka takto, pomocou nasledujúceho príkazu:

GitHub adresa:Prihlásenie na hypertextový odkaz je viditeľné.

Najskôr spustíme program Producer a ak spustíme najskôr spotrebiteľa, dostaneme nasledujúcu chybu:
Vyskytla sa chyba: Broker: Neznáma téma alebo partícia

Tento článok sa zaoberá nastaveniamiEnableAutoOffsetStore je nepravdivý, teda manuálne nastavenie offsetovej pamäte (podobne ako manuálna potvrdzovacia správa)

Spotrebitelia nenastavujú OffsetStore po spotrebe

Skúste použiť generátor na vytvorenie dvoch správ, zapnite spotrebiteľskú spotrebu, MaxPollIntervalMs = 10000 // 10 sekúnd bez manuálneho nastavenia, umožniť iným klientom spotrebovať, samozrejme, do 10 sekúnd to nebudú spotrebovať iní klienti

MaxPollIntervalMs vysvetľuje
Pre pokročilých spotrebiteľov je to maximálny povolený čas na spotrebu správ medzi hovormi (napríklad rd_kafka_consumer_poll()). Ak je tento interval prekročený, spotrebiteľ sa považuje za neúspešného a skupina sa prebalansuje tak, že partícia je priradená inému členovi spotrebiteľskej skupiny. Upozornenie: Offsetové commity momentálne nemusia byť možné. Poznámka: Odporúča sa nastaviť "enable.auto.offset.store=false" pre aplikácie, ktoré spracovávajú dlhý čas, a potom explicitne uložiť offset (pomocou offsets_store()) po spracovaní správy*, aby sa zabezpečilo, že offset nebude automaticky potvrdený pred dokončením spracovania. Kontroluj raz za sekundu v intervaloch po dvech. Pre viac informácií pozri KIP-62.

Vizualizácie sú nasledovné:



OffsetStore sa nastavuje po tom, čo spotrebiteľ skončí s výdavkami

kód

Po dokončení nastavenia počkajte 10 sekúnd a stále to fungujeDostal som poslednú správu(Keď sa spotrebiteľ pripojí k maklérovi,Začnite spotrebu z offsetovej pozícieAk je c.Commit(cr) nastavený; Posledná správa nebude prijatá opakovane.

Zobraziť zdrojový kód



commit offset + 1 commit a nakoniec volajte Librdkafka.topic_partition_list_destroy(cOffsets);

Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné.

Nastavte iný GroupId

Skúste nastaviť iný GroupId pomocou parametra príkazového riadku a potom pošlite správu cez producenta, ako je znázornené na nasledujúcom obrázku:



Clinet1 aj client2Prijímajte historické správy, a po tom, čo producent pošle správu, obaja budú takmerPrijímať správy súčasne

Noví spotrebitelia dostávajú len nové správy

Ako dosiahnuť, aby nový klient dostával len nové správy a ignoroval historické údaje?

Nastavenia sú nasledovné:

Ako je uvedené nižšie:



Kód producenta

Takto:

Spotrebiteľský kód

Takto:

Stiahnutie zdrojového kódu

Turisti, ak chcete vidieť skrytý obsah tohto príspevku, prosím.Odpoveď






Predchádzajúci:.NET/C# Výnimka pomocou Tencent Enterprise Mailbox: Operácia vypršala.
Budúci:NuGet vymaže cache
 Prenajímateľ| Zverejnené 15. 4. 2021 9:31:05 |
Keď je .NET Kafka klient odpojený, nevyhodí výnimku a pripojí sa po tom, čo je sieť normálna
%4|1618450028.267| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Odpojený (po 59926 ms v štáte UP)
%3|1618450028.267| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Odpojený (po 59926 ms v štáte UP)
%3|1618450028.267| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Pripojiť sa na ipv4#192.168.1.175:9092 zlyhalo: Neznáma chyba (po 0ms v stave CONNECT)
%3|1618450028.268| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Pripojiť sa na ipv4#192.168.1.175:9092 zlyhalo: Neznáma chyba (po 0 ms v stave CONNECT)
%3|1618450028.357| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Pripojiť sa na ipv4#192.168.1.175:9092 zlyhalo: Neznáma chyba (po 10 ms v stave CONNECT, 1 identická chyba potlačená)
%3|1618450028.357| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Pripojiť sa na ipv4#192.168.1.175:9092 zlyhalo: Neznáma chyba (po 10 ms v stave CONNECT, 1 identická chyba potlačená)
%3|1618450062.882| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Pripojiť sa na ipv4#192.168.1.175:9092 zlyhalo: Neznáma chyba (po 0 ms v stave CONNECT, 8 identických chýb potlačených)
%3|1618450062.882| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Pripojenie k ipv4#192.168.1.175:9092 zlyhalo: Neznáma chyba (po 0ms v stave CONNECT, 8 identických chýb potlačených)
%3|1618450098.255| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Pripojiť sa na ipv4#192.168.1.175:9092 zlyhalo: Neznáma chyba (po 11 ms v stave CONNECT, 4 identické chyby potlačené)
%3|1618450098.255| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Pripojenie k ipv4#192.168.1.175:9092 zlyhalo: Neznáma chyba (po 11 ms v stave CONNECT, 4 identické chyby potlačené)
%3|1618450138.243| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Pripojenie k ipv4#192.168.1.175:9092 zlyhalo: Neznáma chyba (po 0ms v stave CONNECT, 4 identické chyby potlačené)
%3|1618450138.244| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Pripojenie k ipv4#192.168.1.175:9092 zlyhalo: Neznáma chyba (po 0ms v stave CONNECT, 4 identické chyby potlačené)
%3|1618450168.254| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Pripojiť sa k ipv4#192.168.1.175:9092 zlyhalo: Neznáma chyba (po 10 ms v stave CONNECT, 3 identické chyby potlačené)
%3|1618450168.254| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Pripojiť sa na ipv4#192.168.1.175:9092 zlyhalo: Neznáma chyba (po 10 ms v stave CONNECT, 3 identické chyby potlačené)

 Prenajímateľ| Zverejnené 13. 4. 2021 16:26:58 |
Princíp konzumácie správ:

V skutočnom produkčnom procese bude mať každá téma viacero partícií, pričom výhodou viacerých partícií je, že na jednej strane schopnosť rozdeliť dáta na brokera efektívne znižuje kapacitu správ a zlepšuje výkon IO. Na druhej strane, aby sa zlepšila spotreba na strane spotrebiteľa, tá istá téma sa zvyčajne konzumuje viacerými spotrebiteľmi, teda mechanizmus vyvažovania záťaže na strane spotrebiteľa, čo pochopíme ďalej, ako spotrebitelia konzumujú správy v prípade viacerých partícií a viacerých spotrebiteľov? Kafka existuje v koncepte spotrebiteľských skupín, teda group.id rovnakého typu spotrebiteľov, ktorí patria do spotrebiteľskej skupiny, a všetci spotrebitelia v skupine koordinujú konzumáciu všetkých partív témy predplatného. Samozrejme, každú partíciu môžu spotrebovať len spotrebitelia v tej istej skupine, takže ako spotrebitelia v tej istej skupine prideľujú dáta, v ktorých by mala byť spotrebovaná? Pre jednoduchý príklad, ak existujú rozdelenia, ktoré strácajú, teda keď je počet partitónov rovnaký ako počet spotrebujúcich, každý konzumujúci zodpovedá jednej časti, ak je počet konzumentov väčší ako počet oddielov, potom prebytočný počet konzumentov nebude fungovať, naopak, budú spotrebitelia spotrebovať viacero partícií.

Stratégia pridelenia územného plánu:

V Kafke existujú dve stratégie alokácie partícií, jedna je Range (predvolené) a druhá RoundRobin (polling). Toto je nastavené parametrom configuration partition.assignment.strategy používateľa.


Zobraziť všetky témy


Zobraziť podrobnosti o téme




 Prenajímateľ| Zverejnené 8. 5. 2021 17:17:33 |
Kafka maže spotrebiteľské skupiny



Vymazanie požadovaných spotrebiteľských skupín ('itsvse') bolo úspešné.


Môžu byť nahlásené nasledujúce chyby:

Error: Deletion of some consumer groups failed:
* Skupina 'itsvse' nemohla byť vymazaná kvôli: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.GroupNotEmptyException: Skupina nie je prázdna.
riešenie

Spotrebujte všetky správy alebo nastavte offset

Kafka manuálne nastavuje offsetový offset
https://www.itsvse.com/thread-9641-1-1.html
Potom ho znova vymaž!

 Prenajímateľ| Zverejnené 13. 4. 2021 15:40:48 |
Príkaz Power Shell



Každý spotrebiteľský klient udržiava 2 pripojenia k službe Kafka
 Prenajímateľ| Zverejnené 7. 5. 2021 12:37:06 |
Kafka, na zobrazenie počtu stohov tém pod určenou skupinou

Zverejnené 16. 6. 2021 12:41:09 |
Prosím, opýtajte sa, prečo kód nie je zobrazený~
 Prenajímateľ| Zverejnené 25. 6. 2021 10:50:06 |
Kafka dostane príkaz na veľkosť témy:



 Prenajímateľ| Zverejnené 18. 7. 2021 10:15:01 |
Kafka príkazový riadok na vytváranie tém:

Zverejnené 3. 9. 2021 11:52:41 |
Stále existuje mnoho nástrah v Kafkovi, naučil som sa
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com