IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> ignite集群的启动 -> 正文阅读

[大数据]ignite集群的启动

ignite缓存模式? ? ? ?

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

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

分区化缓存适合于数据量很大而更新频繁的场合,即写多读少

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

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

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

基线拓扑? ?

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

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

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

????????基线拓扑的目的是:

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

注意事项? :

  • 基线拓扑是实现分布式存储持久化数据的必要操作,而partition的缓存模式只是决定了内存数据在各个节点中的分布存放
  • 第一次启动集群时,要等相关节点都单独启动完成之后,再激活集群,才能将这些节点加入到基线拓扑中
ignite.cluster().setBaselineTopology(nodes);

????????基线拓扑自动调整

????????启用后集群将监控其服务端节点的状态,并在集群拓扑稳定一段可配置的时间后自动设置当前拓扑的基线。当集群中的节点集发生变更时,将发生以下情况:

  • Ignite会等待一个可配置的时间(默认为5分钟);
  • 如果在此期间拓扑中没有其他变更,则Ignite会将基线拓扑设置为当前节点集;
  • 如果在此期间节点集发生更改,则会更新超时时间。

????????这些节点集的每个变更都会重置自动调整的超时时间。当超时过期且当前节点集与基线拓扑不同(例如存在新节点或一些旧节点离开)时,Ignite将更改基线拓扑以匹配当前节点集,这也会触发数据再平衡。当然,只有集群处于激活状态时,基线拓扑才会自动调整。

//开启自动适配集群
 ignite.cluster().baselineAutoAdjustEnabled(true);
 ignite.cluster().baselineAutoAdjustTimeout(300000);

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

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

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

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

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

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

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

日志示例

加入新节点前

?加入新节点

?此时集群还未激活

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

注意

集群激活之后,除非手工冻结或者所有节点停止,否则会一直处于激活状态,单节点的退出不会影响整个集群的可用性。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:36:19  更:2022-03-12 17:39:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:12:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码