Spring Cloud SOFA 是基于 Spring Cloud 生态构建的开发框架,致力于提供微服务开发的一站式解决方案。SpringCloud SOFA 包含开发分布式应用服务的必需组件,您只需要使用 Spring Cloud 的编程模型,就可以将应用接入 SOFA 中间件,快速搭建金融级云原生分布式应用系统。
适配版本
Spring Cloud SOFA 目前可适配于宽范围的 Spring Cloud 版本。
Spring Cloud SOFA 版本 | Spring Cloud 版本 | Spring Boot 版本 |
2021.X | Greenwich | 2.1.X |
Hoxton | 2.2.X ~ 2.3.X | |
2020.X | 2.4.5 ~ 2.5.X | |
2021.X | 2.6.X ~ 2.7.X | |
2023.x | 2023.x | 3.2.x |
引入公共依赖
在项目的 Maven 配置中,将 Spring Cloud SOFA 版本配置于dependencyManagement
中,以控制 Spring Cloud SOFA 相关依赖的版本(版本映射关系可能随 Spring Cloud 官方升级而发生变化),示例如下:
<dependencyManagement>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.7.16</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.8</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alipay.cloud</groupId>
<artifactId>spring-cloud-sofa-dependencies</artifactId>
<version>2021.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencyManagement>
添加公共配置
您只需在application.properties
中配置以下公共参数,即可将 Spring Cloud SOFA 轻松接入整套 SOFA 商业版中间件产品。
spring.application.name={your project name}
spring.cloud.sofa.instanceid={sofa middleware instance id}
spring.cloud.sofa.acvip.endpoint={sofa acvip lb address}
spring.cloud.sofa.mw.access={sofa middleware ak, optional}
spring.cloud.sofa.mw.secret={sofa middleware sk, optional}
spring.cloud.sofa.ldc.region={sofa application region, optional}
spring.cloud.sofa.ldc.datacenter={sofa application data center, optional}
spring.cloud.sofa.ldc.zone={sofa application zone, optional}
参数说明:
参数 | 说明 |
spring.application.name | 应用名称,用于标识当前应用。在服务发现、服务治理、动态配置等功能中用于识别应用,非常重要,必须配置且全域不可重名。 |
spring.cloud.sofa.instanceid | 实例 ID,用于区分租户,不同实例之间数据隔离。 |
spring.cloud.sofa.acvip.endpoint | ACVIP 地址。ACVIP 统一管理 SOFA 中间件的服务器地址,提供节点探活、连接收敛、多中心容灾等高阶能力。只要配置正确的 ACVIP 地址,即可连接各个 SOFA 中间件,无需对每个中间件单独配置地址。 |
spring.cloud.sofa.mw.access | 中间件鉴权 AK(AccessKey)。开启鉴权的情况下,需要正确的 AK 和 SK(Secret Key) 才能接入中间件。 |
spring.cloud.sofa.mw.secret | 中间件鉴权 ,开启鉴权的情况下,需要正确的 AK 和 SK才能接入中间件。 |
spring.cloud.sofa.ldc.region | 应用位置信息 Region,标识应用所属地域。 |
spring.cloud.sofa.ldc.datacenter | 应用位置信息 Data Center,标识应用所属数据中心。 |
spring.cloud.sofa.ldc.zone | 应用位置信息 Zone,标识应用所属单元。 |
如果您使用 SOFABoot 进行过应用开发,可以继续沿用 SOFABoot 的公共配置 Key。Spring Cloud SOFA上的这些公共配置和 SOFABoot 框架的公共配置相对应且兼容,使用 SOFABoot 的公共配置 Key 在 Spring Cloud SOFA 上进行配置也同样生效。
Spring Cloud SOFA 配置 Key | SOFABoot 配置 Key |
spring.cloud.sofa.instanceid | com.alipay.instanceid |
spring.cloud.sofa.acvip.endpoint | com.antcloud.antvip.endpoint |
spring.cloud.sofa.mw.access | com.antcloud.mw.access |
spring.cloud.sofa.mw.secret | com.antcloud.mw.secret |
spring.cloud.sofa.ldc.region | com.alipay.ldc.region |
spring.cloud.sofa.ldc.datacenter | com.alipay.ldc.datacenter |
spring.cloud.sofa.ldc.zone | com.alipay.ldc.zone |
需注意,当使用动态配置功能时(Bootstrap 模式),以上与中间件连接相关的配置需要抽取到bootstrap.properties
文件中进行配置,详情请参见 Bootstrap 模式。
添加 Spring Cloud SOFA 组件
Spring Cloud SOFA 提供了以下组件来引入 SOFA 商业版中间件:
组件名称 | 组件说明 | 组件类型 |
spring-cloud-starter-sofa-registry | 注册中心模块,可以让应用接入 SOFA 注册中心,并获得优雅上线、就近路由、双注册、双订阅等高阶能力。 | 微服务 |
spring-cloud-starter-sofa-service | 服务路由模块,可以为应用添加动态路由、灰度路由等路由能力,并支持扩展自定义服务路由。 | 微服务 |
spring-cloud-starter-sofa-guardian | 服务治理模块,提供流控、熔断、降级、鉴权、故障注入等治理功能。 | 微服务 |
spring-cloud-starter-sofa-drm | 动态配置模块,可以让应用接入 DRM 配置中心,支持应用配置托管、动态配置下发、高一致性保证等能力。 | 微服务 |
spring-cloud-starter-sofa-health | 健康检查模块,基于 Spring Boot 的 Actuator 扩展了就绪检查,以及应用就绪回调等高阶能力。 | 公共模块 |
spring-cloud-starter-sofa-tracer | 链路模块,集成 SOFA Tracer,用于打印全链路日志,支持范围覆盖 SOFA 和开源的主流中间件或框架。 | 公共模块 |
以上模块,均可单独引入项目,仅使用一部分功能。Spring Cloud SOFA 与其他开源或商业化 Spring Cloud 生态有着极好的兼容性,可以按需组合。当然我们更推荐完整引入 Spring Cloud SOFA 某一类型的组件(如全部引入微服务类型组件),以便获得完整的功能增强,并更易于与 SOFA 的中间件控制台搭配使用。