searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

一种基于Spring Boot Starter的多云资源池适配服务框架(一)

2022-12-01 01:55:22
75
0

(一)背景技术

目前开源的多云管管理系统中,暂未发现支持上层业务处理统一封装,各资源池组件模块化封装,可插拔适配器框架。常规的设计中,出现常见的问题:

  • 对外业务处理如果不尽可能共用一套API标准,会造成每对接一个新资源池类型,需要单独增加一套对外API,接口数量会成倍增加。
  • 底层逻辑模块如果不通过资源池类型做代码隔离,就无法实现不同资源池类型的可插拔,随着对接资源池类型越来越多,制品大小也会不断增加,且代码中很多if/else逻辑分支,维护成本很高。
  • 一种云管业务对应多个资源池底层接口的场景大量存在,如果不保证业务接口的事务性,则会造成很多底层资源浪费。

为了解决接入新资源池类型工作量较大,后期维护工作繁琐,资源池组件业务逻辑不能按需插拔,多接口调用场景下报错后的资源释放和故障定位较难等问题,特研发该适配器框架解决以上问题。

(二)Spring Boot Starter 简介

Starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。使用者只需要依赖相应功能的Starter,无需做过多的配置和依赖,Spring Boot就能自动扫描并加载相应的模块。

总结下:

  1. 它整合了这个模块需要的依赖库;
  2. 提供对模块的配置项给使用者、并可以对配置项提供默认值,使得使用者可以不指定配置时提供默认配置项值,也可以根据需要指定配置项值;
  3. 提供自动配置类对模块内的Bean进行自动装配

Spring Boot Starter在 Spring Boot中的一个非常重要的生态组件, 他的地位如下图所示:


See the source image

Spring Boot Starter常用的应用:


具体参考见:Spring Boot Reference Documentation

(三)基于Spring Boot Starter 适配器的方案

基于springboot的自定义starter特性,将每种资源池的逻辑代码封装到特定starter中,每种资源池类型一个starter,starter中完成该资源池的初始化,实现统一接口层的接口,starter为可插拔组件。

 

(四)架构简介

本发明包含一个请求过滤器和四个逻辑层代码:对外接口层,抽象业务层,统一接口层,资源池组件层。分层特性介绍:

分层特性介绍:

  1. 请求过滤器会对http请求进行预处理,根据请求中的用户id和资源池id(每个请求必传),填充用户信息和资源池信息到ThreadLocal变量中,请求之间数据隔离。
  2. 对外接口层定义了一套针对混合云管前端的业务抽象接口,大部分接口可以在多云之间复用,少量差异化接口单独定义。
  3. 抽象业务层复用一套相同的业务处理逻辑(业务预处理,数据校验,转换,清洗,入库等)。
  4. 统一接口层定义了一套多云之间可复用的云管业务级别的资源池操作接口。
  5. 资源池组件层针对不同资源池类型对统一接口层的接口(资源池接口封装,数据库操作,业务逻辑封装)分别做了不同实现,每种资源池类型封装为一个单独的模块,可动态插拔。


 

 

 

0条评论
0 / 1000
y****n
4文章数
0粉丝数
y****n
4 文章 | 0 粉丝
原创

一种基于Spring Boot Starter的多云资源池适配服务框架(一)

2022-12-01 01:55:22
75
0

(一)背景技术

目前开源的多云管管理系统中,暂未发现支持上层业务处理统一封装,各资源池组件模块化封装,可插拔适配器框架。常规的设计中,出现常见的问题:

  • 对外业务处理如果不尽可能共用一套API标准,会造成每对接一个新资源池类型,需要单独增加一套对外API,接口数量会成倍增加。
  • 底层逻辑模块如果不通过资源池类型做代码隔离,就无法实现不同资源池类型的可插拔,随着对接资源池类型越来越多,制品大小也会不断增加,且代码中很多if/else逻辑分支,维护成本很高。
  • 一种云管业务对应多个资源池底层接口的场景大量存在,如果不保证业务接口的事务性,则会造成很多底层资源浪费。

为了解决接入新资源池类型工作量较大,后期维护工作繁琐,资源池组件业务逻辑不能按需插拔,多接口调用场景下报错后的资源释放和故障定位较难等问题,特研发该适配器框架解决以上问题。

(二)Spring Boot Starter 简介

Starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。使用者只需要依赖相应功能的Starter,无需做过多的配置和依赖,Spring Boot就能自动扫描并加载相应的模块。

总结下:

  1. 它整合了这个模块需要的依赖库;
  2. 提供对模块的配置项给使用者、并可以对配置项提供默认值,使得使用者可以不指定配置时提供默认配置项值,也可以根据需要指定配置项值;
  3. 提供自动配置类对模块内的Bean进行自动装配

Spring Boot Starter在 Spring Boot中的一个非常重要的生态组件, 他的地位如下图所示:


See the source image

Spring Boot Starter常用的应用:


具体参考见:Spring Boot Reference Documentation

(三)基于Spring Boot Starter 适配器的方案

基于springboot的自定义starter特性,将每种资源池的逻辑代码封装到特定starter中,每种资源池类型一个starter,starter中完成该资源池的初始化,实现统一接口层的接口,starter为可插拔组件。

 

(四)架构简介

本发明包含一个请求过滤器和四个逻辑层代码:对外接口层,抽象业务层,统一接口层,资源池组件层。分层特性介绍:

分层特性介绍:

  1. 请求过滤器会对http请求进行预处理,根据请求中的用户id和资源池id(每个请求必传),填充用户信息和资源池信息到ThreadLocal变量中,请求之间数据隔离。
  2. 对外接口层定义了一套针对混合云管前端的业务抽象接口,大部分接口可以在多云之间复用,少量差异化接口单独定义。
  3. 抽象业务层复用一套相同的业务处理逻辑(业务预处理,数据校验,转换,清洗,入库等)。
  4. 统一接口层定义了一套多云之间可复用的云管业务级别的资源池操作接口。
  5. 资源池组件层针对不同资源池类型对统一接口层的接口(资源池接口封装,数据库操作,业务逻辑封装)分别做了不同实现,每种资源池类型封装为一个单独的模块,可动态插拔。


 

 

 

文章来自个人专栏
架构
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
1
0