下载工作台
PaaS 组件实战

Spring Boot 集成:Apollo / Sentinel

试读上半部分 · 解锁后可读全文

第 13 章 · Spring Boot 集成:Apollo / Sentinel / 中间件

本章面向 Java / Spring Boot 3 微服务,给出与第 2~5 章 PaaS 组件及 Apollo 配置中心Sentinel 流量治理 的完整集成语法。

前置:MySQL、Redis、Nacos(可选)、RocketMQ/Kafka 已部署;应用通过 应用部署 → 自定义镜像 发布。


13.1 推荐工程结构

order-service/
├── src/main/java/com/shop/order/
├── src/main/resources/
│   ├── application.yml          # 本地默认 + 占位符
│   └── bootstrap.yml            # Apollo 等引导配置(可选)
├── Dockerfile
└── pom.xml

Namespaceapp;配置类组件在 middleware


13.2 依赖清单(pom.xml 摘要)

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
  </dependency>
  <dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
  </dependency>
  <!-- Nacos 注册发现(第 4 章)-->
  <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  </dependency>
  <!-- RocketMQ(第 4 章)-->
  <dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
  </dependency>
  <!-- Apollo -->
  <dependency>
    <groupId>com.ctrip.framework.apollo</groupId>
    <artifactId>apollo-client</artifactId>
    <version>2.2.0</version>
  </dependency>
  <!-- Sentinel -->
  <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency>
  <dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
  </dependency>
</dependencies>

13.3 Apollo 配置中心 2.2

适用场景

选用说明
配置集中管理数据库连接、开关、限流阈值
灰度发布按 IP/集群推送不同配置
与 Nacos 对比Apollo 偏配置;Nacos 注册+配置一体

商店部署参数

idapollo
镜像apolloconfig/apollo-portal:2.2.0
端口8070(Portal UI)
PVC10 Gi/opt/apollo
说明完整 Apollo 还需 ConfigService、AdminService、Meta;单 Portal 适合学习 UI 与客户端协议,生产需按官方补全组件或外接 MySQL

环境变量(Portal 演示)

env:
  - name: SPRING_DATASOURCE_URL
    value: "jdbc:mysql://mysql.data.svc.cluster.local:3306/apollo?characterEncoding=utf8"
  - name: SPRING_DATASOURCE_USERNAME
    value: "apollo"
  - name: SPRING_DATASOURCE_PASSWORD
    value: "ApolloPass123"

先在 MySQL 执行 Apollo 官方 apolloportaldb.sql 初始化库表。

客户端连接语法

application.yml

app:
  id: order-service

apollo:
  meta: http://apollo-configservice.middleware.svc.cluster.local:8080
  bootstrap:
    enabled: true
    namespaces: application,order-service.yaml
  cache-dir: /tmp/apollo-cache

环境变量方式(Deployment):

env:
  - name: APP_ID
    value: order-service
  - name: APOLLO_META
    value: http://apollo.middleware.svc.cluster.local:8070

代码读取:

@Value("${discount.rate:0.1}")
private double discountRate;

验收

Portal 修改 discount.rate → 发布 → 应用日志打印新值(或开启 apollo.autoUpdateInjectedSpringProperties)。


13.4 Sentinel 控制台 1.8.7

适用场景

选用说明
限流QPS 超过阈值快速失败
熔断降级下游慢/错误率升高时熔断
热点参数针对商品 ID 等参数限流

商店部署参数

idsentinel-dashboard
镜像bladex/sentinel-dashboard:1.8.7
端口8858
Namespacemiddleware

应用侧配置

spring:
  cloud:
    sentinel:
      transport:
        dashboard: sentinel-dashboard.middleware.svc.cluster.local:8858
        port: 8719
      eager: true

feign:
  sentinel:
    enabled: true

环境变量:

env:
  - name: JAVA_TOOL_OPTIONS
    value: "-Dcsp.sentinel.dashboard.server=sentinel-dashboard.middleware:8858"

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。