Sprievodca po Hazelcast s Java

1. Prehľad

Toto je úvodný článok o službe Hazelcast, kde sa dozvieme, ako vytvoriť distribuovaného člena klastra Mapa zdieľať údaje medzi uzlami klastra a vytvoriť klienta Java na pripojenie a dopytovanie údajov v klastri.

2. Čo je Hazelcast?

Hazelcast je distribuovaná platforma In-Memory Data Grid pre Java. Architektúra podporuje vysokú škálovateľnosť a distribúciu dát v klastrovanom prostredí. Podporuje automatické objavovanie uzlov a inteligentnú synchronizáciu.

Hazelcast je k dispozícii v rôznych vydaniach. Ak si chcete pozrieť funkcie všetkých vydaní Hazelcast, môžete si prečítať nasledujúci odkaz. V tejto príručke použijeme vydanie s otvoreným zdrojovým kódom.

Rovnako Hazelcast ponúka rôzne funkcie, ako je distribuovaná dátová štruktúra, distribuovaný výpočet, distribuovaný dopyt atď. Na účely tohto článku sa zameriame na distribuovaný Mapa.

3. Maven závislosť

Hazelcast ponúka mnoho rôznych knižníc na riešenie rôznych požiadaviek. Nájdeme ich pod com.hazelcast skupinou v Maven Central.

V tomto článku však použijeme iba základnú závislosť potrebnú na vytvorenie samostatného člena klastra Hazelcast a klienta Java Hazelcast:

 com.hazelcast hazelcast 4.0.2 

Aktuálna verzia je k dispozícii v centrálnom úložisku maven.

4. Prvá aplikácia Hazelcast

4.1. Vytvorte člena Hazelcast

Členovia (nazývaní tiež uzly) sa automaticky spájajú a vytvárajú klaster. Toto automatické spájanie prebieha pomocou rôznych mechanizmov objavovania, ktoré členovia používajú na vzájomné vyhľadanie.

Vytvorme člena, ktorý ukladá údaje na distribuovanej mape Hazelcast:

verejná trieda ServerNode {HazelcastInstance hzInstance = Hazelcast.newHazelcastInstance (); ...}

Keď začneme ServerNode aplikácie, môžeme vidieť plynulý text v konzole, čo znamená, že v našom JVM vytvoríme nový uzol Hazelcast, ktorý sa bude musieť pripojiť ku klastru.

Členovia [1] {Člen [192.168.1.105]: 5701 - 899898be-b8aa-49aa-8d28-40917ccba56c this} 

Ak chcete vytvoriť viac uzlov, môžeme spustiť viacero inštancií ServerNode žiadosť. Vďaka tomu Hazelcast automaticky vytvorí a pridá nového člena do klastra.

Napríklad, ak spustíme ServerNode znova uvidíme v konzole nasledujúci protokol, ktorý hovorí, že v klastri sú dvaja členovia.

Členovia [2] {Člen [192.168.1.105]: 5701 - 899898be-b8aa-49aa-8d28-40917ccba56c Člen [192.168.1.105]: 5702 - d6b81800-2c78-4055-8a5f-7f5b65d49f30 this}

4.2. Vytvorte distribuovaný Mapa

Ďalej vytvoríme distribuovaný Mapa. Potrebujeme inštanciu HazelcastInstance vytvorené skôr na zostavenie distribuovaného Mapa ktorý sa rozširuje java.util.concurrent.ConcurrentMap rozhranie.

Mapa mapa = hazelcastInstance.getMap ("údaje"); ...

Na záver pridáme niekoľko položiek do súboru mapa:

FlakeIdGenerator idGenerator = hazelcastInstance.getFlakeIdGenerator ("newid"); pre (int i = 0; i <10; i ++) {map.put (idGenerator.newId (), "správa" + i); }

Ako vidíme vyššie, do súboru sme pridali 10 záznamov mapa. Použili sme FlakeIdGenerator aby sme zaistili, že dostaneme jedinečný kľúč pre mapu. Pre viac informácií o FlakeIdGenerator, môžeme si pozrieť nasledujúci odkaz.

Aj keď to nemusí byť príklad z reálneho sveta, použili sme ho iba na demonštráciu jednej z mnohých operácií, ktoré môžeme použiť na distribuovanú mapu. Neskôr uvidíme, ako načítať položky pridané členom klastra z klienta Java Hazelcast.

Hazelcast je vnútorne rozdelený na mapa položky a distribuuje a replikuje položky medzi členmi klastra. Pre viac informácií o Hazelcast Mapa, môžeme si pozrieť nasledujúci odkaz.

