从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八) saas平台篇-解决不同租户针定制化开发问题 -完整代码以及案例方案(1)

简介: 从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八) saas平台篇-解决不同租户针定制化开发问题 -完整代码以及案例方案(1)

image.png

问题描述


平台越做越大到多租户时,经常会遇见一种情况,就是某些用户希望自己的功能是定制化的,有可能是完全的新功能,也有可能压根就是同样的功能但是A和B两个用户的实现前后台展示和逻辑就压根不同
不可能在同样的一套系统里写一个针对客户A的一套前后台,又写一套针对用户B的前后台,然后通过租户Id不同去做判断校验,这样随着用户数量的不断增加,代码就变得不可维护
而且很有可能是不同的团队去定制化开发,也就是说A 的定制化部分由A的团队去开发,B的定制化部分由B团队去开发,不可能我们把所有代码扔给他们去修改,安全性和扩展性是不允许的

模型图如下:

1.png

### 如上图所示,传统saas 是封闭模型,所有的功能都是在包含在平台本身,这样做的由如下几个缺点:
### 1.功能内部需要维护多套用户代码,每次根据是哪个租户请求去判断走哪个
### 2.很难将定制化部分交付给不同租户团队自己去开发,因为对接维护成本很高

mini-cloud 框架是如何进行多租户定制方案的

### mini-cloud 在租户和框架平台之间加了一层,挂载层,每个租户可以选择在挂载层下挂载自己得个性化定制服务,不挂在的话就是走默认的服务,如果挂在了就是走自己的前后台服务

模型图如下:

1.png

### 如上图所示,mini-cloud 框架对外开放了一个tanent的租户层,可以根据不同的租户挂在他们自定义的前后台服务,如果某些功能不需要个性化开发,则使用默认服务功能
### mini-cloud saas 有如下优点:
### 1. 支持框架适用方内部独立开发所有服务功能
### 2. 支持某租户自己团队开发自己业务端的前后台服务
### 3. 支持混合使用框架默认功能以及自定义功能
### 4. 可无限扩展租户前后台服务无需任何判断逻辑

下面几章节将详细描述mini-cloud 内部如何一步步演变实现的多租户功能以及案例演示

相关文章
|
10月前
|
安全 Java 应用服务中间件
Spring Boot + Java 21:内存减少 60%,启动速度提高 30% — 零代码
通过调整三个JVM和Spring Boot配置开关,无需重写代码即可显著优化Java应用性能:内存减少60%,启动速度提升30%。适用于所有在JVM上运行API的生产团队,低成本实现高效能。
1098 3
|
9月前
|
人工智能 监控 Java
零代码改造 + 全链路追踪!Spring AI 最新可观测性详细解读
Spring AI Alibaba 通过集成 OpenTelemetry 实现可观测性,支持框架原生和无侵入探针两种方式。原生方案依赖 Micrometer 自动埋点,适用于快速接入;无侵入探针基于 LoongSuite 商业版,无需修改代码即可采集标准 OTLP 数据,解决了原生方案扩展性差、调用链易断链等问题。未来将开源无侵入探针方案,整合至 AgentScope Studio,并进一步增强多 Agent 场景下的观测能力。
3105 96
|
10月前
|
监控 Java 数据库
从零学 Dropwizard:手把手搭轻量 Java 微服务,告别 Spring 臃肿
Dropwizard 整合 Jetty、Jersey 等成熟组件,开箱即用,无需复杂配置。轻量高效,启动快,资源占用少,内置监控、健康检查与安全防护,搭配 Docker 部署便捷,是构建生产级 Java 微服务的极简利器。
993 117
|
9月前
|
安全 Java 测试技术
《深入理解Spring》单元测试——高质量代码的守护神
Spring测试框架提供全面的单元与集成测试支持,通过`@SpringBootTest`、`@WebMvcTest`等注解实现分层测试,结合Mockito、Testcontainers和Jacoco,保障代码质量,提升开发效率与系统稳定性。
|
9月前
|
负载均衡 Java API
《深入理解Spring》Spring Cloud 构建分布式系统的微服务全家桶
Spring Cloud为微服务架构提供一站式解决方案,涵盖服务注册、配置管理、负载均衡、熔断限流等核心功能,助力开发者构建高可用、易扩展的分布式系统,并持续向云原生演进。
|
10月前
|
安全 IDE Java
Spring 的@FieldDefaults和@Data:Lombok 注解以实现更简洁的代码
本文介绍了如何在 Spring 应用程序中使用 Project Lombok 的 `@Data` 和 `@FieldDefaults` 注解来减少样板代码,提升代码可读性和可维护性,并探讨了其适用场景与限制。
335 0
Spring 的@FieldDefaults和@Data:Lombok 注解以实现更简洁的代码
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1671 1
Spring boot 使用mybatis generator 自动生成代码插件
|
12月前
|
安全 Java Nacos
0代码改动实现Spring应用数据库帐密自动轮转
Nacos作为国内被广泛使用的配置中心,已经成为应用侧的基础设施产品,近年来安全问题被更多关注,这是中国国内软件行业逐渐迈向成熟的标志,也是必经之路,Nacos提供配置加密存储-运行时轮转的核心安全能力,将在应用安全领域承担更多职责。