什么是多租户?

“软件多租户是指一个软件体系结构,其中一个软件实例在一个服务器上运行,并为多个租户提供服务*租户是一组共享具有软件实例特定权限的公共访问权限的用户。 架构中,软件应用程序旨在为每个租户提供一个包含其数据*,配置,用户管理,租户个人功能和非功能属性的实例共享*多租户与多实例架构形成鲜明对比,其中独立的软件实例运行 代表不同的租户“(维基百科),简而言之,多租户是一种用于创建SaaS(软件即服务)应用程序的技术。

数据库和部署体系结构

有一些不同的多租户数据库和部署方法:

1、多个部署 - 多个数据库

实际上这不是多租户,但是如果我们为每个客户(租户)运行一个具有独立数据库的应用程序实例,则可以在一台服务器上为多个租户提供服务。我们只需确保应用程序的多个实例在相同的服务器环境中不会相互冲突。

对于不是被设计为多租户的现有应用来说,这也是可能的。由于应用程序不知道多租户,创建这样的应用程序更容易。然而,这种方法存在设置,使用和维护问题。

2、单一部署 - 多个数据库

在这种方法中,我们在服务器上运行应用程序的单个实例。我们有一个主(主机)数据库来存储租户元数据(如租户名和子域)和每个租户的单独数据库。一旦我们确定了当前的租户(例如,从子域或从用户登录表单),那么我们可以切换到该租户的数据库来执行操作。在这种方法中,应用程序应该在一定程度上被设计为多租户,但大部分应用程序可以保持独立。我们为每个租户创建和维护一个单独的数据库,这包括数据库迁移。如果我们有许多专用数据库的客户,则在应用程序更新期间迁移数据库模式可能需要很长时间。由于每个租户都有独立的数据库,我们可以将数据库与其他租户分开备份。如果租户需要,我们也可以将租户数据库迁移到更强大的服务器上。

3、单一部署 - 单个数据库

      这是最理想的多租户体系结构:我们只将具有单个数据库的应用程序的单个实例部署到单个服务器上。我们在每个表(对于RDBMS)中都有一个TenantId(或类似的)字段,用于隔离租户的数据。
这种类型的应用程序易于安装和维护,但难于创建。这是因为我们必须防止租户读取或写入其他租户的数据。我们可以为每个数据库读取(选择)操作添加一个TenantId过滤器。我们也可以在每次写入时检查它,看看这个实体是否与当前的租户有关。这是乏味和容易出错的。但是,ASP.NET Boilerplate通过使用自动数据过滤来帮助我们。如果我们有许多拥有大量数据集的租户,这种方法可能会有性能问题。我们可以使用表分区或其他数据库功能来克服这个问题。

4、单一部署 - 混合数据库

      我们可能希望将租户正常存储在单个数据库中,但可能希望为所需租户创建单独的数据库。例如,我们可以将拥有大数据的租户存储在自己的数据库中,但将所有其他租户存储在单个数据库中。

5、多部署 - 单/多/混合数据库

     最后,我们可能希望将我们的应用程序部署到多个服务器(如Web场)以获得更好的应用程序性能,高可用性和/或可伸缩性。这与数据库方法无关。
 我所采用的是单部署多数据库的形式,主要是为了数据隔离,我也好维护。但是在多数据库的时候老是抛出错误 (图1)。最后发现网上说开启MSDTC服务。

图1 报错

系统开启MSDTC 服务后、然后使用租户登录、发现还是有问题!

最后问了搞.NET 朋友,说是配置 DTC 安全配置。

  1. 展开-> "应用程序服务器” -> “工具” ->  “组件服务”->右键“本地DTC”
  2. 选择“本地DTC”的“安全选项卡”,做如下设置:

      (1)选中“网络DTC访问”
           (2)在客户端管理中选中“允许远程客户端”“允许远程管理”
           (3)在事务管理通讯中选“允许入站”“允许出站”“不要求进行验证”
           (4)保证DTC登陆账户为:NT Authority\NetworkService 
           (5)单击"确定"。这样将会提示您"MS DTC 将会停止并重新启动。   所有的依赖服务将被停止。请按'是'继续"。单击"是"继续。 
       3.关闭网络防火墙(或者开放相应的端口135或用services.msc打开服务启动TCP/IP NetBIOS Helper服务)

转载于:https://www.cnblogs.com/w2011/p/8431855.html

