`
m635674608
  • 浏览: 5032237 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Apache Ignite(一):简介以及和Coherence、Gemfire、Redis等的比较

 
阅读更多

1.Ignite简介

Apache Ignite 内存数据组织框架是一个高性能、集成化和分布式的内存计算和事务平台,用于大规模的数据集处理,比传统的基于磁盘或闪存的技术具有更高的性能,同时他还为应用和不同的数据源之间提供高性能、分布式内存中数据组织管理的功能。

 

2.Ignite历史

Ignite来源于尼基塔·伊万诺夫于2007年创建的GridGain系统公司开发的GridGain软件,尼基塔领导公司开发了领先的分布式内 存片内数据处理技术-领先的Java内存片内计算平台,今天在全世界每10秒它就会启动运行一次。他有超过20年的软件应用开发经验,创建了HPC和中间 件平台,并在一些创业公司和知名企业都做出过贡献,包括Adaptec, Visa和BEA Systems。尼基塔也是使用Java技术作为服务器端开发应用的先驱者,1996年他在为欧洲大型系统做集成工作时他就进行了相关实践。
2014 年3月,GridGain公司将该软件90%以上的功能和代码开源,仅在商业版中保留了高端企业级功能,如安全性,数据中心复制,先进的管理和监控等。 2015年1月,GridGain通过Apache 2.0许可进入Apache的孵化器进行孵化,很快就于8月25日毕业并且成为Apache的顶级项目,9月28日即发布了1.4.0版,2016年1月 初发布了1.5.0版,应该说发展、迭代速度非常快。该技术相关资料较少,但确是一个很有潜力的技术,解决了大规模、大数据量、高并发企业级或者互联网应 用面临的若干痛点。

 

3.Ignite和Hadoop以及Spark的关系

Ignite和Hadoop解决的是不同的问题,即使在一定程度上可能应用了类似的底层基础技术。Ignite是一种多用途,和OLAP/ OLTP内存中数据结构相关的,而Hadoop仅仅是Ignite原生支持(和加速)的诸多数据来源之一。
Spark 是一个和Ignite类似的项目。但是Spark聚焦于OLAP,而Ignite凭借强大的事务处理能力在混合型的OLTP/ OLAP场景中表现更好。特别是针对Hadoop,Ignite将为现有的Map/Reduce,Pig或Hive作业提供即插即用式的加速,避免了推倒 重来的做法,而Spark需要先做数据ETL,更适合新写的分析应用。

 

4.和类似技术的比较

在Ignite以前,大规模、大数据量、高并发企业级或者互联网应用为了解决数据缓存、降低数据库负载、提高查询性能等突出问题,很多采用了 Hazelcast或者Oracle Coherence或者GemFire(比如12306网站)或者目前应用越来越广泛的Redis等缓存技术,本文对这些相关的技术做了简单的比较,基本 内容来源于其官方网站,进行了翻译整理,方便更多的人了解他。

 

4.1.Ignite和Hazelcast

Apache Ignite和Hazelcast都提供了富数据网格的特性,解决了可扩展的分布式集群环境下在内存中对数据进行缓存和分区的问题。
Ignite和Hazelcast在缓存的方式上是有很多不同的,同时支持事务和数据的查询,下面的表格列出了一些主要的不同点,这些都是我们在选择内存数据网格产品时需要特别关注的。

序号 对比项目 Apache ignite Hazelcast
1 聚焦于开源 Ignite还在不断增加和增强开源版本的功能集,最新的主版本还增加了对C++以及.Net/C#的支持,和Node.js的集成也会很快到来,而且还增加了更快的无死锁事务。 Hazelcast的开发聚焦于收费的企业版中,比如堆外存储以及持续查询等的特性只在收费版中才提供,SSL加密的功能已经从开源版中删除,只在收费版中提供。
2 JCache(JSR107) Ignite完全兼容JCache (JSR 107)缓存规范 Hazelcast完全兼容JCache (JSR 107)缓存规范
3 堆外存储 Ignite根据用户配置支持将数据存储在堆内或者堆外 Hazelcast仅在商业版中提供堆外存储的功能
4 堆外索引 只要配置了堆外存储,Ignite就会在堆外存储索引(为了不影响使用堆内内存的用户应用。) 不支持
5 持续查询 Ignite支持容错的持续查询,即允许客户端和服务器端订阅数据变化的持续通知 Hazelcast仅在商业(收费)版中提供持续查询的功能。
6 SSL加密 Ignite支持SSL/TLS加密,即允许所有的客户端和服务端通过加密的SSL或者TLS协议进行通信。 Hazelcast将SSL加密支持从开源版中删除,目前仅在商业(收费)版中支持该功能。
7 SQL查询 Ignite支持完整的SQL(ANSI-99)语法以查询内存中的数据 Hazelcast仅对SQL提供有限的支持(只有几个关键字)
8 关联查询 Ignite支持完整的SQL关联,包括跨多个缓存的关联,比如:select * from A a, B b where a.b_id = b.id Hazelcast不支持任何的关联查询,不管用不用SQL,如果需要,开发者需要手工处理多个查询的结果。
9 查询一致性 Ignite提供完整的查询一致性,即查询是在一个特定的快照中执行的,查询开始之后的数据更新不影响查询的结果。 Hazelcast查询是不一致的,可能查询结果的一部分将看到某些更新,而另一部分则不会。
10 查询容错 Ignite查询是容错的,即查询结果始终是一致的不会受到集群拓扑发生变化的影响,比如节点的加入,退出或崩溃。 Hazelcast查询是不容错的,即查询结果在集群拓扑发生变化时不一致,而数据正在后台重新平衡。
11 数据一致性 Ignite支持内存中数据的原子的和事务的一致性,不管数据存储在分区或者复制缓存中。 Hazelcast仅在分区缓存中支持原子的和事务的一致性,而存储在复制缓存中的数据没有任何事务一致性的保证。
12 无死锁事务 Ignite支持无死锁乐观事务,他不会获得任何锁,用户也不用再担心锁顺序,这样的事务同时还提供了更好的性能。 Hazelcast中必须注意按顺序地更新数据以避免死锁,这往往是不可能的,尤其是在大项目中。
13 事务化EntryProcessor Ignite支持事务化EntryProcessor,他可以在服务端在一个事务中执行并置的业务代码。 在Hazelcast中无法使用EntryProcessor或者在一个事务中执行业务代码。
14 Web会话集群化 Ignite为所有已知的应用服务器提供Web会话的缓存和集群化支持。 Hazelcast仅在商业(收费)版中提供Web会话集群化支持。
15 计算网格 Ignite提供集群内的MapReduce、ForkJoin和基本的分布式lambda处理,包括作业的负载平衡,容错,检查点,计划任务等。 Hazelcast仅支持MapReduce和集群内的分布式随机作业。
16 流式数据 Ignite支持内存内的流处理,包括对流式数据的滑动窗口的查询和维护支持。 Hazelcast不对流处理提供任何的支持。
17 服务网格 Ignite可以使用户方便地将其服务集群化,包括支持各种集群单例。 Hazelcast管理的服务不提供单例集群的功能。
18 .Net/C#支持 Ignite为.NET/C#用户提供了完整的内存组织API,包括执行C#闭包,C#缓存,事务以及查询API,原生C# CacheStore API等功能。 Hazelcast只为.NET/C#提供了有限的客户端API。
19 C++支持 Ignite为C++用户提供了完整的内存组织API。 Hazelcast只为C++提供了有限的客户端API。
20 Node.js支持 Ignite将为Node.js用户提供客户端API支持。 Hazelcast不支持Node.js。

 

4.2.Ignite和Coherence

Apache Ignite和Oracle Coherence都提供了富数据网格的特性,解决了可扩展的分布式集群环境下在内存中对数据进行缓存和分区的问题。
Ignite和Coherence在缓存和事务的方式上是有很多不同的,同时支持数据的查询,下面的表格列出了一些主要的不同点,这些都是我们在选择数据网格产品时需要特别关注的。

序号 对比项目 Apache Ignite Oracle Coherence
1 开源和闭源 Ignite是一个Apache项目,并且还在不断的增加和增强开源版的功能集,最新的主版本提供了对C++、.NET/C#的支持,对Node.js的支持也会很快到来。 Coherence是一个Oracle的专有软件,并不提供开源和免费的版本。
2 JCache (JSR 107) Ignite完全兼容JCache (JSR 107)缓存规范 Coherence完全兼容JCache (JSR 107)缓存规范
3 堆外存储 Ignite根据用户配置支持将数据存储在堆内或者堆外 Oracle Coherence对将数据存储在堆外向开发者提供了有限的选项。
4 堆外索引 只要配置了堆外存储,Ignite就会在堆外存储索引(为了不影响使用堆内内存的用户应用。) 不支持
5 SQL查询 Ignite支持完整的SQL(ANSI-99)语法以查询查询内存中的数据 不支持
6 关联查询 Ignite支持完整的SQL关联,包括跨多个缓存的关联,比如:select * from A a, B b where a.b_id = b.id Coherence不支持任何的关联查询,不管用不用SQL,如果需要,开发者需要手工处理多个查询的结果。
7 ACID事务 Ignite提供了每台服务器每秒成千上万事务的优异性能。 Coherence因为性能低不建议使用事务。
8 分层存储 Ignite支持分层存储模型,数据可以在堆内堆外以及交换空间内存储和移动,上层将提供更多的存储能力,当然延迟也会增加。 不支持
9 流式数据 Ignite提供内存内流计算,包括支持流式数据的滑动窗口的维护和查询 不支持
10 配置 Ignite支持通过Java Bean以及原生的Spring XML集成对系统进行配置,同时也支持通过代码对系统进行方便配置的能力。 Coherence通过专有的XML格式文件进行配置,不支持通过代码进行配置。

 

4.3.Ignite和Gemfire

Apache Ignite和Pivotal Gemfire都提供了富数据网格的特性,解决了可扩展的分布式集群环境下在内存中对数据进行缓存和分区的问题。
Ignite和Gemfire在缓存和事务的方式上是有很多不同的,同时支持数据的查询,下面的表格列出了一些主要的不同点,这些都是我们在选择数据网格产品时需要特别关注的。

序号 对比项目 Apache Ignite Pivotal Gemfire
1 开源和闭源 Ignite是一个Apache项目,并且还在不断的增加和增强开源版的功能集,最新的主版本提供了对C++、.NET/C#的支持,对Node.js的支持也会很快到来。 Gemfire是Pivotal的专有软件。
2 JCache (JSR107) Ignite数据网格是JCache(JSR107)规范的一个实现,该API为数据访问提供了简单易用、但是功能强大的API。 Gemfire没有实现JCache,使用专有的API。
3 堆内和堆外 Ignite根据用户配置支持将数据存储在堆内和堆外。 Gemfire不支持将数据存储在堆外
4 SQL查询 Ignite支持完整的SQL(ANSI-99) 查询语法以查询内存中的数据。 Gemfire不支持标准的SQL语法,但是他提供了自己的叫做OQL的对象查询语言。
5 关联查询 Ignite支持完整的SQL关联,包括跨多个缓存的关联,比如:select * from A a, B b where a.b_id = b.id Gemfire不支持任何的跨区或者跨缓存的关联查询,如果需要,开发者需要手工处理多个查询的结果。
6 跨分区事务 Ignite支持跨分区事务,事务可以在整个集群中缓存的所有分区中执行。 Gemfire不支持跨越多个缓存分区或者节点的事务。
7 分层存储 Ignite支持分层存储模型,数据可以在堆内堆外以及交换空间内存储和移动,上层将提供更多的存储能力,当然延迟也会增加。 不支持
8 流式数据 Ignite提供内存内流计算,包括支持流式数据的滑动窗口的维护和查询 不支持
9 配置 Ignite支持通过Java Bean以及原生的Spring XML集成对系统进行配置,同时也支持通过代码对系统进行方便配置的能力。 Gemfire通过专有的XML格式文件进行配置,不支持通过代码进行配置。
10 部署 Ignite节点是对等的,并且在启动时自动加入集群(不需要任何locator服务器)。 Gemfire需要启动和维护一个locator服务器,以便控制节点的加入和退出。

 

4.4.Ignite和Redis

Apache Ignite和Redis都提供了分布式缓存的功能,但是每个产品提供的功能特性是非常不同的。Redis主要是一个数据结构存储,但是Ignite提供了很多内存内的分布式组件,包括数据网格、计算网格、流计算,当然也包括数据结构。
Ignite是一个内存数据组织,并且提供了更多的功能,无法进行一个一个对应功能特性的比较,但是我们仍然能对一些数据网格功能进行对比。

序号 对比项目 Apache Ignite Redis
1 JCache (JSR 107) Ignite完全兼容JCache(JSR107)缓存规范 不支持
2 ACID事务 Ignite完全支持ACID事务,包括乐观和悲观并发模型以及READ_COMMITTED, REPEATABLE_READ和SERIALIZABLE隔离级别。 Redis提供了客户端乐观事务的有限支持,在并发更新情况下,客户端需要手工重试事务。
3 数据分区 Ignite支持分区缓存,类似于一个分布式哈希,集群中的每个节点都存储数据的一部分,在拓扑发生变化的情况下,Ignite会自动进行数据的再平衡。 Redis没有提供分区,但是提供了副本的分片,使用分片非常死板,并且不管是客户端还是服务端,每当拓扑发生变化时都需要一系列相当复杂的手工步骤。
4 全复制 Ignite支持缓存的复制,集群中的每个节点的每个键值对都支持。 Redis不提供对全复制的直接支持。
5 原生对象 Ignite允许用户使用自己的领域对象模型并且提供对任何Java/Scala, C++和.NET/C#数据类型(对象)的原生支持,用户可以在Ignite缓存中轻易的存储任何程序和领域对象。 Redis不允许用户使用自定义数据类型,仅支持预定义的基本数据结构集合,比如Set、List、Array以及一些其他的。
6 客户端侧(近)缓存 Ignite提供对于最近访问数据的客户端侧缓存的直接支持。 不支持
7 (服务端侧)并置处理 Ignite支持在服务器端靠近数据以并置的方式直接执行任何Java, C++和.NET/C#代码。 Redis通常没有任何并置处理的能力,服务器端基本只支持LUA脚本语言,服务器端不直接支持Java, .NET,或者C++代码执行。
8 SQL查询 Ignite支持完整SQL(ANSI-99)语法以查询内存中的数据。 Redis不支持任何查询语言,只支持客户端缓存API。
9 持续查询 Ignite提供对客户端和服务器端持续查询的支持,用户可以设置服务器端的过滤器来减少和降低传输到客户端的事件数量。 Redis提供客户端基于键的事件通知的支持,但是他不提供服务器端的过滤器,因此造成了在客户端和服务器端中更新通知网络流量的显著增加。
10 数据库集成 Ignite可以自动集成外部的数据库-RDBMS, NoSQL,和HDFS。 Redis无法与外部数据库集成。

 

 

http://my.oschina.net/liyuj/blog/516836?p=1

http://vschart.com/compare/gemfire/vs/redis-database

分享到:
评论

相关推荐

    基于Apache Ignite大数据场景应用

    Apache Ignite作为一个基于内存的数据网格,能够提供高性能的数据处理能力,成为解决该问题的不二之选。 在基于Ignite的升级方案中,首要解决的是元数据结构问题。由于业务系统动态接入,对账平台在设计开发阶段...

    Apache Ignite(V2.3.0)中文开发手册.pdf

    Apache Ignite是一款开源的内存计算平台,它提供了一系列高性能的数据处理服务,包括分布式数据存储、计算、服务以及数据流处理等。在Ignite中文开发手册中详细介绍了其核心概念、架构组件以及各种功能的使用方法。...

    高性能Apache Ignite完整版

    6. **流处理**:Apache Ignite还支持实时流数据处理,允许用户定义流数据的处理逻辑,进行实时分析和决策。 7. **网格计算**:Ignite的网格计算功能允许开发者在内存中执行大规模的并行计算,这对于大数据分析和...

    apache ignite实现mybatis二级缓存所需要的jar包

    Apache Ignite是一款开源的内存数据网格系统,它提供了一个分布式内存计算平台,支持数据库缓存、实时分析以及复杂事件处理等功能。在MyBatis中,二级缓存是提高数据库访问性能的重要手段,它可以将SQL查询结果存储...

    4-6+Apache++Ignite在产险大数据中的实践.pdf

    * 监控和维护:Apache Ignite需要监控和维护,以确保数据的一致性和完整性。 知识点7: Apache Ignite的应用场景和前景 Apache Ignite的应用场景非常广泛,例如大数据处理、实时数据分析、数据挖掘、机器学习等。...

    spring-boot-ignite:展示如何将apache ignite与spring boot集成,以及使用持久性内存功能和sql查询来覆盖内存缓存中的ign的案例

    展示如何将apache ignite与spring boot集成在一起,以及使用持久性内存功能和sql查询来覆盖内存缓存中的ign的案例 将Spring Boot与Apache Ignite集成 如何启用和使用Apache Ignite的持久性持久内存功能,该功能可以...

    apache-ignite-2.15.0-bin.zip

    1. **内存数据网格**:Apache Ignite能够在内存中存储大量数据,通过数据分区和复制策略确保数据的可用性和一致性。这极大地提高了数据读写速度,实现了亚毫秒级的响应时间。 2. **分布式计算**:Ignite支持在集群...

    Apache Ignite内存计算介绍.pdf

    Apache Ignite内存计算介绍.pdf

    High Performance in-memory computing with Apache Ignite.pdf

    Processing events & streaming data, integrate Apache Ignite with other frameworks like Storm, Camel, etc. Using distributed computing for building low-latency software. Developing distributed ...

    Apache Ignite——新一代数据库缓存系统

    Apache Ignite是一款新一代的数据库缓存系统,它为快速发展的数据存储和处理提供了显著的解决方案。Ignite支持RDBMS、NoSQL和HDFS等多种底层存储系统,以应对大规模数据的存储挑战。 随着数据量的持续增长,如何...

    Apache Ignite(V1.5.0)中文开发手册

    Apache Ignite是一个开源的分布式数据管理平台,它为用户提供了一个高性能、集成化和分布式的内存计算框架。与传统的依赖磁盘存储的数据库系统相比,Apache Ignite能够显著提升大数据集上的事务处理和计算性能,性能...

    High Performance in-memory computing with Apache Ignite-Leanpub(2017).pdf

    We hope that High-performance in-memory computing with Apache Ignite will be the go-to guide for architects and developers: both new and at an intermediate level, to get up and to develop with as ...

    High Performance in-memory computing with Apache Ignite.epub

    High Performance in-memory computing with Apache Ignite.epub

    Apache Ignite内存数据组织 v2.9.1-源码.zip

    Apache Ignite是一款高性能、分布式内存数据网格系统,它支持数据缓存、计算网格、服务网格以及流处理等多种功能。在v2.9.1版本中,我们可以通过源码深入理解其内部实现机制和优化策略。这个压缩包包含了Ignite源码...

    ignite-3:Apache Ignite 3

    Apache Ignite 3 是一个高性能、分布式内存数据平台,它主要设计用于解决大规模数据处理的挑战,尤其是在实时分析和计算方面。Ignite 提供了多种关键功能,包括 SQL 数据库、分布式缓存、流处理以及计算网格。在 ...

    High Performance in-memory computing with Apache Ignite

    根据提供的文件信息,我们可以了解到关于“High Performance in-memory computing with Apache Ignite”这本书的内容以及Apache Ignite的基础知识点。下面将详细介绍这些知识点。 首先,我们来解释Apache Ignite是...

    apache-ignite 安装包 自用

    Apache Ignite是一款开源的内存数据网格(In-Memory Data Grid,IMDG)系统,由Apache软件基金会维护。它提供了一种高性能、高可用性、分布式的数据存储和计算解决方案,广泛应用于缓存、实时分析、流处理等场景。...

    the-apache-ignite-book:The Apache Ignite Book的所有代码示例,脚本和更深入的示例。 包括Apache Ignite 2.6或更高版本

    阿帕奇点燃书 这是的代码存储库(代码示例,脚本和更深入的示例)。 命名约定 本书中的每一章在存储库... 另一方面,Apache Ignite可用于加速现有的Relational和NoSQL数据库,处理事件和流数据或以容错方式开发微服

    apache-ignite-2.8.0-src.zip

    Apache Ignite是一款开源的内存数据网格(In-Memory Data Grid, IMDG)系统,由Apache软件基金会维护。它提供了一种高性能、高可用性、低延迟的数据存储和处理解决方案,适用于构建分布式应用和服务。Ignite的主要...

    Apache Ignite内存数据组织 v2.16.0.zip

    Apache Ignite是一款高性能、分布式内存计算平台,常用于构建数据密集型应用,提供数据库缓存、实时分析以及复杂事件处理等功能。在版本2.16.0中,它继续优化了内存数据组织和管理,提升了系统的性能和稳定性。以下...

Global site tag (gtag.js) - Google Analytics