Skip to content

saf工程编排设计

survior edited this page Nov 7, 2019 · 2 revisions

完全参照spring-boot的工程架构进行工程编排与设计。

(1).主模块说明

主模块名称 用途 面向的使用者
saf-boot-parent 只有一个pom文件呢,抽象/封装了saf提供的基础构建,开发者选择合适的基础构建进行开发。 业务开发同学。
saf-samples 多个工程,saf的各个例子,供业务开发同学借鉴。 业务开发同学。
saf-boot-starters 多个pom文件,定义了saf-boot-parent中每个基础构建的组成结构。saf架构师对其进行合理的抽象与封装。 saf架构师
saf-parent 只有一个pom文件,saf用到的所有包及其版本都只能在这里定义(注1)。saf架构师对其进行合理的定义。 saf架构师
saf-projects 多个工程,saf的核心目录,所有的框架代码都在这里。 saf架构师

这样的体系编排,将saf底层实现与上层业务开发完全隔离开来,更高维度上的抽象与实现,更容易实现不影响业务使用前提下的架构升级。

(2).主模块详解

2.1.saf-boot-starters

这个工程下全部是pom文件,可以认为是"接口定义",基于springboot的spring.factories机制进行可插拔式扩展。

2.1.1.子模块说明

子模块名称 用途 备注
saf-boot-starter-basic 基础工程,saf的基本/核心代码,以及最基础的包依赖。
saf-boot-starter-cache 使用注解封装缓存。 目前支持jvm-cache(guava),redis缓存。
saf-boot-starter-configcenter 使用注解封装配置中心。 目前支持apollo配置中心。
saf-boot-starter-db 使用注解封装数据库。 目前支持druid。
saf-boot-starter-monitor 提供监控功能。 目前集成的是prometheus监控,saf的各个子模块都集成了monitor,比如用prometheus监控redis, rocketmq, mapper等。
saf-boot-starter-mq 使用注解封装mq。 目前支持rocketmq。
saf-boot-starter-rpc 使用注解封装rpc。 目前支持motan。
saf-boot-starter-search 使用注解封装search。 目前支持elasticsearch。
saf-boot-starter-web web服务的基础构建。 目前支持springboot原生的tomcat。
saf-boot-starter-logging log基础构建,与配置中心结合,支持自动更新日志级别等功能。 目前支持apollo配置中心。

2.1.2.业务方如何使用

如果业务工程使用多个组件,同时引入对应的saf-starter即可。

注意: saf-boot-starter-basic与saf-boot-starter-logging,saf-boot-starter-monitor是基础构建,其余的saf-boot-starter默认引入这3个基础构建。

业务方需求 saf使用方式 备注
业务工程使用jvm-cache pom引入saf-boot-starter-cache-jvm
业务工程使用redis pom引入saf-boot-starter-cache-redis 注意redis-cli的版本,和server是否匹配。如果不匹配,需要在redis下新建工程目录支持新的redis-cli版本。
业务工程使用apollo配置中心 pom引入saf-boot-starter-configcenter-apollo
业务工程使用mysql pom引入saf-boot-starter-db-druid
业务工程使用rocketmq pom引入saf-boot-starter-mq-rocketmq
业务工程使用motan(rpc) pom引入saf-boot-starter-rpc-motan
业务工程使用elasticsearch pom引入saf-boot-starter-search-elasticsearch 注意elasticsearch的client与server端版本是否和saf中支持的一致,如果不一致,需要在saf的search-elasticsearch目录下新建支持新版的工程。
业务工程使用web pom引入saf-boot-starter-web-classic。

2.2.saf-boot-projects

是saf-boot-starters下各个工程的实现,与saf-boot-starters结构设计类似,不再赘述。