Vodič za Hazelcast s Javom

1. Pregled

Ovo je uvodni članak o Hazelcast-u, gdje ćemo vidjeti kako stvoriti člana klastera, distribuiranog Karta za dijeljenje podataka između čvorova klastera i stvaranje Java klijenta za povezivanje i traženje podataka u klasteru.

2. Što je lješnjak?

Hazelcast je distribuirana In-Memory Data Grid platforma za Javu. Arhitektura podržava visoku skalabilnost i distribuciju podataka u klaster okruženju. Podržava automatsko otkrivanje čvorova i inteligentnu sinkronizaciju.

Hazelcast dostupan je u različitim izdanjima. Da biste vidjeli značajke svih izdanja Hazelcast, možemo se pozvati na sljedeću poveznicu. U ovom uputstvu koristit ćemo izdanje otvorenog koda.

Isto tako, Hazelcast nudi razne značajke poput Distribuirane strukture podataka, Distribuiranog izračuna, Distribuiranog upita itd. U svrhu ovog članka usredotočit ćemo se na distribuiranu Karta.

3. Ovisnost Mavena

Hazelcast nudi mnogo različitih knjižnica za rješavanje različitih zahtjeva. Možemo ih pronaći u grupi com.hazelcast u Maven Central.

Međutim, u ovom ćemo članku koristiti samo ovisnost jezgre koja je potrebna za stvaranje samostalnog člana klastera Hazelcast i Java klijenta Hazelcast:

 com.hazelcast lješnjak 4.0.2 

Trenutna verzija dostupna je u središnjem spremištu maven.

4. Prva aplikacija za lješnjak

4.1. Stvorite člana Hazelcast-a

Članovi (koji se nazivaju i čvorovi) automatski se udružuju kako bi stvorili klaster. Ovo automatsko spajanje odvija se s raznim mehanizmima otkrivanja pomoću kojih se članovi međusobno pronalaze.

Stvorimo člana koji pohranjuje podatke na distribuiranoj mapi Hazelcast:

javna klasa ServerNode {HazelcastInstance hzInstance = Hazelcast.newHazelcastInstance (); ...}

Kad započnemo ServerNode u aplikaciji možemo vidjeti tekući tekst u konzoli, što znači da u našem JVM stvaramo novi čvor Hazelcast koji će se morati pridružiti klasteru.

Članovi [1] {Član [192.168.1.105]: 5701 - 899898be-b8aa-49aa-8d28-40917ccba56c ovo} 

Da bismo stvorili više čvorova možemo pokrenuti više instanci ServerNode primjena. Kao rezultat toga, Hazelcast će automatski stvoriti i dodati novog člana u klaster.

Na primjer, ako pokrenemo ServerNode ponovo ćemo vidjeti sljedeći zapisnik u konzoli koji kaže da u klasteru postoje dva člana.

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

4.2. Stvorite distribuirani Karta

Dalje, izradimo distribuirani Karta. Trebamo primjerak HazelcastInstance stvoren ranije za konstrukciju distribuiranog Karta koja se proteže java.util.concurrent.ConcurrentMap sučelje.

Map map = hazelcastInstance.getMap ("podaci"); ...

Na kraju, dodajmo neke unose u karta:

FlakeIdGenerator idGenerator = hazelcastInstance.getFlakeIdGenerator ("newid"); for (int i = 0; i <10; i ++) {map.put (idGenerator.newId (), "message" + i); }

Kao što vidimo gore, dodali smo 10 unosa u karta. Koristili smo FlakeIdGenerator kako bismo osigurali da dobijemo jedinstveni ključ za kartu. Za više detalja o FlakeIdGenerator, možemo provjeriti sljedeću poveznicu.

Iako ovo možda nije stvarni primjer, koristili smo ga samo za demonstraciju jedne od mnogih operacija koje možemo primijeniti na distribuiranu kartu. Kasnije ćemo vidjeti kako dohvatiti unose koje je član klastera dodao iz Hazelcast Java klijenta.

Interno, Hazelcast dijeli karta unosi i distribuira i replicira unose među članovima klastera. Za više detalja o Hazelcast-u Karta, možemo provjeriti sljedeću poveznicu.

4.3. Stvorite Hazelcast Java klijent

