zoukankan      html  css  js  c++  java
  • 2 ignite关键特性

    数据注入和流计算:

    • Ignite流式计算允许以可扩展和容错的方式处理连续不中断的数据流。在一个中等规模的集群中,数据注入Ignite的比例会很高,很容易达到每秒百万级的规模。 

    • Ignite可以与主要的流处理技术和框架进行集成,比如Kafka、Camel、Storm或者JMS,他们可以为基于Ignite的架构带来非常强大的功能。 

              工作方式:

      1. 客户端将流式数据注入Ignite;
      2. 数据在Ignite数据节点中自动分区;
      3. 数据在滑动窗口中并发处理;(滑动窗口协议允许发送方在停止并等待确认前发送多个数据分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输,提高网络吞吐量。)
      4. 客户端在流式数据中执行并发SQL查询
      5. 客户端订阅数据变化的持续查询

    RDBMS集成:

      Ignite支持与各种持久化存储进行集成,它可以接入数据库、导入模式、配置索引类型、以及自动化地生成所有必要的XML OR映射配置和Java领域模型POJO,他们可以很容易地导入自己的开发工程。 
    Ignite可以与任何支持JDBC驱动的关系型数据库(RDBMS)进行集成,包括Oracle, PostgreSQL, Microsoft SQL Server, 和MySQL。 

    分布式数据结构:

      Ignite以分布式的形式支持基于java.util.concurrent框架的大部分数据结构。比如,可以在一个节点上使用java.util.concurrent.BlockingQeque加入一些东西,然后再另一个节点上获取它。或者有一个分布式的ID生成器,他可以保证所有节点上的ID唯一性。 
    支持的数据结构包括:

      • Concurrent Map (Cache)
      • 分布式队列和集合
      • AtomicLong
      • AtomicReference
      • AtomicSequence (ID生成器)
      • CountDownLatch
      • ExecutorService

    消息和事件:

      Ignite提供了集群范围的高性能的消息功能,支持基于发布-订阅以及直接点对点通信模型的数据交换。消息可以以有序的,也可以以无序的方式进行交换。有序消息会稍微有点慢,但是如果使用的话,Ignite会保证收到消息的顺序和发送消息的顺序一致。 
    当在分布式网格环境中发生各种事件时,Ignite的分布式事件功能可以使应用收到通知。可以自动地收到集群内的本地和远程节点上发生的任务执行、读写和查询操作的通知,事件通知也可以分组在一起然后分批或者定期地发送。

    架构:

      Ignite集群基于无共享架构,所有的集群节点都是平等的,独立的,整个集群不存在单点故障。 通过灵活的Discovery SPI组件,Ignite节点可以自动地发现对方,因此只要需要,可以轻易地对集群进行缩放。 
    Ignite可以独立运行,可以组成集群,可以运行于Kubernetes和Docker容器中,也可以运行在Apache Mesos以及Hadoop Yarn上,可以运行于虚拟机和云环境,也可以运行于物理机,从技术上来说,集群部署在哪里,是没有限制的。 

    •  服务端、客户端和协议   

    Ignite中定义有两种类型的节点,客户端服务端节点,分别有不同的用途。 
    服务端节点作为数据和计算的容器,一旦接入,Ignite就会作为分布式数据库(或者叫数据网格)存储数据,然后参与查询的处理、计算的执行、数据流处理等等。 
    而对于客户端节点,提供了远程接入分布式数据库(一组服务端节点)的功能,Ignite的原生客户端可以使用完整的Ignite API,包括SQL、事务、计算、数据流、服务等等。 
    除了客户端节点,还可以通过Ignite的二进制客户端协议、JDBC/ODBC驱动、REST API接入集群。 

    存储:

      根据配置,Ignite在内存存储中,可以是分区模式,也可以是复制模式,复制模式中,数据在集群中的每个节点都有一份副本,而分区模式,Ignite会在多个集群节点上对数据进行平均拆分,因此可以在内存及磁盘上存储TB级的数据。 

    冗余 
      Ignite可以配置多个副本,来保证故障时的数据弹性。 
    一致性 
      不管使用哪种复制方案,Ignite都会保证整个集群的数据一致性。 
    Ignite作为内存存储 
      持久化对Ignite来说是可选的,这时整个集群就会工作于纯内存模式,所有的数据和索引都会只存储于内存中,这样会得到最高的性能,因为数据不需要写入磁盘。为了避免可能的节点故障导致数据丢失,建议适当地配置一些备份(或者叫复制因子)。 
    Ignite持久化 
      可以有两种方式开启持久化,第一个方式是,使用它自己的分布式、ACID以及兼容SQL的持久化,这可以透明地与所有的内存架构透明且高效地集成。 
    如果开启了原生持久化,Ignite会在磁盘上存储数据的超集,然后在内存中存储尽可能多的数据。比如,一共有100条数据,内存有能力存储20条,那么磁盘会存储所有的100条,而为了高性能,内存可以只缓存20条。 
    Ignite与第三方数据库 
      第二个开启持久化的方式,是将Ignite部署在已有的第三方数据库之上,比如RDBMS、Apache Cassandra或者MongoDB。这种方式通过将部分数据的副本放在内存中,用于对底层数据库进行加速。Ignite支持通读和通写模式,确保数据一致性以及两者之间的同步。

    交换空间 
      如果不希望使用原生持久化或者第三方持久化,还可以开启交换,这时,如果内存过载,内存中的数据会被移动到磁盘上的交换空间中,如果开启了交换空间,Ignite将数据存储于内存映射文件(MMF)中,根据当前的内存使用量,操作系统会将MMF的内容交换到磁盘。交换空间通常用于避免由于内存过载导致的内存溢出错误(OOME),以及需要更多时间来对集群进行缩放,从而对数据集进行更平均的分布的场景。

    数据可视化:

      Ignite可以与很多数据可视化工具集成,通过图表或者丰富的图形,协助对存储在分布式缓存中的数据进行分析和解释,甚至提供可操作的建议。 

       Ignite的Web控制台是一个基于Web的交互式管理工具, 功能包括:

    • 创建、下载Ignite的各种配置;
    • 从RDBMS中自动加载SQL元数据;
    • 接入Ignite集群然后执行SQL;
    • 管理和监控Ignite节点和缓存;
    • 查看堆、CPU以及其它有用的节点和缓存的指标;
  • 相关阅读:
    ExtJs之Grid
    [java]转:String Date Calendar之间的转换
    SQL Server脚本备份
    Java实现文件夹的复制(包括子文件夹与文件)
    Android webview使用详解
    zxing条码扫描横屏修改
    Genymotion的安装与eclipse配置教程
    开发中遇到的问题
    sql中COUNT()+GROUP BY +HAVING的组合使用
    由于包名与引用的库名相同导致的报错
  • 原文地址:https://www.cnblogs.com/liufei1983/p/9308904.html
Copyright © 2011-2022 走看看