4.3. Vytvorte klienta Hazelcast Java

Klient Hazelcast nám umožňuje vykonávať všetky operácie Hazelcast bez toho, aby sme boli členom klastra. Pripojí sa k jednému z členov klastra a deleguje na neho všetky operácie v rámci klastra.

Vytvorme natívneho klienta:

Konfigurácia ClientConfig = nový ClientConfig (); config.setClusterName ("dev"); HazelcastInstance hazelcastInstanceClient = HazelcastClient.newHazelcastClient (konfigurácia); 

Je to jednoduché.

4.4. Distribuovaný prístup Mapa Z klienta Java

Ďalej použijeme inštanciu HazelcastInstance vytvorené skôr pre prístup k distribuovaným Mapa:

Mapa mapa = hazelcastInstanceClient.getMap ("údaje"); ...

Teraz môžeme robiť operácie na a mapa bez toho, aby ste boli členom klastra. Skúsme napríklad iterovať nad položkami:

pre (Entry entry: map.entrySet ()) {...}

5. Konfigurácia Hazelcastu

V tejto časti sa zameriame na to, ako konfigurovať sieť Hazelcast pomocou deklaratívne (XML) a programovo (API) a ako používať centrum správy Hazelcast na monitorovanie a správu bežiacich uzlov.

Zatiaľ čo sa Hazelcast rozbieha, hľadá a hazelcast.config systémový majetok. Ak je nastavený, jeho hodnota sa použije ako cesta. V opačnom prípade Hazelcast vyhľadá a hazelcast.xml súbor v pracovnom adresári alebo na triednej ceste.

Ak nič z vyššie uvedeného nefunguje, Hazelcast načíta predvolenú konfiguráciu, t.j. hazelcast-default.xml to prichádza s hazelcast.jar.

5.1. Konfigurácia siete

Hazelcast predvolene používa na vyhľadanie ďalších členov, ktorí môžu vytvárať klaster, viacsmerové vysielanie. Ak multicast nie je pre naše prostredie preferovaným spôsobom zisťovania, potom môžeme nakonfigurovať Hazelcast pre úplný klaster TCP / IP.

Nakonfigurujme klaster TCP / IP pomocou deklaratívnej konfigurácie:

Prípadne môžeme použiť prístup Java config:

Config config = nový Config (); NetworkConfig network = config.getNetworkConfig (); network.setPort (5701) .setPortCount (20); network.setPortAutoIncrement (true); JoinConfig join = network.getJoin (); join.getMulticastConfig (). setEnabled (false); join.getTcpIpConfig () .addMember ("stroj1") .addMember ("localhost"). setEnabled (true);

Hazelcast sa predvolene pokúsi spojiť 100 portov. Ak v príklade vyššie nastavíme hodnotu portu na 5701 a obmedzíme počet portov na 20, pretože členovia sa pripájajú ku klastru, Hazelcast sa pokúsi nájsť porty medzi 5701 a 5721.

Ak sa chceme rozhodnúť používať iba jeden port, môžeme deaktivovať funkciu automatického prírastku nastavením Automatický prírastok do nepravdivé.

5.2. Konfigurácia Centra správy

Centrum riadenia nám umožňuje sledovať celkový stav klastrov, môžeme tiež podrobne analyzovať a prehľadávať dátové štruktúry, aktualizovať konfigurácie máp a vyberať výpis vlákien z uzlov.

Ak chcete používať stredisko pre správu Hazelcast, môžeme nasadiť buď verzia mancentra.vojna do nášho aplikačného servera / kontajnera Java alebo môžeme spustiť Hazelcast Management Center z príkazového riadku. Najnovší Hazelcast ZIP si môžeme stiahnuť z hazelcast.org. PSČ obsahuje verzia mancentra.vojna spis.

Naše uzly Hazelcast môžeme nakonfigurovať pridaním adresy URL webovej aplikácie do hazelcast.xml a potom nechajte členov Hazelcastu komunikovať s riadiacim centrom.

Konfigurujme teraz teda centrum správy pomocou deklaratívnej konfigurácie:

 // localhost: 8080 / mancenter 

Rovnako je tu aj programová konfigurácia:

ManagementCenterConfig manCenterCfg = nový ManagementCenterConfig (); manCenterCfg.setEnabled (true) .setUrl ("// localhost: 8080 / mancenter");

6. Záver

V tomto článku sme sa venovali úvodným koncepciám Hazelcastu. Viac podrobností nájdete v referenčnej príručke.

Ako obvykle je všetok kód tohto článku k dispozícii na GitHub.


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