作者介绍:Redfox
原文链接:原文链接
名词解释:
Grid vs Cluster:Grid 强调环境的异构性,系统中同一功能的组件可以有不同的配置,Cluster 强调环境的同构型,系统中同一功能的组建配置相差不大。
IMDG(内存数据网格):一种数据全分布在多个服务器内存里面存储的数据结构;内存作为数据存储;分布式存储网络;对象存储模式(通常采用K/V模式);服务节点都是Active状态;服务节点需要经常性增加或者减少(Hazelcast、Terracotta Enterprise Suite; Gemfire、Coherence、Gigaspaces XAP Elastic Caching Edition、IBM eXtreme Scale、JBoss Infinispan)。
Data Fabric:将数据孤岛(不同业务系统之间,以及事务性数据库、数据仓库、数据湖、日志,半结构化和非结构化数据源、应用存储、社交媒体存储和云存储)之间数据全部连接打通形成通畅的数据通路,以方便应用程序之间连接和数据共享的方式 (NetApp、MapR等)。
Data Lake:所有数据存储的数据湖。
1. Ignite 发展历程


2. IMDG 技术架构


IMDG vs IM Cache(Redis): 用途不同,IMDG是独立工作的,IM Cache是不能独立工作的,IMDG架构的系统也可以用来做Cache,IM Cache的系统也可以用来做IMDG;IMDG通常带一定的计算分析能力,IM Cache一般只做数据存储。
IMDG vs IMDB:IMDG 一般直接使用K/V存储来存储对象,IMDB 一般用行式存储结构优化行存储;IMDG 通常直接对编程语言来开放接口,IMDB 一般用SQL接口和应用程序交互;IMDG 应用场景是实时分析的程序、web程序等灵活性较高的程序,IMDB 适合ERP、CRM 等需要严格范式的程序,IMDG通常是横向扩展的,而IMDB则不是。
3. Ignite 应用场景
Ignite 是一个以内存为中心的分布式数据库、缓存系统和计算平台,目的是用来支持数据密集的程序开发,ignite可以每秒支持上百万的事务和PB级的内存数据管理。
-
纯内存存储:
- 同时支持数据持久化到本地磁盘
-
多模数据库:
- 对内存分页管理,使用K/V存储结构将数据存储到内存页中,支持SQL语法操作数据
-
事务型数据库:
- 在K/V层支持事务,未来在SQL层会支持事务
-
微服务平台架构:
- 拥有在同一套计算资源上实现存储和业务处理服务的能力,所以ignite可以直接支持微服务架构
-
内存数据存储网络:
- 大数据加速器、Web服务会话管理、Spring 缓存、集群管理
-
高吞吐量的ACID事务处理
-
缓存即服务
-
数据库缓存
-
实时欺诈检测
-
IoT项目中的复合事件处理
-
实时分析
-
HTAP程序
-
快速数据处理或者lambda架构中的数据流处理
4. Ignite 应用场景技术架构
4.1 数据缓存与高吞吐率事务处理

数据缓存
- 应用程序无需重新编写:支持ORM、作为Mybatis、Hibernate的二级缓存
- 除作为应用程序缓存,也可以作为BPM、ESB的缓存(BPM存储业务应用的上下文在数据库中,ESB在应用程序之间共享和传输数据与状态)
高吞吐率事务处理
- 网购(电商平台)、信用卡、借记卡、广告营销等通常需要高吞吐率事务处理
- Ignite可以用本地持久化来保存提交的事务,以提高运行时的事务处理性能
4.2 HTAP

OLTP+ETL+OLAP
- 系统组件多,维护成本高
- 为了发挥历史数据的作用,OLAP系统要存储很多历史数据进行分析,所以存储成本越来越高
- 难以做到实时分析(因为数据要从OLTP系统传输到OLAP系统)


Ignite HTAP
- 内存数据库可以用来做OLTP事务,数据分析可以利用Ignite的持久化功能进行获取和分析
- 在多种数据分析、数据挖掘功能的情况下,Ignite可以同步持久化到Cassandra系统中,由Cassandra来提供分析功能,而且这中间也是没有ETL时延的
5. FastData & BigData
5.1 FastData

BigData + Event Proccesing
- 弹性可扩展以及容错的方式来处理流式数据
- Ignite支持以规则引擎模式处理数据和流引擎模式处理数据
- Ignite支持Spark RDD和DataFrame API,这样不仅可以处理流数据中的关联关系和发现数据中的一些模式,同时也可以加快数据处理效能
5.2 BigData Acceleration

