我们正在构建一个多租户应用程序,该数据库对数据持久存在的地区/国家/地区有限制。
该应用程序基于microsoft .Net微服务架构,但我们有共享域,尽管我们在非常低的级别有单独的DB,例如每个城市都有一个单独的DB。我们无法将一个国家/地区的数据保存在另一个国家/地区的数据中心。 Hazelcast将用作分布式缓存。我找不到任何直接的方法来配置ex的数据隔离。喜欢"记忆区域"在阿帕奇点燃。我们有"记忆区域"在hazelcast?
我需要将数据从缓存写入相应的数据库。我可以将特定于缓存的部分/分区隔离到数据库实例吗?
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:1)
我没有直接回复你的问题。恕我直言,根据我的理解,当您在不同的群集/节点上存储数据时,仍然会有网络呼叫,尽管您有一些密钥格式,以便数据存储在同一个群集/节点中。
根据我的经验,您可以轻松设置一个MemoryCache作为System.Runtime.Caching的一部分,将数据存储在每个节点中,然后使用Redis Pub-Sub或Azure Service总线作为后端发布 - 订阅。
在那种情况下,
通过ServiceBus / Redis消息(通常是密钥)将缓存中更新的任何数据通知给应用程序的所有其他实例。
收到密钥后,每个应用程序清除其内部缓存,然后将数据缓存回下一次数据库访问。
此方法在多租户应用程序中更为普遍,并且还具有故障安全性和重量轻的特点。有效载荷/网络传输较少,每个AppDomain的内部存储器都用作缓存,通过MemoryCache
的不同实例支持不同的区域。
如果没有关于HazelCast
此外,您可以参考此link了解有关Hazelcast的一些详细信息