zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Java Excel导入
    Git在Eclipse中忽略文件提交
    Git客户端安装(仅限windows用户)
    Java输出流文件下载
    Centos6.3源码安装Mysql-5.5.34
    Centos6.3安装Mongodb2.2.4
    Jacob操作Word各格式转换参数
    sublime text3使用小结
    获得select下拉框的值
    sublim text3 配置
  • 原文地址:https://www.cnblogs.com/garfieldcgf/p/6393579.html
Copyright © 2011-2022 走看看