hazelcast初探


Hazelcast作為一個高度可擴展的數據分發和集群平台,提供了高效的、可擴展的分布式數據存儲、數據緩存。Hazelcast是開源的,在分布式技術方面,Hazelcast提供了十分友好的接口供開發者選擇,如Map,Queue,ExecutorService, Lock和Jcache。 
Hazelcast的穩定性很高,分布式應用可以使用Hazelcast進行存儲數據、同步數據、發布訂閱消息等。Hazelcast是基於Java開發的,其客戶端有Java, C/C++, .NET以及REST。Hazelcast同時也支持memcache協議。它很好的支持了Hibernate,可以很容易的在當今流行的數據庫系統中應用。 

如果你在尋找一個基於內存的、可擴展的以及對開發者友好的NoSql,那么Hazelcast是一個很不錯的選擇! 

 

Hazelcast是一個高度可擴展的數據分發和集群平台。特性包括:

  • 提供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.優點

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目錄下啟動頁面管理

<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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM