在一个 Apache Ignite 节点中支持多个环境

Posted

技术标签:

【中文标题】在一个 Apache Ignite 节点中支持多个环境【英文标题】:Support multiple environments in one Apache Ignite node 【发布时间】:2020-06-30 12:26:36 【问题描述】:

目前我们使用 Apache Ignite.NET 瘦客户端来缓存不同的数据集。 对于每个数据请求,我们使用通过 IIgniteClient.CreateCache() 方法创建的单独缓存。 一个缓存包含一组具有相同属性的实体,应在到期后独立于其他缓存删除。

问题在于,在生产环境中,我们希望让多个应用程序(环境)实例与一个 Apache Ignite 实例一起工作。每个应用程序实例都应该能够使用与其他应用程序的缓存相同的键来创建缓存。因此,缓存键仅在一个应用程序实例中是唯一的。

有没有办法在 Apache Ignite 中独立存储来自不同环境的缓存? 例如,在 Redis 中,不同的数据库具有唯一的编号。

我尝试使用 DBeaver 连接到缓存并看到一个“Ignite”数据库,每个缓存有几个 sql 模式,每个模式中有一个表。 我可以在一个 Apache Ignite 节点中创建多个数据库吗?

目前我看到的仅有 2 个解决方案:

    为每个缓存键添加环境前缀 在一台机器上为每个环境托管多个 Apache Ignite 服务实例。

【问题讨论】:

为什么不创建不同名称的缓存?喜欢$"prefix_CacheName" 我建议尽可能部署多个 ignite 实例。这与使用常规数据库相同,您需要切换连接字符串。尽管您可能希望使用 NodeFilter 并以其他方式过滤缓存。 【参考方案1】:

不,Apache Ignite 没有“数据库”的概念。假定它用于单租户。如果您不关心安全性,则可以使用缓存名称的前缀等。

【讨论】:

以上是关于在一个 Apache Ignite 节点中支持多个环境的主要内容,如果未能解决你的问题,请参考以下文章

Apache Zeppelin 与 Ignite 集成时出现“无法启动 Ignite 节点”错误

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

Apache Ignite 容错

无法在现有Apache Ignite单节点集群中创建缓存

获取apache ignite缓存中的数据行数少于实际行数

apache ignite系列:分布式计算