多租户系统架构

一种多租户系统架构

背景:

去年的时候,因为某些特殊原因,有幸带了一个组,参与了B2B平台的开发。说是B2B平台,因为这套程序开发完了后,可以拿给多个客户使用。客户可以搭建一套具有京东商城风格,那样的网站。然后允许商家在网站上注册,开店,或者卖东西,买东西,网站的用户定位为商家。

在需求分析完后,分为了三个组。

第一个组是商城组,主要负责:商家注册,登录,前端商城主站搭建,商品详情页,搜索页,购物车,下单页,商品评价,仲裁等功能

第二个组是商家组:主要负责商家基本信息维护,商品维护,sku的库存,上下架,订单管理,发货地址管理,会员管理,店铺装修,店铺主站等

第三个组是平台管理,主要负责:类目,品牌管理,商家信息申请审核,店铺审批,商品发布审核,订单结算,商品价格管理,以及主站首页轮播图,楼层等管理。还有就是给我们自己运营人员用的一些功能:比如域名和平台id等功能的管理。

运行时架构图:

做为SaaS的基本特征,多租户对系统的很多方面都产生了很多深远的影响.就数据层面的架构来说,基本上分成了多租户共享单一数据库、单一租户独享单一数据库以及介于两者之间的单一数库下的单一租户独享单一schema三种方案。这篇文章 http://msdn.microsoft.com/en-us/library/aa479086.aspx 对三种架构方案做了全面和细致的分析,里面提到的pattern都是非常实用的(特别是Name-Value Pairs模式)。让我印象最深刻的是,本文在分析每种方案的利弊和适用场景时,视野宽广,目光长远,考虑到了很多过去我自己没有想到过的因素。比如在谈到数据安全时,作者举例说对于某些类型的租户对数据安全是非常关切的(比如银行),这一类用户是很难容忍将自己的数据与其他租户放在一起的。再比如是否会考虑为租户提供数据备份与恢复的增值服务供需要的租户购买。还有就是综合预期产品未来的租户数量(10个和1000就会有质的不同),平均每个租户的数据量,以及单一租户的并发访问量等等.这些都会影响到方案的选择.总之这是一篇关于多租户Multi-Tenant数据架构方面非常全面的文章!

nginx:主要做多域名映射,根据域名映射到不同的web Server,比如接受到域名A请求,则路由到web Server1,接受到域名B请求,则路由到web server2

web server:主要是放网页或者web相关的,比如用户登录业务等,客户多变的需求都放到这层实现,比如有些客户在要求自己的网站注册的商家,必须上传运业执照,有些不需要等可变的需求

basic server:后台服务,这层的服务都是共有的,对于每个用户都不变的基础服务都放这层,并且这层做数据库路由,每个域名一个数据库(每个客户一个数据库,做数据隔离,当时个人还不同意,从事后来看,这种架构确实好处比较多,特别是客户以前就有一个网站,然后在往新库里导数据,然后又删新库里的数据时,不担心会把其它客户的数据删掉)。

DB :每个客户一个数据库,做到数据上的逻辑隔离和物理隔离(当时设想每个外部客户1个域名,然后在数据库的每个表里加平台id以区分是那个外部客户的数据,后来架构师力排众议,每个客户1个数据库,做到数据隔离,Basic Server做数据库路由)

如何做数据库路由?

web server根据请求的url,拿到域名,然后查出平台id。basic server中的每个接口,都需要带平台id字段。Web server 调用basic server接口时,传入平台id。然后在basic server的service层,做aop,根据参数里的平台id,找到配置好的平台id和数据库连接信息,把连接信息放入ThreadLocal,包装自己的DataSource,在DataSource里获得数据库连接时,用ThreadLocal里的数据库连接信息,获得数据库连接,方法执行完,清楚数据库连接(这里曾出现过小问题,service嵌套套用的时候,里面service方法退出清楚数据库连接,导致外面service在操作数据库时,拿不到连接信息而报错,后来增加了一个调用层次计数)

