人们是否有使用 Django 创建多租户应用程序的常见模式。内置的“站点”框架似乎是一种选择。是否还有其他方法取得了成功?
rstocker99
问问题
4179 次
2 回答
9
假设您为每个站点实例提供了一个唯一的表,那么使用站点框架对于为“租户”提供安全保证大有帮助。
另一方面,如果您有少量租户,这将是一个很大的麻烦,并且您将浪费大量服务器资源,因为您将需要每个客户至少一个服务器进程,即使他们没有使用系统。如果您有大量租户,则不会那么麻烦,因为无论您采用何种方法,您都将被迫自动化解决方案。
将租户外键放入几乎所有模型中都可以正常工作,并且 Django 的 ORM 可以轻松(更容易?)使用自定义管理器来实施安全性。如果您开始受到大量用户的影响,那么缺点就是性能,因为没有简单的方法来扩大规模。
如果您确实需要扩展,我认为最好的解决方案可能是两种方法的组合。每个模型都有一个租户外键,因此可以共享数据库,但是您可以开发一些比 Django 更高级别的机制来将客户路由到站点实例。这使您可以将真正的大租户放在他们自己的数据库中,并为他们适当调整资源(例如,适当数量的 mod_wsgi 守护进程、数据库连接数量、适当大小的内存缓存池等),而较小的租户共享公共资源。
于 2009-07-10T02:58:34.857 回答
7
看看https://github.com/bcarneiro/django-tenant-schemas 您将只有一个项目实例,无需对代码进行很多修改。
于 2012-07-08T09:50:22.803 回答