Programavimas

Kaip naudoti „Apache Kafka“ pranešimus „.Net“

„Apache Kafka“ yra atviro kodo, platinamas, keičiamo dydžio, didelio našumo, „public-subscribe“ pranešimų brokeris. Tai puikus pasirinkimas kuriant sistemas, galinčias apdoroti didelius duomenų kiekius. Šiame straipsnyje mes apžvelgsime, kaip galime sukurti gamintojo ir vartotojo programą „Kafka“ C #.

Norėdami pradėti naudoti „Kafka“, turėtumėte atsisiųsti „Kafka“ ir „ZooKeeper“ ir įdiegti juos į savo sistemą. Šiame „DZone“ straipsnyje pateikiamos nuoseklios instrukcijos, kaip nustatyti „Kafka“ ir „ZooKeeper“ sistemoje „Windows“. Baigę sąranką, paleiskite „ZooKeeper“ ir „Kafka“ ir sutikite mane čia.

Apache Kafka architektūra

Šiame skyriuje išnagrinėsime Kafkos architektūros komponentus ir su jais susijusią terminologiją. Iš esmės „Kafka“ susideda iš šių komponentų:

  • „Kafka Cluster“ - vieno ar kelių serverių, vadinamų brokeriais, kolekcija
  • Gamintojas - komponentas, naudojamas pranešimams skelbti
  • Vartotojas - komponentas, naudojamas pranešimams gauti ar naudoti
  • „ZooKeeper“ - centralizuota koordinavimo paslauga, naudojama konfigūracijos informacijai palaikyti paskirstytoje aplinkoje esančiuose klasterio mazguose

Pagrindinis „Kafka“ duomenų vienetas yra pranešimas. Pranešimas „Kafka“ vaizduojamas kaip raktų ir verčių pora. Kafka visus pranešimus paverčia baitų masyvais. Reikėtų pažymėti, kad „Kafka“ gamintojų, vartotojų ir grupių ryšiai naudoja TCP protokolą. Kiekvienas „Kafka“ klasterio serveris yra žinomas kaip brokeris. „Kafka“ galite keisti horizontaliai, paprasčiausiai įtraukdami į grupę papildomus brokerius.

Ši diagrama iliustruoja „Kafka“ architektūros komponentus - aukšto lygio vaizdą.

„Apache“ FONDAS

„Kafka“ tema atspindi logišką pranešimų rinkinį. Galite tai laikyti kanalu ar kategorija, kuriai gamintojas gali paskelbti pranešimus. Beje, „Kafka“ brokeryje yra viena ar daugiau temų, kurios savo ruožtu yra suskirstytos į vieną ar daugiau skaidinių. Pertvara apibrėžiama kaip sutvarkyta pranešimų seka. Pertvaros yra raktas į „Kafka“ galimybę dinamiškai keisti mastelį, nes pertvaros yra paskirstytos keliems tarpininkams.

Galite turėti vieną ar daugiau gamintojų, kurie bet kuriuo momentu į grupę persiunčia pranešimus. „Kafka“ gamintojas skelbia pranešimus tam tikra tema, o vartotojas užsiprenumeruoja temą, kad gautų pranešimus.

Pasirinkimas tarp „Kafka“ ir „RabbitMQ“

Tiek „Kafka“, tiek „RabbitMQ“ yra populiarūs atvirojo kodo pranešimų brokeriai, kurie plačiai naudojami gana ilgą laiką. Kada turėtumėte pasirinkti „Kafka“, o ne „RabbitMQ“? Pasirinkimas priklauso nuo kelių veiksnių.

„RabbitMQ“ yra greitas pranešimų brokeris, parašytas „Erlang“ kalba. Turtingos jo maršruto parinkimo galimybės ir galimybė siūlyti pranešimus yra svarbios priežastys jį naudoti. „RabbitMQ“ taip pat suteikia patogią žiniatinklio sąsają, kurią galite naudoti savo „RabbitMQ“ serveriui stebėti. Pažvelkite į mano straipsnį, kad sužinotumėte, kaip dirbti su „RabbitMQ“ .Net.

