接入 Spring Cloud SOFA

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 的中间件控制台搭配使用。