Hazelcast 数据隔离 ("Memory Regions")

Hazelcast data isolation ("Memory Regions")

我们正在构建一个多租户应用程序,它对 regions/countries 数据保存的位置有限制。

该应用程序基于 Microsoft .Net 微服务架构,但我们共享域,尽管我们在非常低的级别上有单独的数据库,比如每个城市都有一个单独的数据库。我们不能将一个国家的数据持久化到另一个国家的数据中心。 Hazelcast 将用作分布式缓存。我找不到任何直接的方法来为 ex 配置数据隔离。就像 apache ignite 中的 "Memory Regions"。我们在 hazelcast 中有 "Memory Regions" 吗?

我需要将缓存中的数据写到各自的数据库中。我可以隔离特定于数据库实例的 part/partition 缓存吗?

如有任何帮助,我们将不胜感激。提前致谢。

我不是直接回答你的问题。恕我直言,根据我的理解,当你将数据存储在不同的集群/节点上时,仍然会有网络调用,尽管你有一些关键格式以便数据存储在同一个集群/节点中。

根据我的经验,您可以轻松地设置一个 MemoryCache 作为 System.Runtime.Caching 的一部分来存储每个节点中的数据,然后使用 Redis Pub-Sub 或 Azure 服务总线作为主干对于发布订阅。

在那种情况下,

  • 任何在缓存中更新的数据都会通过 ServiceBus/Redis 消息通知到应用程序的所有其他实例,这通常是关键。

  • 收到密钥后,每个应用程序都会清除其内部缓存,然后在下一次数据库访问时取回缓存的数据。

这种方法在多租户应用程序中更为普遍,而且故障安全且重量轻。有效负载/网络传输较少,每个 AppDomain 都有其内部内存用作缓存,通过 MemoryCache.

的不同实例支持不同区域

如果没有关于 HazelCast

的直接回复,希望这对您有所帮助

此外,您可以参考此link了解有关 Hazelcast

的一些详细信息