Guide til Hazelcast med Java

1. Oversigt

Dette er en indledende artikel om Hazelcast, hvor vi vil se, hvordan man opretter et klyngemedlem, et distribueret Kort at dele data mellem klyngenoder og oprette en Java-klient til at oprette forbindelse til og forespørgsel om data i klyngen.

2. Hvad er Hazelcast?

Hazelcast er en distribueret In-Memory Data Grid-platform til Java. Arkitekturen understøtter høj skalerbarhed og datadistribution i et grupperet miljø. Det understøtter automatisk opdagelse af noder og intelligent synkronisering.

Hazelcast fås i forskellige udgaver. For at se funktionerne til alle Hazelcast-udgaver kan vi henvise til følgende link. I denne vejledning bruger vi open source-udgaven.

På samme måde tilbyder Hazelcast forskellige funktioner såsom Distribueret datastruktur, Distribueret beregning, Distribueret forespørgsel osv. Med henblik på denne artikel fokuserer vi på en distribueret Kort.

3. Maven-afhængighed

Hazelcast tilbyder mange forskellige biblioteker til at håndtere forskellige krav. Vi kan finde dem under com.hazelcast-gruppen i Maven Central.

I denne artikel bruger vi dog kun den nødvendige kerneafhængighed til at oprette et enkeltstående medlem af Hazelcast-klyngen og Hazelcast Java-klienten:

 com.hazelcast hazelcast 4.0.2 

Den aktuelle version er tilgængelig i maven central repository.

4. En første Hazelcast-applikation

4.1. Opret et Hazelcast-medlem

Medlemmer (også kaldet noder) går automatisk sammen for at danne en klynge. Denne automatiske sammenføjning finder sted med forskellige opdagelsesmekanismer, som medlemmerne bruger til at finde hinanden.

Lad os oprette et medlem, der gemmer data på et Hazelcast-distribueret kort:

offentlig klasse ServerNode {HazelcastInstance hzInstance = Hazelcast.newHazelcastInstance (); ...}

Når vi starter ServerNode applikation kan vi se den flydende tekst i konsollen, hvilket betyder, at vi opretter en ny Hazelcast-node i vores JVM, som bliver nødt til at slutte sig til klyngen.

Medlemmer [1] {Medlem [192.168.1.105]: 5701 - 899898be-b8aa-49aa-8d28-40917ccba56c dette} 

For at oprette flere noder kan vi starte flere forekomster af ServerNode Ansøgning. Som et resultat opretter og tilføjer Hazelcast automatisk et nyt medlem til klyngen.

For eksempel hvis vi kører ServerNode applikation igen, ser vi følgende log i konsollen, der siger, at der er to medlemmer i klyngen.

Medlemmer [2] {Medlem [192.168.1.105]: 5701 - 899898be-b8aa-49aa-8d28-40917ccba56c Medlem [192.168.1.105]: 5702 - d6b81800-2c78-4055-8a5f-7f5b65d49f30 dette}

4.2. Opret en distribueret Kort

Lad os derefter oprette en distribueret Kort. Vi har brug for instansen af HazelcastInstance oprettet tidligere for at konstruere en distribueret Kort som strækker sig java.util.concurrent.ConcurrentMap interface.

Kortkort = hazelcastInstance.getMap ("data"); ...

Lad os endelig tilføje nogle poster til kort:

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

Som vi kan se ovenfor, har vi tilføjet 10 poster til kort. Vi brugte FlakeIdGenerator for at sikre, at vi får den unikke nøgle til kortet. For flere detaljer om FlakeIdGenerator, kan vi tjekke følgende link.

Selvom dette muligvis ikke er et virkeligt eksempel, brugte vi det kun til at demonstrere en af ​​de mange operationer, som vi kan anvende på det distribuerede kort. Senere vil vi se, hvordan man henter de poster, der er tilføjet af klyngemedlemmet fra Hazelcast Java-klienten.

Internt Hazelcast partitionerer kort poster og distribuerer og replikerer poster blandt klyngemedlemmerne. For flere detaljer om Hazelcast Kort, kan vi tjekke følgende link.

