SaaS /基于Java的Web应用程序(GWT,Spring,Hibernate)的多租户方法
我目前正在考虑将一个基于Java的单租户Web应用程序转换为一个完全成熟的SaaS风格的应用程序,该应用程序使用Spring,GWT,Hibernate,Jackrabbit,Hibernate Search / Lucene(以及其他应用程序)。
我偶然发现了一篇文章,其中强调了以下7个“事情”,这是对单个租户应用进行的重要更改,以使其成为SaaS应用:
- 应用程序必须支持多租户。
- 应用程序必须具有某种级别的自助注册。
- 必须有订阅/计费机制。
- 应用程序必须能够有效地扩展。
- 必须有适当的功能来监视、配置和管理应用程序和租户。
- 必须有适当的机制来支持唯一的用户标识和身份验证。
- 必须有适当的机制来支持每个租户的某种程度的自定义。
我的问题是,是否有人使用与我列出的技术类似的技术在SaaS / 多租户应用程序中实现了上述7件事中的任何一种?在我走上我目前正在考虑的道路之前,我渴望获得尽可能多的关于最佳方法的意见。
首先,我很确定我对如何在模型级别处理多个租户有很好的把握。我正在考虑向所有表添加租户 ID,然后使用休眠筛选器(以及用于休眠搜索的全文筛选器)根据登录用户的租户 ID 对所有查询进行筛选。
然而,我对性能也有一些担忧,特别是当我们的租户数量增长相当高时。
关于如何实现这种解决方案的任何建议将不胜感激(如果这个问题有点过于开放,我很抱歉)。