目录
(1).关于saf
(2).saf主要工程
(3).saf工程结构拓扑与概述
(1).关于saf
项目地址:
https://github.com/saf-group
1.一个微服务框架,完全基于注解的方式开发。
2.适用于云原生(K8S)下的微服务体系搭建,为技术中台提供底层支撑。
3.解放业务,使业务方专注于业务逻辑本身:通过注解以搭积木方式引入各式资源,每个资源都是一行注解,极大提升业务方产出效率。
(2).saf主要工程
工程名 | 类型 | 主要作用 |
---|---|---|
saf | 核心工程 | 实现所有的核心功能。 |
saf-boot-starter | boot-starter | 封装出不同的经典boot-starter供业务使用,免去业务的调包的痛苦过程。 |
saf-sample | demo | 用于测试saf,如调依赖包,集成测试等。 |
saf-boot-starter-sample | demo | 用于测试saf-boot-starter,如调依赖包,集成测试等。 |
saf-doc | doc | saf相关的各类实战文档。 |
(3).saf工程结构拓扑与概述
下图为saf工程结构拓扑,由于图很大,所以本文提供原图地址,位于:
https://github.com/saf-group/saf-doc/blob/master/images/saf%E6%A1%86%E6%9E%B6%E5%B7%A5%E7%A8%8B%E6%8B%93%E6%89%91%E8%A7%A3%E6%9E%90.jpg
注意:
绿色部分是已经实现,并且生产可用。
关于saf-boot-starter, saf-boot-starter-sample, saf-sample的作用在图中,和本文的”(2).saf主要工程”中已经做了清晰的语义描述(可以类比spring, spring-boot, spring-boot-starter理解),这里主要描述saf中的各个包。
工程saf主要分5层包结构,从下到上依次为:
层级(从下到上) | 名称 | 包组成 | 主要作用 | |
---|---|---|---|---|
一级包 | 二级包 | |||
1 | saf基层包依赖与基层代码 | saf-basic | ---------- | 定义saf框架必须的依赖包。无代码。 |
saf-core | ---------- | saf的基础代码,主要是util,IOC,saf顶级接口抽象等核心基础代码。 | ||
2 | saf基础模块 | saf-monitor | saf-monitor-basic | 定义监控的抽象监控,方便集成不同的监控实现。注:但实际上这个封装很鸡肋,因为不同的监控实现都很个性。 |
saf-monitor-prometheus | 封装prometheus的监控实现。更方便saf框架和业务使用。saf中的所有组件都使用它进行度量统计与监控。 | |||
saf-logging | saf-logging-basic | 定义saf依赖的基础log包。 | ||
saf-logging-apollo | 使用哪种分布式配置中心实现log的一些动态调节,比如热更新日志级别等。 | |||
saf-configcenter | saf-configcenter-basic | 封装分布式配置中心的顶级抽象接口,方便saf框架与业务能够自行任意选用不同的分布式配置中心。 | ||
saf-configcenter-apollo | 提供apollo分布式配置中心的封装支持。 | |||
saf-configcenter-nacos | 目前未支持。 | |||
3 | saf基础中间件 | saf-cache | saf-cache-jvm | 封装guava,提供JVM内存级别的缓存。 |
saf-cache-redis | 注解方式封装redis,同时提供metric的统计度量,以及分布式配置中心支持。 | |||
saf-cache-mongo | 目前未支持。 | |||
saf-mq | saf-mq-rocketmq | 注解方式封装rocketmq,同时提供metric的统计度量,以及分布式配置中心支持。 | ||
saf-mq-kafka | 目前未支持。 | |||
saf-search | saf-search-elasticsearch-6.4.3-spring-data | 注解方式封装es,以及分布式配置中心支持。ES这类很麻烦,因为小版本之间都存在api差异,更不必说大版本,而且还有很多封装实现,所以有可能提供很多实现,以应对生产上的不同es集群版本。其实redis也有这个问题,但是一般都是线上统一版本,这么做性价比相对高,es是真不能这么干。 | ||
saf-search-elasticsearch-7.5.0-spring-data | 目前未支持。 | |||
saf-db | saf-db-druid | 注解方式封装datasource,同时提供metric的统计度量,以及分布式配置中心支持。 | ||
saf-db-tidb | 目前未支持。 | |||
4 | rpc | saf-rpc | saf-rpc-motan | 注解封装motan,同时提供metric的统计度量,以及分布式配置中心支持。 |
saf-rpc-motan-manager | 目前未支持。这个应该有,因为只有统一在一起,才能保证admin和rpc的版本一致,降低版本风险。 | |||
saf-rpc-dubbo | 目前未支持。这个实现起来工作量很大,因为要支持provider, consumer的配置放到分布式配置中心,官方注解是不支持的,需要自己再实现一套,相当于重写一遍官方注解,然后加入分布式配置中心的支持。同时要加入metric的度量统计支持。这个工作量非常大。特别注:dubbo官方虽然也支持apollo,但只是把他当做zookeeper用,注册provider和consumer。 | |||
5 | web | saf-web | saf-web-basic | 封装web通用的基础代码。 |
saf-web-classic | 提供springboot内置的tomcat的web支持,同时提供health等metirc度量统计。 | |||
saf-web-webflux | 目前未支持kubernetes用这类异步可能有问题。 |