Hazelcast数据隔离("内存区域")

时间:2017-09-12 11:52:03

标签: multi-tenant hazelcast regions

我们正在构建一个多租户应用程序,该数据库对数据持久存在的地区/国家/地区有限制。

该应用程序基于microsoft .Net微服务架构,但我们有共享域,尽管我们在非常低的级别有单独的DB,例如每个城市都有一个单独的DB。我们无法将一个国家/地区的数据保存在另一个国家/地区的数据中心。 Hazelcast将用作分布式缓存。我找不到任何直接的方法来配置ex的数据隔离。喜欢"记忆区域"在阿帕奇点燃。我们有"记忆区域"在hazelcast?

我需要将数据从缓存写入相应的数据库。我可以将特定于缓存的部分/分区隔离到数据库实例吗?

非常感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

我没有直接回复你的问题。恕我直言,根据我的理解,当您在不同的群集/节点上存储数据时,仍然会有网络呼叫,尽管您有一些密钥格式,以便数据存储在同一个群集/节点中。

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

在那种情况下,

  • 通过ServiceBus / Redis消息(通常是密钥)将缓存中更新的任何数据通知给应用程序的所有其他实例。

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

此方法在多租户应用程序中更为普遍,并且还具有故障安全性和重量轻的特点。有效载荷/网络传输较少,每个AppDomain的内部存储器都用作缓存,通过MemoryCache的不同实例支持不同的区域。

如果没有关于HazelCast

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

此外,您可以参考此link了解有关Hazelcast的一些详细信息