为ASP.NET Core应用程序选择理想的多租户架构

时间:2018-09-21 09:10:03

标签: azure asp.net-core database-design architecture multi-tenant

我目前正在开发将在Azure上托管的应用程序。因为没有一个实例可以为每个客户运行(您会明白为什么),所以它将成为一个多租户解决方案。

说实话:我只是开始收集Web应用程序的经验,因此,如果我的问题的答案很明显,我深表歉意。

问题:考虑以下假设,哪种多租户概念最适合我的应用程序

  • 许多租户(理想情况是数百甚至更多,我们将看到...)
  • 由每个租户组成的少量用户帐户(在大多数情况下,<5-10,最多满200个租户)
  • 处理大部分数据(<20个表中的<100个条目)
  • 每天
  • 数据更改发生几次(每个数据约<50个更改) 每天的用户)
  • 应用程序需要保持响应状态(当然)

我的想法:

  1. 每个租户的数据库:没有意义,因为不会使用数据库 很多,因此根本不符合成本效益
  2. 每租户表格:可能是一个很好的解决方案,猜想这应该扩展 还不错吗?
  3. 实体中的租户列:缩放可能会出现问题,对吧?可能 对租户ID进行收费时更好吗?

我非常感谢您的帮助和一些“共同的经验”,以便选择不太痛苦的路径。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

根据我在Azure上的经验,我建议使用以下选项选择CosmosDB:

  • 分区集合:如果租户分布均匀且有类似要求
  • 每个租户的集合:如果某些租户有规模或特殊要求
  • 将前两者混在一起。

Cosmos DB具有很多好处,例如分片,全局分布,性能,一致性模型的自由性以及良好的sql支持。