Tačiau kalbant apie didelių diegimų palaikymą, „Kafka“ mastelis yra daug geresnis nei „RabbitMQ“ - tereikia pridėti daugiau skaidinių. Taip pat reikėtų pažymėti, kad „RabbitMQ“ grupės netoleruoja tinklo skaidinių. Jei planuojate kaupti „RabbitMQ“ serverius, turėtumėte naudoti federacijas. Daugiau apie „RabbitMQ“ grupes ir tinklo skaidinius galite perskaityti čia.

Kafka taip pat aiškiai lenkia „RabbitMQ“. Vienas „Kafka“ egzempliorius gali apdoroti 100 000 pranešimų per sekundę, palyginti su arčiau nei 20 000 pranešimų per sekundę naudojant „RabbitMQ“. „Kafka“ taip pat yra geras pasirinkimas, kai norite perduoti pranešimus mažu vėlavimu, kad palaikytumėte paketinius vartotojus, darant prielaidą, kad vartotojai gali būti prisijungę arba neprisijungę.

„Kafka“ gamintojo ir „Kafka“ vartotojo kūrimas

Šiame skyriuje mes išnagrinėsime, kaip mes galime sukurti gamintoją ir vartotoją, skirtą naudoti su „Kafka“. Norėdami tai padaryti, „Visual Studio“ sukursime dvi konsolės programas - viena jų atstovaus gamintojui, kita - vartotojui. Ir turėtume įdiegti „Kafka“ teikėją .Net tiek gamintojo, tiek vartotojo programoje.

Beje, yra daug prieinamų paslaugų teikėjų, tačiau šiame įraše mes naudosime „kafka-net“, vietinį „Apache Kafka“ C # klientą. Galite įdiegti „kafka-net“ per „NuGet“ paketų tvarkytuvę iš „Visual Studio“. Galite spustelėti šią nuorodą į „kafka-net GitHub“ saugyklą.

Čia yra pagrindinis mūsų „Kafka“ gamintojo metodas:

static void Main (string [] args)

        {

styginių naudingoji apkrova;

styginių tema;

Pranešimo pranešimas = naujas pranešimas (naudingoji apkrova);

Uri uri = naujas Uri („// localhost: 9092“);

var options = naujos KafkaOptions (uri);

var router = naujas BrokerRouter (parinktys);

var klientas = naujas gamintojas (maršrutizatorius);

client.SendMessageAsync (tema, naujas sąrašas {msg}). Palaukite ();

Pultas.ReadLine ();

        }

Čia yra mūsų „Kafka“ vartotojo kodas:

static void Main (string [] args)

        {

styginių tema;

Uri uri = naujas Uri („// localhost: 9092“);

var options = naujos KafkaOptions (uri);

var router = naujas BrokerRouter (parinktys);

var vartotojas = naujas vartotojas (naujos ConsumerOptions (tema, maršrutizatorius));

foreach (kintamas pranešimas vartotojui. Vartoti ())

            {

Console.WriteLine (Encoding.UTF8.GetString (message.Value));

            }

Pultas.ReadLine ();

        }

Atminkite, kad „Kafka“ vardų sritis turėtumėte įtraukti į gamintojo ir vartotojo programas, kaip parodyta žemiau.

naudojant „KafkaNet“;

naudojant „KafkaNet.Model“;

naudojant „KafkaNet.Protocol“;

Galiausiai tiesiog paleiskite gamintoją (pirmiausia gamintoją), o paskui - vartotoją. Štai ir viskas! Turėtumėte pamatyti pranešimą „Sveiki atvykę į Kafka!“ rodomas vartotojų konsolės lange.

Nors turime daugybę pranešimų siuntimo sistemų, kurias galima pasirinkti - „RabbitMQ“, „MSMQ“, „IBM MQ Series“ ir kt., „Kafka“ yra pirmaujanti paketas, skirtas tvarkyti didelius duomenų srautus, kurie gali kilti iš daugelio leidėjų. „Kafka“ dažnai naudojama daiktų interneto programoms ir žurnalų kaupimui bei kitiems naudojimo atvejams, kuriems reikalinga maža vėlavimo trukmė ir tvirtos pranešimų pristatymo garantijos.

Jei jūsų programai reikalingas greitas ir keičiamo dydžio pranešimų tarpininkas, „Kafka“ yra puikus pasirinkimas. Sekite naujienas apie daugiau šio tinklaraščio „Kafka“ įrašų.

$config[zx-auto] not found$config[zx-overlay] not found