Hazelcast做爲一個高度可擴展的數據分發和集羣平臺,提供了高效的、可擴展的分佈式數據存儲、數據緩存。Hazelcast是開源的,在分佈式技術方面,Hazelcast提供了十分友好的接口供開發者選擇,如Map,Queue,ExecutorService, Lock和Jcache。
Hazelcast的穩定性很高,分佈式應用可使用Hazelcast進行存儲數據、同步數據、發佈訂閱消息等。Hazelcast是基於Java開發的,其客戶端有Java, C/C++, .NET以及REST。Hazelcast同時也支持memcache協議。它很好的支持了Hibernate,能夠很容易的在當今流行的數據庫系統中應用。
若是你在尋找一個基於內存的、可擴展的以及對開發者友好的NoSql,那麼Hazelcast是一個很不錯的選擇! java
Hazelcast是一個高度可擴展的數據分發和集羣平臺。特性包括:node
1.優勢web
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的數據會在多個節點上進行備份。一旦一個節點失敗了,數據將會從別的節點上進行恢復。算法
f. Hazelcast頁面元素齊全數據庫
頁面能夠看到map,list等數據內容,以及一些容量的儀表圖.能夠看到不少有用的數據,包括每一個Map的請求次數等.緩存
2. 使用場景
分佈式緩存,一般使用在數據庫以前的那一層
緩存服務器
NoSql的數據存儲
Spring cache
微服務的結構
儲存臨時數據,如web的session等
3. Hazelcast的數據拆分
Hazelcast的數據拆分叫作間隔(Partitions)。默認狀況下,Hazelcast會將數據拆分紅271個間隔(總數,並非單個單點)。當傳入一個key時,Hazelcast會對它進行序列化,以及進行hash的算法等算出一個數值,經過該數值它存放在相應的間隔中(271個的其中一個)。在不一樣的節點中存放相同數量的間隔。Hazelcast還會生成備份的間隔,一樣也是存放在這些間隔中。 安全
4.配置服務器
配置組鏈接選項網絡
<group> <name>test</name> <password>test</password> </group>
配置管理頁面,若是配置爲true,則能夠在mancenter目錄下啓動頁面管理session
<management-center enabled="true">http://10.1.4.97:8080/mancenter</management-center>
配置鏈接網絡(自增加若是配爲true,端口啓動失敗時會自增)
<port auto-increment="true" port-count="100">5701</port>
集羣節點發現機制,自選一種
<join> <multicast enabled="false"> <multicast-group>224.2.2.3</multicast-group> <multicast-port>54327</multicast-port> </multicast> <tcp-ip enabled="true"> <interface>10.10.10.10</interface> <member-list> <member>10.10.10.10</member> </member-list> </tcp-ip> <aws enabled="false"> <access-key>my-access-key</access-key> <secret-key>my-secret-key</secret-key> <!--optional, default is us-east-1 --> <region>us-west-1</region> <!--optional, default is ec2.amazonaws.com. If set, region shouldn't be set as it will override this property --> <host-header>ec2.amazonaws.com</host-header> <!-- optional, only instances belonging to this group will be discovered, default will try all running instances --> <security-group-name>hazelcast-sg</security-group-name> <tag-key>type</tag-key> <tag-value>hz-nodes</tag-value> </aws> </join>
配置節點對套接字加密,算法可選
<symmetric-encryption enabled="false"> <!-- encryption algorithm such as DES/ECB/PKCS5Padding, PBEWithMD5AndDES, AES/CBC/PKCS5Padding, Blowfish, DESede --> <algorithm>PBEWithMD5AndDES</algorithm> <!-- salt value to use when generating the secret key --> <salt>thesalt</salt> <!-- pass phrase to use when generating the secret key --> <password>thepass</password> <!-- iteration count to use when generating the secret key --> <iteration-count>19</iteration-count> </symmetric-encryption>
配置執行服務器的線程和隊列容量
<executor-service name="default"> <pool-size>16</pool-size> <!--Queue capacity. 0 means Integer.MAX_VALUE.--> <queue-capacity>0</queue-capacity> </executor-service>
參考:http://blog.csdn.net/hengyunabc/article/details/18514563