What is
Hazelcast?
Hazelcast is a clustering and highly scalable data distribution platform for Java. Before reading any further, please take one minute test drive and feel it.
Features:
- Distributed implementations of java.util.{Queue, Set, List, Map}
- Distributed locks via java.util.concurrency.locks.Lock interface
- Support for cluster info and membership events
- Dynamic discovery
- Dynamic scaling to hundreds of servers
- Dynamic partitioning with backups
- Dynamic fail-over
Hazelcast is for you if you want to
- share data/state among many servers (e.g. web session sharing)
- cache your data (distributed cache)
- cluster your application
- partition your in-memory data
- distribute workload onto many servers
- provide fail-safe data management
Hazelcast is free. It can be
freely used in commercial or non-commercial applications and can be
described as:
- Lightening-fast; thousands of operations per sec.
- Fail-safe; no losing data after crashes.
- Dynamically scales to hundreds of servers.
- Super-easy to deploy and use (include a single jar).
Hazelcast is pure Java. JVMs that are running Hazelcast will dynamically cluster. Although by default Hazelcast will use multicast for discovery, it can also be configured to only use TCP/IP for enviroments where multicast is not available or preferred. Communication among cluster members is always TCP/IP with Java NIO beauty. Default configuration comes with 1 backup so if one node fails, no data will be lost. It is as simple as using java.util.{Queue, Set, List, Map}. Just add the hazelcast.jar into your classpath and start coding.
One Minute Test Drive!
A test application comes with hazelcast.jar that simulates
the queue, set, map and lock apis. As you run that application on different JVMs (on local or
remote machines), each JVM will automatically join and be part of your cluster.
- Download hazelcast<version>.zip and unzip it.
- Run 'run.bat' or 'run.sh' on DOS or Shell prompt.
- Repeat step 2 as many times as you want to start new members on the same or different machines(servers).
- type 'q.offer <string>' to enqueue a string object.
- type 'q.poll' to dequeue
- type 'q.offermany 1000' to enqueue 1000 object
- type 'q.pollmany 1000' to dequeue 1000 object
- type 'm.put key1 value1' to put an entry into map
- type 'm.get key1' to get the value of key1 fom map
- type 'm.putmany 1000' to put 1000 entry into map
- do any of the steps between 2 and 10 any number of times
- type 'help' for complete list of commands