Apache Ignite 和 Apache Storm 在许多方面是两种截然不同的技术——尤其是因为 Storm 有一个非常具体的用例,而 Ignite 在一个屋檐下有相当多的工具集。据我了解,Ignite 的核心是它的内存存储。建立在此之上的是其对数据局部性敏感的计算。建立在上面的是各种很酷的“玩具”。我感兴趣的是 Streaming 功能,它基本上是一个查询不断变化的内存缓存的侦听器。
如果我将滑动窗口设置为一个元组,Ignite 会像 Storm 一样提供一次一个元组的功能。数据由 Ignite 存储在内存中。Storm 不会在内存中“存储”数据,但元组当然也存储在内存中。因此,在这两种情况下,我都有流式传输,并且我在内存中有数据,并且我能够分发我的计算。
我感觉编写执行许多数据转换步骤的程序可能更容易在 Storm 中编写,因为这两种技术都是抽象的。对此有什么好说的?
第二个问题:性能怎么样?我猜想 Ignite 的数据本地化可能会给它带来优势。另一方面,我认为多个步骤可能更好地分布在 Storm 中(各种机器上的不同螺栓),而 Ignite 程序可能不会那么容易拆分。
如果我仍然想分发流(不仅仅是每个数据,还有不同机器上的步骤)。我想我必须编写多个 Ignite 流媒体,它们通过缓存进行通信,对吧?这听起来比在 Storm 中更难写(让我们回到第一个问题)。