Klijent Hazelcast omogućuje nam obavljanje svih operacija Hazelcast bez da smo član klastera. Povezuje se s jednim od članova klastera i na njega delegira sve operacije širom klastera.

Stvorimo izvorni klijent:

ClientConfig config = novi ClientConfig (); config.setClusterName ("dev"); HazelcastInstance hazelcastInstanceClient = HazelcastClient.newHazelcastClient (config); 

Jednostavno je tako.

4.4. Pristup distribuiran Karta Iz Java klijenta

Dalje ćemo upotrijebiti primjerak HazelcastInstance stvoren ranije za pristup distribuiranom Karta:

Karta karte = hazelcastInstanceClient.getMap ("podaci"); ...

Sada možemo raditi operacije na a karta a da nije član klastera. Na primjer, pokušajmo prelistati unose:

za (Unos unosa: map.entrySet ()) {...}

5. Konfiguriranje Hazelcast-a

U ovom ćemo se dijelu usredotočiti na to kako konfigurirati mrežu Hazelcast pomoću deklarativnog (XML) i programski (API), a pomoću centra za upravljanje Hazelcast nadzirati i upravljati čvorovima koji se izvode.

Dok se Hazelcast pokreće, traži se lješnjak.konfig svojstvo sustava. Ako je postavljeno, njegova vrijednost koristi se kao put. Inače, Hazelcast traži a lješnjak.xml datoteku u radnom direktoriju ili na putu predavanja.

Ako ništa od navedenog ne uspije, Hazelcast učitava zadanu konfiguraciju, tj. hazelcast-default.xml koji dolazi s lješnjak.jar.

5.1. Konfiguracija mreže

Prema zadanim postavkama, Hazelcast koristi multicast za otkrivanje drugih članova koji mogu tvoriti klaster. Ako multicast nije preferirani način otkrivanja za naše okruženje, tada možemo konfigurirati Hazelcast za puni TCP / IP klaster.

Konfigurirajmo TCP / IP klaster pomoću deklarativne konfiguracije:

Alternativno, možemo koristiti pristup Java config:

Config config = novi Config (); NetworkConfig network = config.getNetworkConfig (); network.setPort (5701) .setPortCount (20); network.setPortAutoIncrement (true); JoinConfig join = network.getJoin (); join.getMulticastConfig (). setEnabled (lažno); join.getTcpIpConfig () .addMember ("machine1") .addMember ("localhost"). setEnabled (true);

Prema zadanim postavkama, Hazelcast će pokušati povezati 100 priključaka. U gornjem primjeru, ako vrijednost porta postavimo na 5701 i ograničimo broj porta na 20, dok se članovi pridružuju klasteru, Hazelcast pokušava pronaći luke između 5701 i 5721.

Ako želimo odabrati samo jedan priključak, postavkom možemo onemogućiti značajku automatskog povećanja automatsko povećanje do lažno.

5.2. Konfiguracija centra za upravljanje

Centar za upravljanje omogućuje nam praćenje cjelokupnog stanja klastera, a također možemo detaljno analizirati i pregledavati podatkovne strukture, ažurirati konfiguracije mape i preuzeti dump niti s čvorova.

Da bismo koristili centar za upravljanje Hazelcastom, možemo ili instalirati mancenter-verzija.rat aplikaciju u naš Java poslužitelj aplikacija / spremnik ili možemo pokrenuti Hazelcast Management Center iz naredbenog retka. Najnoviji Hazelcast ZIP možemo preuzeti s hazelcast.org. ZIP sadrži mancenter-verzija.rat datoteka.

Naše čvorove Hazelcast možemo konfigurirati dodavanjem URL-a web aplikacije lješnjak.xml a zatim neka članovi Hazelcast-a komuniciraju s centrom za upravljanje.

Dakle, konfigurirajmo sada centar za upravljanje pomoću deklarativne konfiguracije:

 // localhost: 8080 / mancenter 

Isto tako, evo programske konfiguracije:

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

6. Zaključak

U ovom smo članku pokrili uvodne koncepte o Hazelcast-u. Za više pojedinosti možemo pogledati Referentni priručnik.

Kao i obično, sav kôd za ovaj članak dostupan je na GitHubu.