Úvod do Apache Pulsar

1. Úvod

Apache Pulsar je distribuovaný otvorený systém zasielania správ založený na publikácii / predplatnom, ktorý bol vyvinutý v spoločnosti Yahoo.

Bol vytvorený na napájanie kritických aplikácií spoločnosti Yahoo, ako sú Yahoo Mail, Yahoo Finance, Yahoo Sports atď. Potom, v roku 2016, bol otvorený ako zdroj pod Apache Software Foundation.

2. Architektúra

Pulsar je vysokovýkonné riešenie pre zasielanie správ medzi servermi pre viacerých nájomcov. Skladá sa zo sady maklérov a bookmakerov a je vstavaný Apache ZooKeeper pre konfiguráciu a správu. Bookmakeri sú z Apache BookKeeper ktoré poskytujú úložisko správ až do ich vyčerpania.

V klastri budeme mať:

  • Viacero sprostredkovateľov klastrov na spracovanie prichádzajúcej správy od producentov a odoslanie správy spotrebiteľom
  • Apache BookKeeper na podporu vytrvalosti správ
  • Apache ZooKeeper na uloženie konfigurácie klastra

Aby sme tomu lepšie porozumeli, pozrime sa na diagram architektúry z dokumentácie:

3. Kľúčové vlastnosti

Začnime krátkym pohľadom na niektoré z kľúčových funkcií:

  • Zabudovaná podpora pre viac klastrov
  • Podpora geografickej replikácie správ vo viacerých klastroch
  • Viaceré režimy predplatného
  • Škálovateľné na milióny tém
  • Na zaručenie doručenia správy používa Apache BookKeeper.
  • Nízka latencia

Poďme si teraz podrobne predstaviť niektoré kľúčové funkcie.

3.1. Model správ

Rámec poskytuje flexibilný model zasielania správ. Všeobecne architektúry správ majú dva modely správ, tj. Fronty a vydavateľ / predplatiteľ. Vydavateľ / predplatiteľ je systém prenosu správ, v ktorom sa správa posiela všetkým zákazníkom. Na druhej strane, čakanie v rade je komunikácia medzi bodmi.

Pulsar kombinuje oba koncepty v jednom zovšeobecnenom API. Vydavateľ zverejňuje správy na rôzne témy. Potom sa tieto správy vysielajú do všetkých predplatných.

Spotrebitelia sa prihlasujú na odber správ. Knižnica umožňuje spotrebiteľom zvoliť si rôzne spôsoby konzumácie správ v rámci rovnakého predplatného, ​​ktoré zahŕňa exkluzívne, zdieľané a prepnutie pri zlyhaní. O týchto typoch predplatného sa podrobne zmienime v ďalších častiach.

3.2. Režimy nasadenia

Pulsar má zabudovanú podporu pre nasadenie v rôznych prostrediach. To znamená, že ho môžeme použiť na štandardných lokálnych strojoch alebo ho nasadiť do klastra Kubernetes, Google alebo AWS Cloud.

Môže sa vykonávať ako jeden uzol na účely vývoja a testovania. V takom prípade všetky komponenty (broker, BookKeeper a ZooKeeper) fungujú v jednom procese.

3.3. Georeplikácia

Knižnica poskytuje po vybalení podporu pre georeplikáciu údajov. Môžeme povoliť replikáciu správ medzi viacerými klastrami konfiguráciou rôznych geografických oblastí.

Údaje správy sa replikujú takmer v reálnom čase. V prípade výpadku siete naprieč klastrami sú dáta vždy bezpečné a uložené v BookKeeper. Replikačný systém pokračuje v pokuse, kým nie je replikácia úspešná.

Funkcia georeplikácie tiež umožňuje organizácii nasadiť Pulsar u rôznych poskytovateľov cloudu a replikovať dáta. To im pomáha vyhnúť sa používaniu proprietárnych rozhraní API poskytovateľa cloudu.

3.4. Trvalosť

Keď Pulsar načíta a potvrdí údaje, nezaručuje ich stratu. Trvanlivosť údajov súvisí s počtom diskov nakonfigurovaných na ukladanie údajov.

Pulsar zaisťuje trvanlivosť pomocou bookmakerov (inštancia Apache BookKeeper) spustených v úložných uzloch. Kedykoľvek bookmaker prijme správu, uloží si kópiu do pamäte a tiež zapíše údaje do WAL (Write Ahead Log). Tento protokol funguje rovnakým spôsobom ako databáza WAL. Bookmania fungujú na princípe databázových transakcií a zabezpečujú, aby sa údaje nestratili ani v prípade zlyhania stroja.