mysql单表多租户架构_多租户系统架构相关推荐

  1. mysql 单表多字段查询_单表多字段MySQL模糊查询的实现

    MySQL模糊查询是我们经常会遇到的,下面就为您介绍MySQL模糊查询的实现方法,希望对您学习MySQL模糊查询方面能够有所帮助. 在最近的一个项目需要实现在单表中对多字段进行多个关键字的MySQL模 ...

  2. mysql单表最大数据量_你的Mysql库真需要Adaptive Hash Index

    说起AHI(Adaptive Hash Index),有的同学估计很陌生,都没听说,没关系,下面我会详细解释说明的,AHI是什么,mysql库为什么要设计AHI,解决什么问题,只有了解这些原理之后,才 ...

  3. mysql 评价表设计_来聊聊mysql单表评论系统怎么设计

    评论系统对于一个网站来说几乎是必不可少的,当然评论系统的设计也多种多样.一般情况下,评论数据表会和一个用户信息表结合使用,就是在评论表中记录的有用户id(例如user_id),然后查询评论数据的时候根 ...

  4. mysql单表备份语句

    mysql单表备份语句 mysql单表备份 SELECT CONCAT("mysqldump -uroot -p123456 ",table_schema," " ...

  5. mysql单表备份语句 +多表

    mysql单表备份语句 mysql单表备份 SELECT CONCAT("mysqldump -uroot -p123456 ",table_schema," " ...

  6. MySQL单表数据不要超过500万行:是经验数值,还是黄金铁律?

    今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行.那么,你觉得这个数值多少才合适呢? 曾经在中国互联网技术圈广为流传着这么一个 ...

  7. MySQL单表膨胀优化之MyCat分库分表

    MySQL的单表达到多少量级时性能会下降?宽表在千万量级,窄表要好一点在1200W左右.但是MySQL单表达到1500W时性能开始急剧下降! 事实上MySQL单表可以存储10亿级数据,只是这时候性能比 ...

  8. Mysql 单表查询where初识

    Mysql 单表查询where初识 准备数据 -- 创建测试库 -- drop database if exists student_db; create database student_db ch ...

  9. MySQL单表数据量过千万,采坑优化记录,完美解决方案

    MySQL单表数据量过千万,采坑优化记录,完美解决方案 参考文章: (1)MySQL单表数据量过千万,采坑优化记录,完美解决方案 (2)https://www.cnblogs.com/ExMan/p/ ...

  10. MySQL单表多字段模糊查询

    今天工作时遇到一个功能问题:就是输入关键字搜索的字段不只一个字段,比如 我输入: 超天才 ,需要检索出 包含这个关键字的 name . company.job等多个字段.在网上查询了一会就找到了答案. ...

最新文章

  1. nssl1143,jzoj3493-三角形【排序,数学,几何】
  2. hadoop小型集群_小型Hadoop集群的Ganglia配置和一些故障排除
  3. OpenGL ES 2.0 Shader相关介绍
  4. 启动白屏处理_App启动优化一顿操作猛如虎
  5. Html select、option、optgroup 标签
  6. JAVA基础——IO流字节流
  7. 2.性能测试类型或方法
  8. idea 主题插件_我在 IntelliJ IDEA 中必有得插件和配置
  9. AutoCAD工具栏中没有工具栏选项
  10. Mate7微信指纹支付来了 比Touch ID整合微信早一点
  11. python如何运行整个项目_如何运行django项目
  12. 贝叶斯决策及效用函数
  13. 配置Eclipse for Java 9
  14. 教你如何搜索百度网盘的资源 百度网盘资源搜索方法!
  15. 正则表达式-验证QQ号
  16. 美国医生谈医疗创业公司的五大成功要素:简化流程、绩效工资、授权
  17. k8s多节点master部署
  18. rap 接口管理 java_GitHub - ClassJava/rap2-delos: 阿里妈妈前端团队出品的开源接口管理工具RAP第二代...
  19. 【LEAP模型】能源环境发展及碳排放建模预测及不确定性分析
  20. 超强PCB布线设计经验谈附原理图(六)

热门文章

  1. js 使元素获取或失去焦点
  2. SCM系统之 SVN VS CVS
  3. MySQL字符串的拼接、截取、替换、查找位置
  4. python爬虫之音悦台mv下载(最清晰版)
  5. PPLive for Ubuntu Linux
  6. 20210b高考成绩查询,高考成绩6月23日公布!两种方式可查分
  7. GC433TR4模块性能超穿墙王SI4432无线收发模块
  8. linux 下 vs code 设置Source Code Pro 字体
  9. Android A2DP
  10. 海南省专业技术人员职称计算机,[海南省人力资源和社会保障厅]关于完善专业技术人员计算机应用能力考试有关规定通知琼人社发[2012]147号...