hazelcast初探

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

  • 提供java.util.{Queue, Set, List, Map}分佈式實現。
  • 提供java.util.concurrency.locks.Lock分佈式實現。
  • 提供java.util.concurrent.ExecutorService分佈式實現。
  • 提供用於一對多關係的分佈式MultiMap。
  • 提供用於發佈/訂閱的分佈式Topic(主題)。
  • 經過JCA與J2EE容器集成和事務支持。
  • 提供用於安全集羣的Socket層加密。
  • 支持同步和異步持久化。
  • 爲Hibernate提供二級緩存Provider 。
  • 經過JMX監控和管理集羣。
  • 支持動態HTTP Session集羣。
  • 利用備份實現動態分割。
  • 支持動態故障恢復。

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

相關文章
相關標籤/搜索