繁体   English   中英

多租户接缝+ JPA应用程序

Multi-Tenant Seam + JPA Application

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我在现有的Seam 2.2.0 + JPA(Hibernate 3.3.1)应用程序上工作,该应用程序需要转换为“每个客户端的单个数据库”环境,其中每个数据库模式都相同。 该应用程序在Glassfish上运行,使用IceFaces,并且有几个页面使用Conversations。 它还使用单个EJB进行身份验证。 不幸的是,将客户分成他们自己的数据库的决定是我无法控制的。

作为概念证明,我已经通过使用Spring JPA抽象,资源本地事务和ThreadLocal将上下文信息的EntityManagerFactory(ies)和DataSource的管理移动到应用程序中,使应用程序知道多个数据库。 例如,每次用户登录新的EntityManagerFactory时,都会使用与其数据库进行通信的新DataSource进行初始化(如果尚未初始化)。 这在具有少量数据库的测试环境中运行良好。

我的问题是,这种方法会扩展到数百个数据库吗? 我希望将应用程序服务器添加到负载均衡器以处理额外的负载,但是Hibernate / JPA第一级缓存和/或Seam上下文管理(也就是内存消耗)的开销需要比典型的服务器更多的服务器扩展负载均衡应用? 如果是这样,可以通过分配具有大量RAM和/或大型分布式缓存的服务器来减轻这种影响吗?

任何见解将不胜感激。

1 个回复

我用这种方法开发了一个应用程序,我可以指出的是:

  • Datasource和EntityManagerFactory管理是困难的部分。 但是,您似乎已经在测试环境中执行了此操作。 如果你对Seam Managed Entity Manager做了正确的事,请仔细检查。
  • 您的应用程序无法在数百个数据库上很好地扩展,因为每个数据库的内存消耗都会线性增加。 实际上,对于每个数据库,您将拥有EntityManagerFactory (Hibernate SessionFactory )的不同实例,每个实例都需要相当数量的Ram。
  • 如果配置Hibernate二级缓存,请注意可能的问题。 由于所有SessionFactories都是从相同的数据模型创建的,因此缓存区域名称可能会发生冲突。 我使用hibernate.cache.region_prefix配置参数在使用数据库ID作为缓存前缀的各种实例中使这些名称成为唯一。
1 多租户Azure应用程序对其他租户不可见

摘要:如何使多租户应用程序可用于其他Azure AD租户? 详细信息:我正在编写一个C#ASP.NET库,我想使用该库创建订阅并注册更改通知。 我正在使用Microsoft Graph API v1.0进行此操作。 我按照此文档获取了服务帐户的访问令牌。 文档中列出的第一步要求我 ...

2 Azure AD:SaaS Web应用程序的单租户或多租户

我们正处于为员工时间跟踪系统创建Web应用程序的计划阶段。 如果该应用程序成功,我们希望将其作为SaaS (软件即服务)服务出售给其他公司,这样就无需将其安装在企业服务器上。 我想知道我们是否应该在Azure上将应用程序注册为多租户还是单租户? 只有公司的员工才能使用时间报告系统,因此 ...

3 从多租户应用程序查询租户Azure AD

我们有一个多租户Saas应用程序,使用我们的用户名/密码认证系统并使用Azure AD(OAuth 2.0流程)提供登录。 当用户使用Azure AD登录时,我们可以使用https://graph.windows.net/ {tenantid} / me获取用户的个人资料。 但是,我们希望使 ...

4 使用Spring + JPA进行多租户/通过单独的架构和单一应用程序方法休眠

我在使用Spring + JPA/Hibernate框架的单一应用程序+单独的架构方法的多租户架构设计/开发中寻求帮助。 以下是需求的简要概述: 应用程序的单个实例将跨用户连接到公共数据库,在服务器中部署应用程序时将创建数据源。 对于每个应用程序用户,我们希望在公共SQL ...

8 将单租户应用程序迁移到多租户应用程序

我们正在将单租户应用程序升级为多租户(每个客户端单独的数据库)SaaS 应用程序。 我的职责是设计租户配置部分。 我正在考虑以下步骤。 虽然我们的管理员将安装我们的软件,但应始终创建一个数据库。这一步的论点是管理员仅在至少有租户出现时才会安装软件。 因此,作为我们软件安装的一部分创建单个数据库 ...

9 多租户应用程序的不同翻译

我正在开发一个多租户应用程序,其中我为两个不同的网站使用相同的代码库,每个网站都有两种语言。 网站 A FR 网站 A CN 网站 B FR 网站 B EN Laravel 允许您将本地化翻译存储在resources/lang目录中,在每种语言的不同文件夹下(在这种情况下,一 ...

10 多租户Django应用程序

是否有人们使用Django创建多租户应用程序的常见模式。 内置的“站点”框架似乎是一种选择。 人们有成功的其他方法吗? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM