一般的應用正式環境中都不止一臺伺服器(也就是說是集群的),那麼如果只是簡單的將數據預載入到記憶體,那麼就會有數據不同步的現象。 (更新了其中一臺JVM,另一臺JVM並不會收到通知從而保持數據同步)。 這時候就需要用到cache server了。 目前流行的cache server有很多種,像redis ...
一般的應用正式環境中都不止一臺伺服器(也就是說是集群的),那麼如果只是簡單的將數據預載入到記憶體,那麼就會有數據不同步的現象。
(更新了其中一臺JVM,另一臺JVM並不會收到通知從而保持數據同步)。
這時候就需要用到cache server了。
目前流行的cache server有很多種,像redis,Hazelcast,ehcache,memcache等。
如果你在尋找一個基於記憶體的、可擴展的以及對開發者友好的NoSql,那麼Hazelcast是一個很不錯的選擇!
它具有的特點如下:
a. Hazelcast開發比較簡單
Hazelcast是基於Java寫的,沒有任何其它的以來。它提供的API跟Java util包很像。對於開發者來說,只需要加入hazelcast.jar,然後就可以快速使用在多個JVM之間的數據共用(分散式)。
b. Hazelcast的節點之間是平等的(Peer-to-Peer)
不像其它很多的NoSql解決方案,Hazelcast的節點之間是對等的(沒有主次之分)。所有的節點存儲的數據都是相等的,在應用中可以很容易的增加一個Hazelcast節點。或者以客戶端-服務端的形式使用。
c. Hazelcast是可擴展的
Hazelcast的擴展性非常強,可以很簡單的增加或減少節點。可以自動的監聽節點的增加,並以線性的方式增加存儲空間和能力。節點之間的通信是以TCP的方式建立的。
d. Hazelcast效率很高。
將數據存儲在記憶體中,所以是非常高效的,包括讀操作和寫操作。
e. Hazelcast是可備份的
Hazelcast的數據會在多個節點上進行備份。一旦一個節點失敗了,數據將會從別的節點上進行恢復。
基於區域網的集群:
“分散式”、“集群服務”、“網格式記憶體數據”、“分散式緩存“、“彈性可伸縮服務”——這些牛逼閃閃的名詞拿到哪都是ITer裝逼的不二之選。在Javaer的世界,有這樣一個開源項目,只需要引入一個jar包、只需簡單的配置和編碼即可實現以上高端技能,他就是 Hazelcast。
/**
* 客戶端節點
* @author
*/
public class ClientNode {
public static void main(String[] args) {
// 獲取Hazelcast實例
Config config = new Config();
config.getGroupConfig().setName("drf");
HazelcastInstance ins = Hazelcast.newHazelcastInstance(config);
// 從集群中讀取Map實例
Map<Integer, String> map = ins.getMap("default map");
// 輸出map中數據
map.forEach((k,v)->{
System.out.println("Pos:" + k + ". name:" + v);
});
}
}
/**
* 服務節點
* @author
*/
public class ServiceNode {
public static void main(String[] args) {
// 獲取Hazelcast實例
Config config = new Config();
config.getGroupConfig().setName("drf");
HazelcastInstance ins = Hazelcast.newHazelcastInstance(config);
// 從集群中讀取Map實例
Map<Integer, String> map = ins.getMap("default map");
// 向集群中添加數據
System.out.println("Begin insert data");
map.put(1, "Cait Cassiopeia");
map.put(2, "Annie");
map.put(3, "Evelynn");
map.put(4, "Ashe");
System.out.println("End");
}
}
通過config.getGroupConfig().setName("drf"); 設置分組來區分區域網的不需要的集群;