Ignite具有非常先进的集群能力,本文针对和集群有关的技术点做一个简短的介绍,然后针对实际应用的可能部署形式做了说明和对比,从中我们可以发现,Ignite平台在部署的灵活性上,具有很大的优势。\

1.相关概念

\

1.1.节点平等

\

Ignite没有master节点或者server节点,也没有worker节点或者client节点,按照Ignite的观点所有节点都是平等的。但是开发者可以将节点配置成master,worker或者client以及data节点。\

1.2.发现机制

\

Ignite节点之间会自动感知,集群可扩展性强,不需要重启集群,简单地启动新加入的节点然后他们就会自动地加入集群。这是通过一个发现机制实现的,他使节点可以彼此发现对方,Ignite默认使用TcpDiscoverySpi通过TCP/IP协议来作为节点发现的实现,也可以配置成基于多播的或者基于静态IP的,这些方式适用于不同的场景。\

1.3.部署模式

\

Ignite可以独立运行,也可以在集群内运行,也可以将几个jar包嵌入应用内部以嵌入式的模式运行,也可以运行在Docker容器以及Mesos和Yarn等环境中,可以在物理机中运行,也可以在虚拟机中运行,这个广泛的适应性是他的一个很大的优势。\

1.4.配置方式

\

Ignite的大部分配置选项,都同时支持通过基于Spring的XML配置方式以及通过Java代码的编程方式进行配置,这个也是个重要的优点。\

1.5.客户端和服务端

\

Ignite中各个节点是平等的,但是可以根据需要将节点配置成客户端或者服务端,服务端节点参与缓存,计算,流式处理等等,而原生的客户端节点提供了远程连接服务端的能力。Ignite原生客户端可以使用完整的Ignite API,包括近缓存,事务,计算,流,服务等等。
所有的Ignite节点默认都是以服务端模式启动的,客户端模式需要显式地启用,如下:

\u0026lt;bean class=\"org.apache.ignite.configuration.IgniteConfiguration\"\u0026gt;\    \u0026lt;property name=\"clientMode\" value=\"true\"/\u0026gt;\\u0026lt;/bean\u0026gt;

\

2.创建集群

\

一个Ignite节点可以从命令行启动,可以用默认的配置也可以传递一个配置文件。可以启动很多的节点然后他们会自动地发现对方。
要启动一个基于默认配置的网格节点,打开命令行然后切换到IGNITE_HOME(安装文件夹),然后输入如下命令:

$ bin/ignite.sh

\

然后会看到大体如下的输出:

1.[02:49:12] Ignite node started OK (id=ab5d18a6)\2.[02:49:12] Topology snapshot [ver=1, nodes=1, CPUs=8, heap=1.0GB]

\

在嵌入式模式中,通过如下的代码同样可以启动一个节点:

Ignite ignite = Ignition.start();

\

3.集群组

\

从设计上讲,所有集群节点都是平等的,所以没有必要以一个特定的顺序启动任何节点,或者给他们赋予特定的规则。然而,Ignite可以因为一些应用的特殊需求而创建集群节点的逻辑组,比如,可能希望只在远程节点上部署一个服务,或者给部分worker节点赋予一个叫做worker的规则来做作业的执行。比如,下面这个例子只把作业广播到远程节点(除了本地节点):

