我们的产品最近在规划做一个比较大的变化,从单应用支持单个项目,向单应用支持多项目转变(多租户)
企业应用和互联网应用的区别
产品是所谓的企业应用,虽然用的技术差不多,但是我感觉和互联网应用有很大区别,暂时想到以下几点:
1、并发数
企业应用的并发数和互联网应用(近似理解为网站)相比,差别极大。因为网站面对的是数以万计的互联网用户,而企业应用面对的是内部用户,所以并发量完全不在一个层面上。不用跟大的电商、社交网站比,即使是很小的网站,并发数也远远超过我们的应用
所以,一般来说,企业应用在架构上不需要特别考虑http并发的问题,只需要稍微注意下实现无状态server,支持水平伸缩即可
2、数据量
数据量这个指标,主要还是取决于应用的规模,跟是企业引用还是互联网应用,关系不是特别大。就目前的经验来看,我们应用的性能瓶颈,主要也是出现在数据库IO上。后续在集中部署的场景下,更有可能面对数据库伸缩的问题
3、可配置性
互联网应用不强调可配置性,一般的商城、论坛等,每个用户能做的事情都是一样的。虽然像QQ空间那种,允许用户做一些自定义,但是只是页面组件和模板化的技术,跟企业应用的可配置性还不一样
企业应用会面对很多定制需求。比如说我们的产品,要提供给不同的项目,而每个项目的需求都会有一些细微的差异。同样的工单,不同项目需要不同字段;工单端到端的业务流程,不同的项目有不同的环节;另外不同的项目,可能会与不同的外部系统对接……
如果是单应用支撑单项目的情况,可以通过定制开发的方式实现,只是工作量的问题。但是一旦转变成多租户的部署形式,就会相当麻烦,主要是升级的时候不能互相影响,还有怎么处理数据库表结构的差异
所以,这是比互联网应用复杂的地方
4、数据隔离
还有一个很大的区别是数据隔离
网站的大部分数据是必须共享的,否则就会发生用户看不到某些帖子、不能买某些商品等错误的情况。但是对于企业应用来说,数据隔离不但不是问题,反而是需求。A项目的用户不应该看到B项目的数据,把不同项目的数据隔离开完全没有问题
因此,在企业应用中,把数据隔离开,应用只能读取其中的一部分,是可以接受的
多租户的方案
多租户的设计思路,目前想到2种:
第一种是应用只有一套数据库表,基本上沿用现有的表结构,只增加一列项目ID来区分。这种方案短期来看比较简单,但是以前只存放一个项目的数据,现在却要存放几十个项目的数据,很快就会遇到数据库瓶颈(业务数据每天都在增加),最终还是要拆表
第二种是一开始就根据项目把表拆开,每个项目一套表。在项目少数据少的时候,可以只用schema区分,部署在同一个db server里;随着项目和数据增多,再增加db server,做数据迁移。由于本来就根据schema拆了表,迁移起来比较容易
长期来看,我认为第2种方案是比较好的。首先每个项目有自己的表,数据分散,IO性能较优;一个项目的表中的数据损坏,也不会对其他项目造成影响;最后,有天然的数据隔离
但是这要求应用能够访问适当的表和数据库,当一个请求到来的时候,应用需要知道要到哪个表中去查询所需的数据,这也叫数据路由。数据路由交给APP来实现是不合适的,因为APP的代码会非常繁琐,并且新接入一个项目,增加了数据库表之后,还需要修改APP的代码,这是不可接受的。需要把数据路由做成透明的,由专门的抽象层解决这个问题
淘宝在这方面有成熟的解决方案,大致的思路是在orm之下,jdbc之上,提供了一层TDDL层,由这层来实现数据路由的功能。应用对数据库的请求是透明的,TDDL将请求分发到合适的数据库中。TDDL对上层(orm)应该是封装成jdbc的接口,可以看作是一个jdbc驱动,直接注入到orm中。当新项目接入,增加新的表之后,只需要在TDDL层进行配置即可,APP的代码也不需要修改
另外要解决数据迁移的问题。需要开发配套工具,支持数据快速迁移,减少业务中断的时间
总结:
2种方案都需要对产品的实现做修改,可以作为规划,落入后续版本中,短期内难以做到
结合云部署的方案,当前可以把应用预装入虚拟机,然后导出得到镜像,在不修改应用的前提下,实现快速部署。另外,多个项目的数据库,可以共享db server,节省硬件费用,以及oracle license费用,这需要修改产品的安装脚本
上述方案应该看做是过渡方案,长期来看,还是需要对应用进行改造,才能实现真正的多租户。目前可以识别出的技术难点,主要有3点:
1、数据库路由模块的设计和实现
2、数据迁移工具的设计和实现
3、针对多租户场景,可配置性设计的调整(当前的可配置性设计,针对的是单个项目)
分享到:
相关推荐
真正实现了手撸RBAC、jwt的无状态统一权限认证的解决方案,面向互联网设计同时适合B端和C端用户,支持CI/CD多环境部署;同时还集合各种微服务治理功能和监控功能。模块包括:企业级的认证系统、开发平台、应用监控、...
基于SpringBoot2.x、SpringCloud和SpringCloudAlibaba并采用前后端分离的企业级微服务多租户、多系统的系统架构。适合学习和企业中使用。真正实现了手撸RBAC、jwt的无状态统一权限认证的解决方案,面向互联网设计...
真正实现了基于RBAC、jwt和oauth2的无状态统一权限认证的解决方案,面向互联网设计同时适合B端和C端用户,支持CI/CD多环境部署,并提供应用管理方便第三方系统接入;同时还集合各种微服务治理功能和监控功能。模块...
zlt-微服务平台 ...提供应用管理,方便第三方系统接入,支持多租户(应用隔离) 帖子组件化的思想实现高内聚低取代和高度可配置化 重点法规,严格控制包依赖,每个工程基本都是最小依赖 非常适合学习和企
互联网对传统企业应用架构 基于Kafka-Spark Streaming的数据处理系统及测试 交互式直播推流编码器的设计 Elasticsearch实时高效聚合计算应用实践 腾讯Elasticsearch大规模实践 阿里云Elasticsearch架构解析与性能...
10 2.3.2 租户虚拟机需求分析 11 2.3.3 租户互联网业务需求分析 11 2.3.4 租户外网业务需求分析 12 2.5 管理运维需求 13 第三章 设计原则 14 第四章 解决方案 15 4.1 解决方案综述 15 4.2 平台侧设计方案 17 4.2.1...
多租户多数据中心的架构演进 从广告应用中台建设看架构思维成长 从互联网到 ToB 服务 从NewSQL到全新的HTAP分布式架构演进 业务网关的探索与实践 高并发架构实践 国产OS自主核心能力打磨实践TencentOS Server进击之...
2.3.2多租户组织架构 2.3.3虚拟数据中心 2.3.4云服务使用流程 2.3.5云服务的申请与审批 2.3.6云服务交付 2.3.7云安全服务交付 2.3.8云负载均衡服务交付 2.3.9云数据库服务交付 2.4云运维层 2.4.1云运维平台整体架构 ...
1.1 SaaS 以多租户架构为特点,革新应用交付方式 SaaS(Software as a Service,软件即服务),是一种基于互联网提供 软件服务的应用模式。SaaS 建立在 IaaS(Infrastructure as a Service, 基础设施即服务)及 ...
资源简介:云域网是澳大利亚NETLINKZ与中国电信合作创新的一款互联网云产品,一款基于电脑自带系统的桌面连接软件,被定义为搬到云上的局域网,在智能组网、远程操控、公有云私有化、混合云管理领域有着广泛应用。...
天翼云从业者练习题(含答案)... 一致性 可用性 可扩张性 分区容错性 答案:ABD 【判断题】 虚拟化技术用于实现软件应用与底层硬件相隔离,从而实现云平台不同租户之间的隔离。根据对象不同,虚拟化技术可分为:存储虚拟
物业管理公司的多个管理处所管辖的物业在地域上比较分散,有些还是跨地区管理,在缺乏集中式应用的解决方案的情况下,容易形成多个信息孤岛,信息和数据无法共享。 随着各个行业信息化的飞速发展,物业行业也不...
提供应用管理,方便第三方系统接入,支持多租户(应用隔离) starter组件化的思想实现最小化依赖 1.2 核心功能 统一认证功能 网关统一认证 url级权限控制 支持oauth2的四种模式登录 支持用户名、密码加图形验证码登录 ...
移动互联网、云计算等新型业务的高速增长,一方面促使传统的IDC向云计算数据中心转变,另一方面越来越多的应用和数据集中到云端,使得云数据中心的规模急剧增长,传统网络架构和技术已经难以适应云数据中心的发展,...
最新文档可在此处获得: : Blynk 物联网平台是一种白标、多租户软件解决方案,可让您构建个人和商业物联网项目连接产品。 使用 Blynk,您可以从构建原型或个人项目开始,然后将其扩展到数百万个商业连接设备。 ...
此示例演示如何构建一个 MVC Web 应用程序,该应用程序使用 Azure AD 使用 OpenID Connect 协议进行登录,然后使用通过 OAuth 2.0 获取的令牌调用登录用户身份下的 Web API。 此示例使用 OpenID Connect ASP.Net ...
'Web漏洞挖掘速成特训营.pdf', 'XAI与可信任安全智.pdf', '云安全自动化-Fortinet.pdf', '云租户等保合规探索.pdf', '代码能力在渗透测试实战中的价值.pdf', '以子之矛攻子之盾,AI攻防的那些事.pdf', '你相信发电...
BroadLight 公司今天宣布推出面向高性能多住户单元 (MDU) 和多租户单元 (MTU) 应用的 BL2340 GPON ONT 解决方案。BL2340 今天起提供样片,它是第一款通过单个 ONT 提供必需的持续分组性能以支持多 IPTV 与 HDTV 流和...
与和相比,您可以获得细粒度的访问控制,并且能够在复杂的环境(例如多租户或分布式应用程序和大型组织)中回答问题。 Ladon受启发。 Ladon正式随附了示例性的内存存储实现。 社区支持的适配器可用于 。 拉登现在...