Ohjelmointi

Kuinka käyttää Apache Kafka -viestintää .Netissä

Apache Kafka on avoimen lähdekoodin, hajautettu, skaalautuva, korkean suorituskyvyn julkaisu-tilaa -viestivälittäjä. Se on loistava valinta järjestelmien rakentamiseen, jotka pystyvät käsittelemään suuria tietomääriä. Tässä artikkelissa tarkastellaan, miten voimme luoda tuottaja- ja kuluttajasovelluksen Kafkalle C #: ssä.

Aloita Kafkan käyttö lataamalla Kafka ja ZooKeeper ja asentamalla ne järjestelmääsi. Tämä DZone-artikkeli sisältää vaiheittaiset ohjeet Kafkan ja ZooKeeperin asentamiseen Windowsissa. Kun olet suorittanut asennuksen, käynnistä ZooKeeper ja Kafka ja tapaa minut täällä.

Apache Kafka -arkkitehtuuri

Tässä osassa tarkastellaan Kafkan arkkitehtonisia komponentteja ja niihin liittyvää terminologiaa. Pohjimmiltaan Kafka koostuu seuraavista komponenteista:

  • Kafka Cluster - kokoelma yhdestä tai useammasta palvelimesta, jotka tunnetaan välittäjinä
  • Tuottaja - komponentti, jota käytetään viestien julkaisemiseen
  • Kuluttaja - komponentti, jota käytetään viestien noutamiseen tai kuluttamiseen
  • ZooKeeper - keskitetty koordinointipalvelu, jota käytetään kokoonpanotietojen ylläpitoon klusterisolmuissa hajautetussa ympäristössä

Kafkan perusyksikkö on viesti. Kafkan sanoma on esitetty avainarvoparina. Kafka muuntaa kaikki viestit tavuiksi. On huomattava, että Kafkan tuottajien, kuluttajien ja klustereiden välisessä viestinnässä käytetään TCP-protokollaa. Jokainen Kafka-klusterin palvelin tunnetaan välittäjänä. Voit skaalata Kafkaa vaakasuoraan lisäämällä klusteriin lisää välittäjiä.

Seuraava kaavio kuvaa Kafkan arkkitehtonisia osia - korkean tason näkymä.

Apache-SÄÄTIÖ

Kafkan aihe edustaa loogista kokoelmaa viestejä. Voit ajatella sitä syötteeksi tai luokaksi, johon tuottaja voi julkaista viestejä. Muuten, Kafka-välittäjä sisältää yhden tai useampia aiheita, jotka puolestaan ​​on jaettu yhteen tai useampaan osioon. Osio määritellään järjestetyksi viestijärjestykseksi. Osiot ovat avain Kafkan kykyyn skaalata dynaamisesti, koska osiot jaetaan useille välittäjille.

Sinulla voi olla yksi tai useampi tuottaja, joka työntää viestejä klusteriin milloin tahansa. Kafkan tuottaja julkaisee viestit tiettyyn aiheeseen, ja kuluttaja tilaa aiheen vastaanottaakseen viestit.

Valinta Kafkan ja RabbitMQ: n välillä

Sekä Kafka että RabbitMQ ovat suosittuja avoimen lähdekoodin viestien välittäjiä, jotka ovat olleet laajalti käytössä jo jonkin aikaa. Milloin sinun pitäisi valita Kafka RabbitMQ: n sijaan? Valinta riippuu muutamasta tekijästä.

RabbitMQ on nopea viestivälittäjä, joka on kirjoitettu Erlangilla. Sen monipuoliset reititysominaisuudet ja kyky tarjota kuittauksia kohti ovat vahvat syyt sen käyttöön. RabbitMQ tarjoaa myös käyttäjäystävällisen web-käyttöliittymän, jonka avulla voit seurata RabbitMQ-palvelinta. Katso artikkelini oppiaksesi työskentelemään RabbitMQ: n kanssa .Netissä.

