0
点赞
收藏
分享

微信扫一扫

ignite集群的启动

火热如冰 2022-03-12 阅读 75
缓存

ignite缓存模式       

         Ignite提供了三种不同的缓存操作模式:PARTITIONED(分区)、REPLICATED(复制)、LOCAL(本地)。缓存模型可以整个集群配置,也可以细粒度到每个缓存上。

        PARTITIONED: 这是扩展性最好的分布式缓存模式,在这种械下,所有数据被均等地分布在分区中,所有的分区也被均等地拆分到相关的节点中。这个方式可以在所有节点上只要匹配总可用存储(内存和磁盘)就可以存储尽可能多的数据,只要有足够多的节点,就可以存储足够多的数据。与REPLICATED比较,分区模式更新比较廉价,对于每个键只需要更新一个主节点(可选择一个或者多个备份节点);由于只有特定节点才持有缓存的数据,因此读取比较昂贵。为了避免额外的数据移动,总是访问恰好缓存有要访问的数据的节点是很重要的,这个方法叫做关联并置,当工作在分区化缓存时强烈建议使用。

 

        REPLICATED:复制模式,有数据再平衡过程,主节点数据与分区模式的一致,只是复制模式默认备份了除主节点数据外的其余数据。复制模式适合存储数据量小,增长不快的数据。

        LOCAL:本地模式,数据都存储在本地,无数据再平衡,类似常见的存储服务。

模式优点缺点
PARTITIONED能存储海量数据,频繁更新对其影响不大查询缓存涉及到数据移动,对查询性能有影响
REPLICATED适合存储数据量不大的数据,数据查询性能稳定频繁更新对其影响较大

基线拓扑   

        基线拓扑:基线拓扑是一组Ignite服务端节点,目的是同时在内存以及原生持久化中存储数据。基线拓扑中的节点在功能方面不受限制,并且作为数据和计算的容器,在行为上也和普通的服务端节点一样。

        另外,部分节点不属于基线拓扑,也是可以的,比如:

  • 服务端节点要么在内存中存储数据,要么在第三方数据库,比如RDBMS或者NoSQL中持久化数据;
  • 客户端节点也不在基线拓扑中,因为它们不持有共享数据。

        基线拓扑的目的是:

  • 如果节点重启,避免不必要的数据再平衡。比如,每个节点重启都会触发两个再平衡事件,一个是节点停止,一个是节点重新加入集群,这会导致集群资源的无效利用;
  • 集群重启后,如果基线拓扑中的所有节点都已经加入,那么集群会被自动激活。

 Ignite数据平衡分布的实践场景

        内存缓存模式CacheMode使用PARTITIONED,保证数据在各个节点的内存中缓存起来。

  • 第一次环境部署,所有节点要单独启动,所有节点启动完成之后调用激活集群接口,ignite自动将所有节点集群,并且初始化基线拓扑,把所有节点都在基线拓扑变为上线状态。

  • 集群中所有节点挂掉,即所有节点在基线拓扑中处于下线状态,这时候启动其中一个节点会自动从原先的基线拓扑中变为上线状态,后续其他节点也是,然后触发数据平衡。

  • 集群中单个节点挂掉,即在基线拓扑中处于下线状态,那直接启动这个节点就行,会自动从原先的基线拓扑中上线然后数据平衡

  • 要把新节点加入到已激活的集群,并且加入到集群中的基线拓扑中的话,要调用激活集群接口(接口ip是当前节点或者是集群中任意一个节点的都可以)加入集群的基线拓扑后,集群会把部分数据分布到新节点中去

  • 要把下线节点从集群中删去,并确认不再需要这个节点,也不需要这个节点里面的数据,则把当前节点shutdown掉,然后重新调用激活集群接口即可,同时该节点也无法持有旧数据重新加入集群中。(危险操作)

日志示例

加入新节点前

 加入新节点

 此时节点还为激活

激活集群,当所有节点启动ok后,任意节点上执行激活cluster.active(true) 即可实现集群的激活,集群激活后,可以监听eventType:EVT_CLUSTER_ACTIVATED  140。

举报

相关推荐

0 条评论