Programování

Jak používat zasílání zpráv Apache Kafka v .Net

Apache Kafka je open source, distribuovaný, škálovatelný, vysoce výkonný broker zpráv pro publikování a odběr. Je skvělou volbou pro budování systémů schopných zpracovat velké objemy dat. V tomto článku se podíváme na to, jak můžeme vytvořit aplikaci výrobce a spotřebitele pro Kafku v C #.

Chcete-li začít používat Kafku, měli byste si stáhnout Kafku a ZooKeeper a nainstalovat je do svého systému. Tento článek o DZone obsahuje podrobné pokyny pro nastavení Kafky a ZooKeeper ve Windows. Po dokončení instalace spusťte ZooKeeper a Kafku a setkejte se se mnou tady.

Architektura Apache Kafka

V této části budeme zkoumat architektonické komponenty a související terminologii v Kafce. V zásadě se Kafka skládá z následujících komponent:

  • Kafka Cluster - kolekce jednoho nebo více serverů známých jako makléři
  • Producent - komponenta, která se používá k publikování zpráv
  • Spotřebitel - součást, která se používá k načtení nebo spotřebování zpráv
  • ZooKeeper - centralizovaná koordinační služba používaná k udržování informací o konfiguraci napříč uzly clusteru v distribuovaném prostředí

Základní jednotkou dat v Kafce je zpráva. Zpráva v Kafce je reprezentována jako pár klíč – hodnota. Kafka převádí všechny zprávy na bajtová pole. Je třeba poznamenat, že komunikace mezi producenty, spotřebiteli a klastry v Kafce používá protokol TCP. Každý server v clusteru Kafka je známý jako broker. Kafku můžete škálovat vodorovně jednoduše přidáním dalších makléřů do klastru.

Následující diagram ilustruje architektonické komponenty v Kafce - pohled na vysoké úrovni.

NADACE Apache

Téma v Kafce představuje logickou sbírku zpráv. Můžete si to představit jako zdroj nebo kategorii, do které může producent publikovat zprávy. Mimochodem, broker Kafka obsahuje jedno nebo více témat, která jsou zase rozdělena do jednoho nebo více oddílů. Oddíl je definován jako seřazená posloupnost zpráv. Oddíly jsou klíčem ke schopnosti Kafky dynamicky škálovat, protože jsou rozděleny mezi více makléřů.

Můžete mít jednoho nebo více producentů, kteří posílají zprávy do klastru v daném okamžiku. Producent v Kafce publikuje zprávy do konkrétního tématu a spotřebitel se přihlásí k odběru tématu k přijímání zpráv.

Volba mezi Kafkou a RabbitMQ

Kafka i RabbitMQ jsou populární zprostředkovatelé zpráv s otevřeným zdrojovým kódem, kteří se už nějakou dobu široce používají. Kdy byste měli zvolit Kafku před RabbitMQ? Volba závisí na několika faktorech.

RabbitMQ je rychlý zprostředkovatel zpráv napsaný v Erlangu. Jeho bohaté možnosti směrování a schopnost nabídnout potvrzení za zprávu jsou silnými důvody pro jeho použití. RabbitMQ také poskytuje uživatelsky přívětivé webové rozhraní, které můžete použít ke sledování svého serveru RabbitMQ. Podívejte se na můj článek a naučte se, jak pracovat s RabbitMQ v .Net.

Pokud však jde o podporu velkých nasazení, Kafka se škáluje mnohem lépe než RabbitMQ - vše, co musíte udělat, je přidat další oddíly. Je třeba také poznamenat, že klastry RabbitMQ netolerují síťové oddíly. Pokud plánujete klastrování serverů RabbitMQ, měli byste místo toho použít federace. Více o klastrech a síťových oddílech RabbitMQ si můžete přečíst zde.

Kafka také jasně zastínil RabbitMQ ve výkonu. Jedna instance Kafka dokáže zpracovat 100 tis. Zpráv za sekundu, oproti RabbitMQ blíže 20 tis. Zpráv za sekundu. Kafka je také dobrá volba, pokud chcete přenášet zprávy s nízkou latencí, abyste podpořili dávkové spotřebitele, za předpokladu, že spotřebitelé mohou být online nebo offline.

Budování výrobce Kafka a spotřebitele Kafka

V této části prozkoumáme, jak můžeme vytvořit výrobce a spotřebitele pro použití s ​​Kafkou. K tomu vytvoříme ve Visual Studiu dvě konzolové aplikace - jedna z nich bude zastupovat producenta a druhá spotřebitele. A budeme muset nainstalovat poskytovatele Kafka pro .Net v produkční i spotřebitelské aplikaci.

Mimochodem, je k dispozici mnoho poskytovatelů, ale v tomto příspěvku budeme používat kafka-net, nativního klienta C # pro Apache Kafka. Kafka-net můžete nainstalovat pomocí správce balíčků NuGet z aplikace Visual Studio. Tento odkaz můžete sledovat do úložiště GitHub kafka-net.

Zde je hlavní metoda pro našeho výrobce Kafka:

static void Main (řetězec [] args)

        {

užitečné zatížení řetězce;

téma řetězce;

Zpráva msg = nová zpráva (užitečné zatížení);

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

var options = nové KafkaOptions (uri);

var router = nový BrokerRouter (možnosti);

var klient = nový producent (router);

client.SendMessageAsync (téma, nový seznam {msg}). Wait ();

Console.ReadLine ();

        }

A tady je kód pro našeho spotřebitele Kafka:

static void Main (řetězec [] args)

        {

téma řetězce;

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

var options = nové KafkaOptions (uri);

var router = nový BrokerRouter (možnosti);

var consumer = new Consumer (new ConsumerOptions (topic, router));

foreach (var zpráva v consumer.Consume ())

            {

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

            }

Console.ReadLine ();

        }

Všimněte si, že byste měli zahrnout obory jmen Kafka v produkčních i spotřebitelských aplikacích, jak je uvedeno níže.

pomocí KafkaNet;

pomocí KafkaNet.Model;

pomocí KafkaNet.Protocol;

Nakonec stačí spustit výrobce (nejprve výrobce) a poté spotřebitele. A to je vše! Měla by se zobrazit zpráva „Vítejte v Kafce!“ zobrazené v okně konzoly pro spotřebitele.

I když máme na výběr z mnoha systémů pro zasílání zpráv - RabbitMQ, MSMQ, IBM MQ Series atd. - Kafka je před balíčkem řešení velkých toků dat, které mohou pocházet od mnoha vydavatelů. Kafka se často používá pro aplikace IoT a agregaci protokolů a další případy použití, které vyžadují nízkou latenci a silné záruky doručování zpráv.

Pokud vaše aplikace potřebuje rychlého a škálovatelného zprostředkovatele zpráv, je Kafka skvělou volbou. Sledujte další příspěvky na Kafce v tomto blogu.

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