Suurten käyttöönottojen tukemisessa Kafka asteikot ovat kuitenkin paljon parempia kuin RabbitMQ - sinun tarvitsee vain lisätä lisää osioita. On myös huomattava, että RabbitMQ-klusterit eivät siedä verkko-osioita. Jos aiot yhdistää RabbitMQ-palvelimia, sinun tulisi sen sijaan käyttää liittoja. Voit lukea lisää RabbitMQ-klustereista ja verkko-osioista täältä.

Kafka myös selvästi ylittää RabbitMQ: n suorituskyvyn. Yksi Kafka-esiintymä pystyy käsittelemään 100 000 viestiä sekunnissa, kun taas lähempänä 20 000 viestiä sekunnissa on RabbitMQ. Kafka on myös hyvä valinta, kun haluat lähettää viestejä pienellä viiveellä eräkuluttajien tukemiseksi, olettaen, että kuluttajat voivat olla joko verkossa tai offline-tilassa.

Kafkan tuottajan ja kuluttajan rakentaminen

Tässä osiossa tutkitaan, miten voimme rakentaa tuottajan ja kuluttajan käytettäväksi Kafkan kanssa. Tätä varten rakennamme kaksi konsolisovellusta Visual Studioon - yksi niistä edustaa tuottajaa ja toinen kuluttajaa. Ja meidän on asennettava Kafka-palveluntarjoaja .Netille sekä tuottaja- että kuluttajasovellukseen.

Muuten palveluntarjoajia on paljon, mutta tässä viestissä käytämme kafka-netiä, Apache Kafkan natiivia C # -asiakasohjelmaa. Voit asentaa kafka-netin Visual Studion NuGet-paketinhallinnan kautta. Voit seurata tätä linkkiä kafka-net GitHub -tietovarastoon.

Tässä on Kafka-tuottajan päämenetelmä:

staattinen void Main (merkkijono [] args)

        {

merkkijono hyötykuorma;

merkkijono aihe;

Message msg = uusi viesti (hyötykuorma);

Uri uri = uusi Uri (“// paikallinen isäntä: 9092”);

var options = uudet KafkaOptions (uri);

var reititin = uusi BrokerRouter (vaihtoehdot);

var asiakas = uusi tuottaja (reititin);

client.SendMessageAsync (aihe, uusi luettelo {msg}). Odota ();

Console.ReadLine ();

        }

Ja tässä on Kafka-kuluttajan koodi:

staattinen void Main (merkkijono [] args)

        {

merkkijono aihe;

Uri uri = uusi Uri (“// paikallinen isäntä: 9092”);

var options = uudet KafkaOptions (uri);

var reititin = uusi BrokerRouter (vaihtoehdot);

var kuluttaja = uusi kuluttaja (uudet ConsumerOptions (aihe, reititin));

foreach (var-viesti kuluttajassa.Kuluta ())

            {

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

            }

Console.ReadLine ();

        }

Huomaa, että sinun tulisi sisällyttää Kafka-nimitilat sekä tuottaja- että kuluttajasovelluksiin alla esitetyllä tavalla.

KafkaNetin avulla;

käyttämällä KafkaNet.Modeliä;

käyttämällä KafkaNet.Protocol;

Lopuksi, aja vain tuottaja (ensin tuottaja) ja sitten kuluttaja. Ja siinä se! Sinun pitäisi nähdä viesti "Tervetuloa Kafkaan!" näkyy kuluttajakonsoli-ikkunassa.

Vaikka meillä on valittavana monia viestijärjestelmiä - RabbitMQ, MSMQ, IBM MQ Series jne. -, Kafka on edelläkävijä pakettien edessä käsittelemään suuria tietovirtoja, jotka voivat olla peräisin monilta julkaisijoilta. Kafkaa käytetään usein IoT-sovelluksissa, lokien yhdistämisessä ja muissa käyttötapauksissa, jotka vaativat matalaa viivettä ja vahvoja viestien toimitustakeita.

Jos sovelluksesi tarvitsee nopean ja skaalautuvan viestinvälittäjän, Kafka on loistava valinta. Pysy kuulolla lisää blogin Kafka-viestejä.

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