BigData Acceleration
- Ignite提供了多种有用的组件来支持Hadoop的MapReduce任务运行在内存里面以及一些文件系统操作,它支持自动将一些必要的库和程序跨JVM在内存里面发布,可以将任务启动时间缩小到毫秒级
- 因为Ignite里面也集成了MapReduce的执行引擎,所以MapReduce程序可以不用修改任何代码即可在Ignite上运行,这个特别适合已经建立好了Hadoop环境的机构
5.3 Legacy Lambda

Legacy Lambda
- 数据传送两份,一份作为批处理,一份作为实时处理(流处理/快速处理),不更改原始数据,批处理程序提前将需要查询的数据进行预处理变成批量视图,实时处理程序处理实时数据弥补批处理延时过高的不足形成实时视图,查询结果汇集批量视图和实时视图
- 批处理:一次写入,多次大块读;实时处理: 随机读写,增量计算;服务层:随机读,批量计算和批量写入操作
- 批处理:Hadoop&Spark,实时处理:Storm;服务层:Hive
5.4 Ignite Lambda

Ignite Lambda
- 使用Ignite作为实时处理或者查询处理部分任务
- 批处理:Hadoop&Spark,实时处理:Ignite;服务层:Hive&Ignite
6. Web 加速服务 和 CaaS

web加速服务
- 大流量网站服务程序前端通常用负载均衡将访问压力均衡到多个web服务器上,如果web服务器宕机,那么这个web服务器上的访问需要重建连接和访问会话,增加后端访问压力和降低用户访问体验,使用ignite集群保存会话状态和用户状态信息,在web服务宕机时,无需重建会话,0切换时延

CaaS(Cache as a service)
- 企业使用多种加速方案来对应用程序和服务(ERP、CRM、BPM等)进行加速,导致企业内加速系统多种多样
- 使用Ignite作为加速系统,提供丰富的访问接口,兼容各种加速方案,可以作为统一的加速引擎,Ignite将缓存层从应用程序中剥离出来,提供统一的可管理的加速层
7. 微服务 & 机器学习

Ignite 微服务
- 业务逻辑和数据部署在同一个节点上,可以降低数据在数据库和应用程序之间的数据传输延迟
- 运行一个轻量级的java线程可以使用相同的JVM
- 提供自动的容错服务机制
- 降低组织机构发布一个新服务的时间

机器学习
- 支持对实时更新的数据进行深度学习和机器学习
- 支持数据从本地获取,以提供高性能计算算法的实现
- 分布式线性代数运算
- 预置的深度学习和机器学习算法:K-Means、Regressions、决策树、随机森林等
8. 地理信息 & 集群管理
Ignite
- 高吞吐率、可扩展、容错的存储和查询地理数据的系统
- 数据类型支持:点描述、坐标等
- 测量函数:多边形、区域、长度等
- 索引:相似索引、无锁索引
- 空间联合:支持cache之间的联合分析和查询
集群管理
- 高可用支撑,有节点损坏不影响系统服务
- 发现节点以及对集群内的节点进行群组划分
- 分布式图计算
- 分布式锁和分布式计数
9. Ignite 技术架构与技术特征

-
计算网格
-
服务网格
-
SQL网格
-
大数据加速器
-
流计算网格
-
机器学习
-
持久化内存
-
第三方持久化
-
ORM支持
10. Ignite 核心技术与技术特征
编程语言:java & C++
Java开发框架:spring
SQL引擎: H2
全文检索:Apache lucence
多种语言接口支持:JDBC、ODBC、.Net、C++、PHP
弹性扩展: 支持水平扩展到成千上万的节点
持久化: 支持使用磁盘来持久保持数据,可以防止掉电丢失数据和降低数据保护成本
SQL支持: 支持ANSI SQL-99标准,支持在海量数据上运行SQL、支持水平扩展、支持分布式SQL和容错
去中心化: 无单点故障,系统中所有节点相似,数据多副本存在
容错:数据自动分布到多节点上,宕机节点可感知被自动替换
二级缓存:ignite可以完美支持Hibernate、Mybatis的二级缓存,支持在多个用户session之间共享数据
缓存即服务: ignite支持在多个应用程序之间或者多个部门之间共享数据
Spark应用程序之间共享状态:支持在spark多个job和多个程序之间共享RDD 或者 DataFrame
分布式计算:提供简单的API让用户编写分布式计算程序获得高性能,分布式的服务框架可以让用户很容易开发微服务程序
流计算: 支持可扩展的、容错的处理流式数据
第三方持久化: 可持久化保存数据到RDBMS,甚至NoSQL数据库如MongoDB和Cassandra
插件系统: 支持用户编写插件修改ignite的核心功能,如用户认证系统等
11. 功能特性对比
Ignite和其它系统相比最重要的特征就是提供的功能多,开发方便灵活,持久化,服务端脚本开发
Ignite vs Hazalcast vs cassandra

Ignite vs Tarantool