Okrem vyššie uvedeného môže Pulsar vydržať aj viacnásobné zlyhania uzlov. Knižnica replikuje údaje do viacerých bookmakrov a potom pošle správu s potvrdením výrobcovi. Tento mechanizmus zaručuje nulovú stratu údajov aj v prípade viacerých porúch hardvéru.

4. Nastavenie jedného uzla

Teraz sa pozrime, ako nastaviť jeden uzol klastra Apache Pulsar.

Apache tiež poskytuje jednoduché klientske API s väzbami pre Java, Python a C ++. Neskôr si vytvoríme jednoduchý producent jazyka Java a príklad predplatného.

4.1. Inštalácia

Apache Pulsar je k dispozícii ako binárna distribúcia. Začnime jeho stiahnutím:

wget //archive.apache.org/dist/incubator/pulsar/pulsar-2.1.1-incubating/apache-pulsar-2.1.1-incubating-bin.tar.gz

Po dokončení sťahovania môžeme archív ZIP zrušiť z archívu. Nearchivovaná distribúcia bude obsahovať bin, conf, napríklad licencie a lib priečinok.

Potom si musíme stiahnuť vstavané konektory. Tieto sa teraz dodávajú ako samostatný balík:

wget //archive.apache.org/dist/incubator/pulsar/pulsar-2.1.1-incubating/apache-pulsar-io-connectors-2.1.1-incubating-bin.tar.gz

Odstráňte z archívu konektory a skopírujte súbory Konektory priečinok v priečinku Pulsar.

4.2. Spustenie inštancie

Na spustenie samostatnej inštancie môžeme vykonať:

samostatný kôš / pulzar

5. Klient Java

Teraz vytvoríme projekt Java na výrobu a konzumáciu správ. Vytvoríme tiež príklady rôznych typov predplatného.

5.1. Príprava projektu

Začneme pridaním závislosti pulsar-klient do nášho projektu:

 org.apache.pulsar pulsar-client 2.1.1-inkubácia 

5.2. Výrobca

Pokračujme vytvorením a Výrobca príklad. Tu vytvoríme tému a producenta.

Najprv musíme vytvoriť a PulsarClient ktorý sa pripojí k službe Pulsar na konkrétnom hostiteľovi a prístave, pomocou vlastného protokolu. Mnoho výrobcov a spotrebiteľov môže zdieľať jeden objekt klienta.

Teraz vytvoríme Výrobca s konkrétnym názvom témy:

private static final String SERVICE_URL = "pulsar: // localhost: 6650"; private static final String TOPIC_NAME = "test-topic"; 
PulsarClient client = PulsarClient.builder () .serviceUrl (SERVICE_URL) .build (); Producent producent = client.newProducer () .topic (TOPIC_NAME) .compressionType (CompressionType.LZ4) .create ();

Producent pošle 5 správ:

IntStream.range (1, 5) .forEach (i -> {String content = String.format ("hi-pulsar-% d", i); Správa msg = MessageBuilder.create () .setContent (content.getBytes () ) .build (); MessageId msgId = producer.send (msg);});

5.3. Spotrebiteľ

Ďalej vytvoríme spotrebiteľa, aby sme dostali správy vytvorené výrobcom. To isté vyžaduje aj spotrebiteľ PulsarClient na pripojenie k nášmu serveru:

Spotrebiteľ spotrebiteľ = client.newConsumer () .topic (TOPIC_NAME) .subscriptionType (SubscriptionType.Shared) .subscriptionName (SUBSCRIPTION_NAME) .subscribe (); 

Tu sme vytvorili klienta s Zdieľané typ predplatného. To umožňuje viacerým zákazníkom pripojiť sa k rovnakému predplatnému a dostávať správy.

5.4. Typy predplatného pre spotrebiteľa

Vo vyššie uvedenom príklade spotrebiteľa vytvorili sme predplatné s zdieľané typu. Môžeme aj tvoriť exkluzívny a failover predplatné.

The exkluzívny predplatné umožňuje predplatné iba jednému spotrebiteľovi.

Na druhej strane, failover predplatné umožňuje používateľovi definovať záložného zákazníka v prípade, že jeden spotrebiteľ zlyhá, ako je to znázornené v tomto diagrame Apache:

6. Záver

V tomto článku sme zdôraznili vlastnosti systému zasielania správ Pulsar, ako napríklad model zasielania správ, georeplikácia a silné záruky trvanlivosti.

Dozvedeli sme sa tiež, ako nastaviť jeden uzol a ako používať klienta Java.

Úplnú implementáciu tohto tutoriálu nájdete ako vždy na serveri Github.


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