数据注入和流计算:

  • 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以及其它有用的节点和缓存的指标;

2 ignite关键特性的更多相关文章

  1. InnoDB关键特性学习笔记

    插入缓存 Insert Buffer Insert Buffer是InnoDB存储引擎关键特性中最令人激动与兴奋的一个功能.不过这个名字可能会让人认为插入缓冲是缓冲池中的一个组成部分.其实不然,Inn ...

  2. SQL Server2014 SP2关键特性

    SQL Server2014 SP2关键特性 转载自:https://blogs.msdn.microsoft.com/sqlreleaseservices/sql-2014-service-pack ...

  3. SQL Server 2016 CTP2.3 的关键特性

    SQL Server 2016 CTP2.3 的关键特性 数据库方面的增强 Row Level Security已经支持In-memory OLTP 表.用户现在可以对内存优化表实施row-level ...

  4. SQL Server 2016 CTP2.2 的关键特性

    SQL Server 2016 CTP2.2 的关键特性 正如微软CEO 说的,SQL Server2016 是一个Breakthrough Flagship  Database(突破性的旗舰级数据库 ...

  5. JAVA语言对比C++语言的几个优点和自身的关键特性

    之所以写这篇博客不是为了比较JAVA语言和C++语言到底孰优孰劣,而是从语言本身出发进行对比总结程序编码设计上的差别.因水平有限,某些内容可能太过片面,欢迎指正和讨论. JAVA语言在设计上很好地借鉴 ...

  6. innodb关键特性之double write

    # 脏页刷盘的风险 两次写的原理机制 1.解决问题 2.使用场景 3.doublewrite的工作流程 4.崩溃恢复 # doublewrite的副作用 1.监控doublewrite负载 2.关闭d ...

  7. InnoDB的关键特性-插入缓存,两次写,自适应hash索引

    InnoDB存储引擎的关键特性包括插入缓冲.两次写(double write).自适应哈希索引(adaptive hash index).这些特性为InnoDB存储引擎带来了更好的性能和更高的可靠性. ...

  8. JAVA的关键特性

    Java团队对设计Java时的关键考虑因素进行了总结,关键特性包含以下列表: 简单性 安全性 可移植性 面向对象 健壮性 多线程 体系结构中立 解释执行 高性能 分布式 动态性 简单性 Java的设计 ...

  9. Lithium中关键特性更新

    Lithium中关键特性更新 1. Lithium特性更新概述 Lithium相对于Helium更新特性共27项,其中原有特性提升或增强13项,新增特性14项,如下表所示 特性类型 相对于Helium ...

随机推荐

  1. RpcException:No provider available for remote service异常

    出现RpcException:No provider available for remote service异常,表示没有可用的服务提供者. 解决思路: 1.检查连接的注册中心是否正确 2.到注册中 ...

  2. 【P3572】little bird(单调队列+DP)

    一眼看上去这个题就要DP,可是应该怎么DP呢,我们发现,数据范围最多支持O(NlogN),但是这种DP貌似不怎么有,所以应该是O(N)算法,自然想到单调队列优化DP. 然后我们先考虑如果不用单调队列应 ...

  3. Crashlytics功能集成

    总共分三步: 1. 将Crashlytics.framework和Fabric.framework拷贝到工程中: 2.配置工程的info.plist文件,如下: APIKey和Build secret ...

  4. java中,return和return null有什么区别吗?

    java中,return和return null有什么区别吗? 最大的区别:return;方法的返回值必须是void!return null;方法的返回值必须不是 原始数据类型(封装类除过)和void ...

  5. [转]Android:改变Activity切换方式

    overridePendingTransition(enterAnim, exitAnim); Intent intent =new Intent(this,item2.class); startAc ...

  6. iOS中,Framework和.a的打包及使用

    最近在做一个小项目,需要给客户一个demo测试,有一部分核心代码暂时不想让客户知道,就想到了打包成framework或.a库.库有两种: 静态库:.a和.framework 动态库:.tbd和.fra ...

  7. Microsoft MVC3 框架

             1. 安装MVC3框架 官网:http://www.asp.net/mvc 下载:ASP.NET MVC3 with Tools http://go.microsoft.com/fw ...

  8. 《Advanced Bash-scripting Guide》学习(五):检查一个可执行文件是否存在

    本文所选的例子来自于<Advanced Bash-scripting Gudie>一书,译者 杨春敏 黄毅 ABS书上的例子是这样的: #!/bin/bash echo hello;ech ...

  9. hdu3605最大流

    题意:给n个人m个星球,每个人适不适合去某个星球,每个星球的最大容量,看能不能满足所有人能去一个星球 题解:可以看出如果直接建边,边的个数是1e5左右的,这样时间肯定会爆掉,那么我们考虑用二进制状态压 ...

  10. pandas 中文快速查询手册

    本文翻译自文章: Pandas Cheat Sheet - Python for Data Science ,同时添加了部分注解. 对于数据科学家,无论是数据分析还是数据挖掘来说,Pandas是一个非 ...