final Ignite ignite = Ignition.ignite();\IgniteCluster cluster = ignite.cluster();\IgniteCompute compute = ignite.compute(cluster.forRemotes());\compute.broadcast(() -\u0026gt; System.out.println(\"节点Id: \" + ignite.cluster().localNode().id()));

\

Ignite内置了很多预定义的集群组,同时还支持集群组的自定义。可以基于一些谓词定义动态集群组,这个集群组只会包含符合该谓词的节点。下面这个例子,一个集群组只会包括CPU利用率小于50%的节点,注意这个组里面的节点会随着CPU负载的变化而改变:

IgniteCluster cluster = ignite.cluster();\ClusterGroup readyNodes = cluster.forPredicate((node) -\u0026gt; node.metrics().getCurrentCpuLoad() \u0026lt; 0.5);

\

4.集群配置

\

Ignite中,通过DiscoverySpi节点可以彼此发现对方,可以配置成基于多播的或者基于静态IP的。Ignite提供了TcpDiscoverySpi作为DiscoverySpi的默认实现,它使用TCP/IP来作为节点发现的实现。
对于多播被禁用的情况,TcpDiscoveryVmIpFinder会使用预配置的IP地址列表,只需要提供至少一个远程节点的IP地址即可,但是为了保证冗余一个比较好的做法是提供2-3个网格节点的IP地址。如果建立了与任何一个已提供的IP地址的连接,Ignite就会自动地发现其他的所有节点。
也可以同时使用基于多播和静态IP的发现,这种情况下,除了通过多播接受地址以外,TcpDiscoveryMulticastIpFinder也可以使用预配置的静态IP地址列表。
下面的例子,显示的是如何通过预定义的IP地址列表建立集群:

TcpDiscoverySpi spi = new TcpDiscoverySpi();\TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder();\// 设置预定义IP地址,注意端口或者端口范围是可选的。\ipFinder.setAddresses(Arrays.asList(\"1.2.3.4\

Apache Ignite(五):Ignite的集群部署相关推荐

  1. Apache Durid (HDFS原理 特性 读写测试 集群部署 架构设计)

    Apache Durid (HDFS 集群部署) Apache Durid (HDFS 集群部署) 1. 分布式文件HDFS 1.1 HDFS简介 1.1.1 HDFS发展历史 1.1.2 HDFS设 ...

  2. 【部署】Apache DolphinScheduler 伪集群部署

    [部署]Apache DolphinScheduler(海豚) 伪集群部署(Pseudo-Cluster) Standalone极速体验版 DolphinScheduler 伪集群部署 前置准备工作 ...

  3. 学习笔记Hadoop(五)—— Hadoop集群的安装与部署(2)—— Hadoop集群部署模式、配置固定IP

    一.Hadoop集群部署模式 Hadoop的安装部署的模式一共有三种: 独立模式(本地模式) standalone 默认的模式,无需运行任何守护进程(daemon),所有程序都在单个JVM上执行.由于 ...

  4. RocketMQ初探(五)之RocketMQ4.2.6集群部署(单Master+双Master+2m+2s+async异步复制)

    以下部署方式结合众多博友的博客,经过自己一步一步实际搭建,如有雷同,侵权行为,请见谅...其中遇到不少的坑,希望能帮到更多的人,现在很少能找到一份完整版4.2.6版本的搭建教程了,如果你有幸遇见,那么 ...

  5. Kylin集群部署和cube使用

    Kylin集群部署和cube使用 安装集群环境 节点 Kylin节点模式 Ip 内存 磁盘 Node1 All 192.167.71.11 2G 80G Node2 query 192.168.71. ...

  6. 博文推荐|Apache Doris 单节点 Docker 集群制作教程

    前言 Apache Doris 是当下非常流行的 MPP 架构 OLAP 数据库,很多同学想自学/测试 Doris 的使用和能力,但是又苦于没有环境或者畏惧冗长的编译+搭建过程,整个过程极大的劝退了很 ...

  7. Kafka系列(七)、Kafka套件 Confluent Platform 单机/集群部署

    目录 简介 单机部署 集群部署 尾巴 Kafka系列: kafka 2.4.1单机版部署及使用 kafka监控系统kafka eagle安装使用 滴滴开源的kafka-manager编译及部署使用 k ...

  8. ELK 7.17.5 集群部署及使用

    文章目录 一.ElasticSearch 安装 1.elasticsearch 单节点安装 2.elasticsearch 分布式集群安装 3.elasticsearch 配置身份认证 二.Elast ...

  9. 堡垒机jumpserver集群部署

    本文参考老广二次开发后的堡垒机部署方案,在此基础上进行集群部署,提高其可靠性.尽管国外已经有类似的功能的堡垒机的发布,但是还是要感谢老广在百忙之中开发出更加实用的堡垒机. 本文内容虽然亲测,但内容难免 ...

最新文章

  1. mysql 57授权失败_MYSQL教程完美解决mysql客户端授权后连接失败的问题
  2. Mac 技术篇-Oracle数据库连接工具SQL Developer启用、关闭自动提交事务,设置自动commit
  3. Spring Boot - Profile不同环境配置
  4. 零基础跟我学前端之css3基础
  5. where is list binding done for Opportunity S2 view default 20 returns
  6. 在MFC里面实现线程的实例
  7. 多个定时器相互干扰的问题_相互问题
  8. 第一百二十六节,JavaScript,XPath操作xml节点
  9. 产品心经:产品经理应该知道的60件事
  10. zabbix安装教程Linux环境部署zabbix3.2
  11. 远程桌面访问软件:TeamViewer
  12. 在这里,北上深成为“社科之城”
  13. Python处理Excel,学会这十四个方法,工作量减少大半!
  14. ElasticSearch的学习笔记并整合SpringBoot做测试
  15. 人工智能召唤“神龙”,阿里云发布首个云上异构超算集群...
  16. 杀病毒软件和防火墙区别
  17. oracle 如何取去年,oracle 获取当前日期 去年日期 上年日期
  18. ffmpeg下载安装的步骤
  19. c语言检测状态是否变化,C语言数组状态研究
  20. 湖南大学计算机科学与技术导师,肖德贵(湖南大学计算机与通信学院教师)_百度百科...

热门文章

  1. python 字符串前加u r b的意义
  2. UVA - 1252 Twenty Questions (状压dp+vis数组加速)
  3. 一个mui+ajax+php的demo
  4. 《第一行代码》学习笔记18-广播接收器Broadcast_Receiver(1)
  5. 类的笔记整理__7-10__
  6. JBPM executionService.deleteProcessInstanceCascade(id)报错
  7. MongoDB 聚合操作
  8. 深度解析容器化技术在广发证券交易系统的应用
  9. 从各大跨平台技术说开去,我们真的需要虚拟 DOM 吗?
  10. Win7硬盘安装方法