Pau*_*ora 6 java architecture glassfish multi-tenant
我的任务是创建一个企业应用程序多租户.它有一个使用SOAP Web服务和PostgreSQL后端的Java/Glassfish BLL.每个租户都有自己的数据库,因此(至少在我的情况下)"多租户"意味着每个应用服务器支持多个数据库.
当前的单租户appserver使用从配置文件获取的连接字符串初始化C3P0连接池.我的想法是,现在需要为appserver服务的每个客户端/数据库建立一个连接池.
用户登录后,我可以通过查找其租户将其映射到正确的连接池.我的主要问题是如何实现这一点 - 当用户首次登录时,将User查询后端的表并提供相应的User对象.似乎我需要知道使用哪个数据库只使用用户名.
我唯一不错的想法是需要一个"配置"数据库 - 一个用于管理租户信息(如连接字符串)的集中数据库.BLL可以查询此数据库以获取足够的信息来初始化必要的连接池.但由于我只有一个用户名,我似乎还需要一个集中的用户名查找,换句话说,一个带有UserName表的外键的Tenant表.
这是我的设计计划开始闻到的地方,让我怀疑.现在,我将在两个单独的数据库中拥有用户信息,这些数据库需要同步维护(用户添加,更新和删除).此外,用户名现在必须是全局唯一的,而在它们之前,每个租户只需要是唯一的.
我强烈怀疑我正在重新发明轮子,或者至少有一个更好的架构可能.我以前从未做过这种事,也没有任何人在我的团队中,因此我们无知.遗憾的是,该应用程序很少使用现有技术(例如,ORM是在家中推出的),因此我们的路径可能很难.
我要求以下内容:
更新:该解决方案已成功实施和部署,并已通过初始测试.感谢@mikera的有用和令人放心的答案!
一些快速的想法:
| 归档时间: |
|
| 查看次数: |
1193 次 |
| 最近记录: |