hazelcast学习笔记---sharding与cluster

     hazelcast的目标是千亿级的缓存系统,在这样的系统里,sharding和cluster是必不可少的话题.

     1.sharding:

      hazelcast的sharding使用的是传统的hash+分片的技术.hazelcast服务器将缓存默认分为271个partitions,对于要存入hazelcast缓存的内容,首先需要进行如下几步处理:

          a.针对key序列化

          b.求hash值

          c.用271对hash进行mode,得出key应该存放在哪个partition里面.

     2.cluster

     cluster的一些基本技术有:节点发现,数据迁移,数据安全等.在hazelcast里,节点发现采用的是自动发现的理念,尽量不使用配置;hazelcast对数据迁移的处理核心是partition表的维护;对于数据容错,一方面,cluster的中心采用的是年龄为大机制,谁先启动谁是中心节点,另一方面,每个partition的数据不只是存在一台服务器上,还在另外一台机器上有一个备份,如果其中一台宕掉了,另外一台里面备份数据能够用来为整个cluster做repartitioning,而不至于数据丢失.

      2.1 节点发现

          hazelcast目前的版本支持三种类型的发现机制:

       2.1.1 multicast

          当发现机制配置为multicast 时,hazelcast会定时对局域网内可达到的机器进行广播,通知其他机器自己的存在,并期望网内的其他hazelcast服务器返回一个回应,从而确定自己不是hazelcast cluster中最老的那位(即选择cluster的leader)。

   <network>
        <join>
            <multicast enabled="true">
                <multicast-group>224.2.2.3</multicast-group>
                <multicast-port>54327</multicast-port>
                <multicast-time-to-live>32</multicast-time-to-live>
                <multicast-timeout-seconds>2</multicast-timeout-seconds>
                <trusted-interfaces>
                   <interface>192.168.1.102</interface>
                </trusted-interfaces>   
            </multicast>
            <tcp-ip enabled="false">
            </tcp-ip>
            <aws enabled="false">
            </aws>
        </join>
   <network>

       2.1.2 TCP/IP 

     使用multicast配置简单,但一个,当hazelcast cluster规模比较大时,广播占用的带宽可能会比较受影响,另一个,广播的范围有限,cluster的服务器可能会分布在广播难以达到的地方。这时TCP/IP是一个较好的选择。

<hazelcast>
  ...
  <network>
    ...
    <join>
      <multicast enabled="false">
      </multicast>
      <tcp-ip enabled="true">
        <member>machine1</member>
        <member>machine2</member>
        <member>machine3:5799</member>
        <member>192.168.1.0-7</member>
        <member>192.168.1.21</member>
      </tcp-ip>
      ...
    </join>
    ...
  </network>
  ...
</hazelcast>

       2.1.3 EC2 Cloud

     这是基于亚马逊云服务的一种发现机制,有点类似于zookeeper的意思。在分布式cluster中,EC2 cloud作为一个中介,所有cluster都与之进行通信,寻找cluster中其他的hazelcast成员。

<join>
  <multicast enabled="false">
  </multicast>
  <tcp-ip enabled="false">
  </tcp-ip>
  <aws enabled="true">
    <access-key>my-access-key</access-key>
    <secret-key>my-secret-key</secret-key>
    <iam-role>s3access</iam-role>
    <region>us-west-1</region>
    <host-header>ec2.amazonaws.com</host-header>
    <security-group-name>hazelcast-sg</security-group-name>
    <tag-key>type</tag-key>
    <tag-value>hz-nodes</tag-value>
  </aws>
</join>

      2.2 数据安全

     当cluster的hazelcast服务器个数只有一个时,所有271个partitions全部放在这个服务器上:

          

                      n=1

      当cluster的hazelcast服务器个数大于一个时,271个partitions会基本平均分配到这n个服务器上去,并且,每个partition在另外的机器上会有一个拷贝的副本:

              

                                        n=2  

             

                                                                                  n=4                                                                    
                           
     这样,当一台机器宕机后,并不会影响到整个集群数据的运行,如果两台机器宕机了,而这两台机器的partition(自己的partition+备份的partition)没有交集,也不会影响到整个cluster的运行。

2.3.数据迁移

     cluster中每个节点都维护着一份自己的partition表。当新增或移除一个节点时,cluster中的leader负责调整整个cluster的partition的分配情况






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值