在apache中存储大小为100 MB的Blob点燃

时间:2018-03-12 22:14:48

标签: apache ignite

我们需要一个持久的缓存来存储blob,如下所示 1. blob可以是1 MB到1 GB。 2.我们不必索引博客文档。 3.如果节点发生故障,缓存条目应该是持久的。所以我们需要复制和分区。 4.应该有一个后写挂钩,以便我们可以使用外部数据存储来写入数据。 5.交易非常高。我们希望运行100多个节点。

有人可以评论要求编号1.我担心Apache Ignite是否也是正确的选择。

2 个答案:

答案 0 :(得分:2)

我不认为直接存储这么大的blob会表现得很好。我建议将它们分成多个块,比如每个1MB,然后使用putAll(...)方法将它们存储在IgniteCache中。您应该确保使用affinity collocation将所有块最终放在同一个分区中。

对于后写功能,您应该配置CacheStore。如果您遵循上面的设计,那么它将导致调用CacheStore.writeAll(...)方法。您应该插入自己的CacheStore,它将在“writeAll(...)”方法中正确地重新组合blob并将其保存到数据库中。

更多关于CacheStore,后写和第三方持久性的信息: https://apacheignite.readme.io/docs/3rd-party-store

答案 1 :(得分:0)

回复较晚,但感觉您存储的Blob也可以视为文件。在这种情况下,您可以考虑使用Ignite文件系统功能。

在我参与的一个项目中,我们曾经使用文件放置位置来在服务之间共享大型Blob数据:这些Blob的大小范围从几千字节到0.5 TB。 特别是许多小文件和大文件操作的结合会导致问题。但是,由于我们可以控制Blob的序列化方式,因此我们决定使用IGFS来处理共享Blob。

性能比我们使用的共享文件位置更好,但这可能仅部分是由于IGFS本身造成的:统一的写入和访问Blob的方式也有所帮助(环境是Windows和Windows Server 2003的混合集, Linux服务,无论如何,这对于传统的文件共享来说还是有点令人头疼。)

可以在以下位置找到有关IGFS功能的良好起点:
https://ignite.apache.org/features/igfs.html

我希望这会有所帮助。