一种多租户系统架构
背景:
去年的时候,因为某些特殊原因,有幸带了一个组,参与了B2B平台的开发。说是B2B平台,因为这套程序开发完了后,可以拿给多个客户使用。客户可以搭建一套具有京东商城风格,那样的网站。然后允许商家在网站上注册,开店,或者卖东西,买东西,网站的用户定位为商家。
在需求分析完后,分为了三个组。
第一个组是商城组,主要负责:商家注册,登录,前端商城主站搭建,商品详情页,搜索页,购物车,下单页,商品评价,仲裁等功能
第二个组是商家组:主要负责商家基本信息维护,商品维护,sku的库存,上下架,订单管理,发货地址管理,会员管理,店铺装修,店铺主站等
第三个组是平台管理,主要负责:类目,品牌管理,商家信息申请审核,店铺审批,商品发布审核,订单结算,商品价格管理,以及主站首页轮播图,楼层等管理。还有就是给我们自己运营人员用的一些功能:比如域名和平台id等功能的管理。
运行时架构图:
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在操作数据库时,拿不到连接信息而报错,后来增加了一个调用层次计数)
相关推荐
多租户(Multi-Tenant)架构是一种软件设计模式,允许单一实例的软件为多个独立组织(租户)提供服务。每个租户都有自己的数据隔离,但共享同一套代码基础和运行环境,从而降低了运维成本。在多租户体系中,每个租户...
Oracle Database 12c的多租户架构是一种面向云计算和大数据的新一代数据库架构,其核心优势在于能够极大地简化数据库整合过程,并提供高效的数据管理方式。这一架构通过引入容器数据库(Container Database, CDB)和可...
Oracle12c引入了一种全新的数据库结构——多租户架构(Multitenant Architecture),这一架构允许在一个单一的容器数据库(Container Database, CDB)内运行多个可插拔数据库(Pluggable Database, PDB)。这种设计极大地...
### 多租户架构下RBAC研究:一种增强的安全机制 #### 一、引言 在信息化时代,软件服务的交付模式经历了从本地部署到云端迁移的转变,其中多租户架构因其实现资源高效共享和成本节约的优势,成为了云计算环境下的...
本文提出了一种面向多租户的 Linux 容器集群组网方法,该方法参考了 Kubernetes 的组网方法,并在其基础上简化了网络结构,并引入了网络隔离,使得构建的网络能够满足多用户场景下的需求。 该方法的主要贡献在于: ...
多租户架构的设计涉及到数据隔离、资源管理、系统扩展性和维护性等多方面的问题。在数据隔离方面,主要面临着如何在多个租户间安全地隔离数据的挑战。数据隔离的实现方案通常分为以下三种类型: 1. 为每个租户提供...
散列划分是一种常用的划分方法,它通过使用哈希函数将数据映射到特定的节点上。这种方法能够实现数据的均匀分布,减少热点现象的发生。 **2.5 多租户数据的均衡负载优先划分** - **直观贪婪算法:** 1. **排序:*...
在IT行业中,多租户架构是一种常见的设计模式,特别是在云服务和SaaS应用中,它允许服务提供商为多个客户提供独立的、隔离的数据环境。Mybatis-Plus是一个强大的Mybatis扩展,它提供了许多便利功能,如简化 CRUD ...
在当前的软件开发环境中,多租户架构已经成为企业级应用的一个重要设计模式,特别是在云计算服务中。多租户技术允许单一的应用实例为多个独立的客户(租户)提供服务,每个租户的数据被隔离,确保数据的安全性和隐私...
多租户架构是一种软件设计模式,允许单个实例服务于多个客户(称为租户),每个租户都有自己独立的数据和配置。这种架构在SaaS(Software as a Service)应用中非常常见,它能有效地降低运维成本并提高资源利用率。 ...
为了进一步优化HBase多租户架构,需要对系统进行深入的配置。配置可以包括但不限于hbase-site.xml和hbase-env.sh文件的修改。对于每个RegionServer Group,可以设定不同的配置参数,比如RegionServer的启动参数、JVM...
在IT行业中,多租户(Multitenancy)是一种软件架构模式,它允许单个应用程序和服务同时服务于多个独立的客户群体,每个客户群体被称为一个“租户”。这种模式常见于云计算和SaaS(Software as a Service)应用中。...
本项目——"smart-city-tenant",是一个基于SpringCloud Alibaba和Nacos框架实现的智慧社区多租户系统,旨在提供一种可扩展、高可用且易于维护的解决方案。 SpringCloud Alibaba是阿里巴巴提供的微服务开发工具集合...
大数据平台多租户方案是大数据平台中的一种重要解决方案,Cloudera 作为大数据平台的解决方案提供商,为解决多租户问题,提供了一整套的安全解决方案,包括身份认证、权限控制、资源管理和租户管理等。
随着云计算和大数据应用的发展,HBase在多租户环境下运行成为了一种常见需求。多租户是指在一个单一的系统或应用中同时为多个租户(客户)提供服务,每个租户拥有自己的数据和配置,但是共享底层硬件和软件资源。 ...
标题中的“行业文档-设计装置-一种支持多租户的大数据平台及租户访问方法”表明,这是一个关于大数据平台设计的行业技术文档,主要聚焦于如何构建一个能够容纳多个租户并提供安全、高效访问的方法。多租户架构在...
Mycat作为一种高性能的数据库中间件,在多租户环境中展现出了强大的功能。通过对Web层的改造以及数据库代理层的引入,可以有效地实现不同租户间的资源隔离和数据安全。此外,通过灵活的配置选项和管理命令,管理员...
在IT行业中,多租户架构是一种常见的设计模式,尤其在云服务和SaaS(Software as a Service)应用中。这个“mybatis-plus-multi-tenancy_springboot多租户实现例子.zip”压缩包提供了一个使用SpringBoot和MyBatis ...