4.3. Opret en Hazelcast Java-klient

Hazelcast-klienten giver os mulighed for at udføre alle Hazelcast-operationer uden at være medlem af klyngen. Det opretter forbindelse til et af klyngemedlemmerne og delegerer alle klyngedækkende operationer til det.

Lad os oprette en indfødt klient:

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

Det er simpelt som det.

4.4. Adgang distribueret Kort Fra Java Client

Dernæst bruger vi forekomsten af HazelcastInstance oprettet tidligere for at få adgang til den distribuerede Kort:

Kortkort = hazelcastInstanceClient.getMap ("data"); ...

Nu kan vi udføre operationer på en kort uden at være medlem af klyngen. Lad os for eksempel prøve at gentage posterne:

for (Indtastningspost: map.entrySet ()) {...}

5. Konfiguration af Hazelcast

I dette afsnit vil vi fokusere på, hvordan du konfigurerer Hazelcast-netværket ved hjælp af erklærende (XML) og programmatisk (API) og bruger Hazelcast-styringscentret til at overvåge og administrere noder, der kører.

Mens Hazelcast starter, ser det ud til en hazelcast.config systemegenskab. Hvis den er indstillet, bruges dens værdi som stien. Ellers søger Hazelcast efter en hazelcast.xml fil i arbejdskataloget eller på klassestien.

Hvis intet af ovenstående fungerer, indlæser Hazelcast standardkonfigurationen, dvs. hazelcast-default.xml der følger med hazelcast.jar.

5.1. Netværkskonfiguration

Som standard bruger Hazelcast multicast til at opdage andre medlemmer, der kan danne en klynge. Hvis multicast ikke er en foretrukken måde at finde på i vores miljø, kan vi konfigurere Hazelcast til en komplet TCP / IP-klynge.

Lad os konfigurere TCP / IP-klyngen ved hjælp af deklarativ konfiguration:

Alternativt kan vi bruge Java-konfigurationsmetoden:

Config config = ny Config (); NetworkConfig netværk = config.getNetworkConfig (); network.setPort (5701) .setPortCount (20); network.setPortAutoIncrement (true); JoinConfig join = netværk.getJoin (); join.getMulticastConfig (). setEnabled (false); join.getTcpIpConfig () .addMember ("machine1") .addMember ("localhost"). setEnabled (true);

Som standard forsøger Hazelcast at binde 100 porte. I eksemplet ovenfor, hvis vi indstiller portens værdi som 5701 og begrænser portantalet til 20, da medlemmer deltager i klyngen, forsøger Hazelcast at finde porte mellem 5701 og 5721.

Hvis vi kun vil bruge en port, kan vi deaktivere funktionen til automatisk stigning ved at indstille automatisk forøgelse til falsk.

5.2. Management Center-konfiguration

Ledelsescentret giver os mulighed for at overvåge klyngernes samlede tilstand, vi kan også analysere og gennemse datastrukturer i detaljer, opdatere kortkonfigurationer og tage tråddump fra noder.

For at bruge Hazelcast management center kan vi enten implementere mancenter-version.krig applikation i vores Java-applikationsserver / container, eller vi kan starte Hazelcast Management Center fra kommandolinjen. Vi kan downloade den nyeste Hazelcast ZIP fra hazelcast.org. ZIP indeholder mancenter-version.krig fil.

Vi kan konfigurere vores Hazelcast-noder ved at tilføje webapplikationens URL til hazelcast.xml og så få Hazelcast-medlemmerne til at kommunikere med ledelsescentret.

Så lad os nu konfigurere ledelsescentret ved hjælp af deklarativ konfiguration:

 // localhost: 8080 / mancenter 

På samme måde er her den programmatiske konfiguration:

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

6. Konklusion

I denne artikel dækkede vi introduktionskoncepter om Hazelcast. For flere detaljer kan vi se på referencevejledningen.

Som sædvanlig er al koden til denne artikel tilgængelig på GitHub.


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