ABP 多租户 对应多数据库 租户启动报错相关推荐

  1. spring boot多数据库数据源启动报错“required a single bean, but 2 were found”的正确解决办法

    报错 Parameter 0 of method jdbcTemplate in org.springframework.boot.autoconfigure.jdbc.JdbcTemplateCon ...

  2. oracle log block size,案例:Oracle无法启动报错ORA-00218: block size 0 重建控制文件

    天萃荷净 oracle数据库无法启动报错ORA-00218故障,通过重建控制文件解决文件损坏问题 遇到一个案例在数据库启动的时候报ORA-00218错误,而这个故障的引起原因是因为重建控制文件的时候, ...

  3. oracle数据库启动报错ora-27102

    ORACLE启动报错 今天一大早来公司,发现数据库连不上了,重新启动报错 oracle数据库启动报错ora-27102,内存不足 查看操作系统参数: cat /etc/sysctl.conf 发现这里 ...

  4. linux ora 01157,案例:Oracle报错ORA-01157 ORA-01110 数据启动报错RMAN恢复数据库思路

    天萃荷净 rman从多份备份中还原操作,运维DBA工程师反映数据库在进行恢复时报错ORA-01157 ORA-01110,分析原因为11号数据文件需要recover 1.数据恢复ORA错误 RMAN& ...

  5. Oracle数据库监听启动报错

    [root@qyy ~]# su - oracle Last login: Sat May 15 05:46:53 CST 2021 on pts/1 -bash: export: `//ORACLE ...

  6. mysql安装教程博音网_RTSP视频平台EasyNVR使用mysql数据源启动报错unknow drivermysql优化...

    原标题:RTSP视频平台EasyNVR使用mysql数据源启动报错unknow driver"mysql"优化 我们上一篇讲了TSINGSEE青犀视频开发的视频平台默认都是使用的s ...

  7. rpm安装mysql报错_【CentOS-65】通过rpm包安装mysql57解决了server报错和mysqld启动报错的问题...

    [CentOS-6.5]通过rpm包安装mysql5.7(解决了server包安装报错和mysqld启动报错的问题) 一.官网下载rpm包二.安装 wget三.检查是否已有数据库四.在linux在解压 ...

  8. mysql5.5编译安装脚本_mysql5.5 免编译安装及脚本启动报错深入

    Mysql安装环境简介: 最近在做MHA.已经安装完毕heartbeat和drbd,现在准备安装Mysql. Mysql安装目录:/opt/mysql Mysql数据目录:/data/mysql 备注 ...

  9. oracle em配置报错,oracle em 启动报错OC4J Configuration issue

    oracle em 启动报错OC4J Configuration issue 今天在测试服务器上,启动emctl start dbconsole的时候,报如下错误: [oracle@test ~]$ ...

  10. ./mysql-bin.index_MySQL 启动报错:File ./mysql-bin.index not found (Errcode: 13)

    Linux下安装初始化完MySQL数据库之后,使用mysqld_safe启动mysql数据库,如下发现,启动失败 [root@SVNServer bin]# ./mysqld_safe –user=m ...

最新文章

  1. 菜鸟学Java(十九)——WEB项目测试好帮手,Maven+Jetty
  2. [转载]jQuery.extend 函数详解
  3. Taxlive2020安装~新手向
  4. os模块:与操作系统交互的一个接口
  5. 140_Power BIPower Pivot之降维展示同类型比较
  6. 1万美元奖金,Kaggle 新赛瞄准室内定位
  7. 【华为云实战开发】6.Cocos游戏项目如何在云端开发
  8. Ubuntu中软件安装与卸载
  9. (转载)Sybase:bcp命令参考
  10. 计算机组装与维护英语怎么说,计算机组装与维护-复习题(国外英语资料).doc
  11. 多线程基础(三)NSThread基础
  12. R语言堆叠占比柱状图_R语言执行单因素方差分析及多重比较
  13. 阿里云助贫困大学生用技能点亮人生
  14. 单片机无线语音遥控智能车
  15. Ribbon界面开发:如何创建Ribbon样式的应用程序框架
  16. 【HAVENT原创】kubernetes docker 常用指令
  17. 正则匹配中文、繁体字、不常见中文
  18. python四分位数_python 计算箱线图、中位数、上下四分位数等
  19. 服务器打开显示选择键盘布局,更改服务器上的TTY键盘布局?
  20. 英语面试自我介绍java_java面试英语自我介绍

热门文章

  1. Cornerstone无法上传静态库文件(.a文件)
  2. iOS 全屏侧滑手势/UIScrollView/UISlider间滑动手势冲突
  3. C语言自动分配宿舍问题
  4. 创业者,守成者,陵夷者,中兴者,乱亡者。
  5. 计算机在职博士好毕业么,北京大学计算机在职博士生毕业以后学历会提升么
  6. Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?
  7. mysql 用大于等于代替大于_mysql使用详解
  8. JAVA集合框架之List HashSet去重及TreeSet排序详解
  9. TimeGen 软件的实用
  10. HNOI 2014 Day1 米特运输