gpt4 book ai didi

java - 基于 Java(GWT、Spring、Hibernate)的 Web 应用程序的 SaaS/ Multi-Tenancy 方法

转载 作者:IT老高 更新时间:2023-10-28 21:16:12 25 4
gpt4 key购买 nike

我目前正在考虑将使用 Spring、GWT、Hibernate、Jackrabbit、Hibernate Search/Lucene(以及其他)的基于 Java 的单租户 Web 应用程序转换为成熟的 SaaS 风格的应用程序。

我偶然发现了一篇文章,其中强调了以下 7 个“事情”,这些“事情”是对单个租户应用程序进行重要更改以使其成为 SaaS 应用程序:

  1. 应用程序必须支持 Multi-Tenancy 。
  2. 应用程序必须具有某种程度的自助注册。
  3. 必须有订阅/计费机制。
  4. 应用程序必须能够有效地扩展。
  5. 必须具备监控、配置和管理应用程序和租户的功能。
  6. 必须有一种机制来支持唯一的用户识别和身份验证。
  7. 必须有一种机制来支持每个租户的某种程度的定制。

我的问题是,是否有人使用与我列出的技术类似的技术在 SaaS/ Multi-Tenancy 应用程序中实现了上述 7 项中的任何一项?在我走上我目前正在考虑的道路之前,我渴望尽可能多地获得有关最佳方式的意见。

首先,我很确定我对如何在模型级别处理多个租户有很好的了解。我正在考虑将租户 ID 添加到我们所有的表中,然后使用 Hibernate 过滤器(以及用于 Hibernate 搜索的全文过滤器)根据登录用户的租户 ID 对所有查询进行过滤。

不过,我对性能也有一些担忧,尤其是当我们的租户数量增长相当高时。

任何关于如何实现此类解决方案的建议将不胜感激(如果这个问题有点过于开放,我深表歉意)。

最佳答案

我建议您构建应用程序以支持所有 4 种类型的租户隔离,即每个租户的单独数据库、每个租户的单独架构、每个租户的单独表以及具有租户 ID 的所有租户的共享表。这将使您能够随着您的增长灵活地对数据库进行水平分区,拥有多个数据库,每个数据库都有一组较小的租户,并且还能够为一些大型租户拥有一个单独的数据库。您的一些大租户也可能坚持他们的数据(数据库)应该驻留在他们的前提下,而应用程序可以在云之外运行。

以下是您在构建应用程序时可能需要考虑的非功能性和基础架构级别功能的详尽 list (其中一些您可能不会立即需要,但请考虑您将如何处理此类问题的业务情况)如果您的竞争对手开始提供它,则需要)

  1. a) UI 主题和 Logo b) 表单和网格,c) 数据模型扩展和自定义字段,d) 通知模板,e) 提取列表和主数据的租户级自定义
  2. 角色和权限的租户级别创建和管理、字段级别访问权限、数据范围策略
  3. 模块和功能的租户级别访问控制设置,以便可以根据订阅包启用/禁用特定模块和功能。
  4. 一旦超过购买的配额,任务/事件/交易的计量和监控以及访问控制的限制。如果您的业务模式发生变化,则能够在未来衡量任何新实体。
  5. 将业务规则和工作流程从代码库中外部化,并将它们表示为元数据,以便您可以为每个租户组/租户自定义它们。
  6. 用于创建自定义报告的查询生成器,该报告了解租户以及特定租户添加的自定义字段。
  7. 租户封装和框架级连接字符串管理,让您的开发人员在编写查询时不必担心租户 ID。

所有这些都是基于我们在构建可用于任何域或应用程序的通用 Multi-Tenancy 框架方面的经验。不幸的是,您不能使用我们的框架,因为它基于 .NET

但无论您使用何种技术堆栈,任何 Multi-Tenancy SaaS 产品(新的或迁移的)的工程需求都是相同的。

关于java - 基于 Java(GWT、Spring、Hibernate)的 Web 应用程序的 SaaS/ Multi-Tenancy 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5461455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com