08 Spring Cloud Alibaba
创建统一的依赖管理
创建一个工程名为 spring-cloud-alibaba-dependencies 的项目,pom.xml 配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.chanshiyu</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>spring-cloud-alibaba-dependencies</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Spring Settings -->
<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
<spring-cloud-alibaba.version>2.1.0.RELEASE</spring-cloud-alibaba.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR2</version>
<type>${spring-cloud.version}</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.chanshiyu.nacosprovider.NacosProviderApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>服务注册与发现
服务注册与发现使用 Nacas,直接启动即可。
服务提供者
创建服务提供者
创建一个工程名为 spring-cloud-alibaba-nacos-provider 的项目,pom.xml 配置文件如下:
Application
通过 @EnableDiscoveryClient 注解表明是一个 Nacos 客户端,该注解是 Spring Cloud 提供的原生注解。
application.yml
测试服务
服务消费者
使用 LoadBalanceClient 和 RestTemplate 结合的方式来访问。创建一个工程名为 spring-cloud-alibaba-nacos-consumer 的项目,pom.xml 配置文件如下:
Application
application.yml
Configuration
测试服务
服务消费者(Feign)
创建服务消费者
创建一个工程名为 spring-cloud-alibaba-nacos-consumer-feign 的项目,pom.xml 配置文件如下:
Application
通过 @EnableFeignClients 注解开启 Feign 功能:
application.yml
测试服务
创建 Service:
创建 Controller:
熔断器
阿里巴巴开源了 Sentinel 组件,实现了熔断器模式,Spring Cloud 对这一组件进行了整合。
添加依赖
application.yml
fallback
service
仪表盘监控
启动 sentinel 控制台。修改 application.yml,添加 sentinel 配置:
路由网关
创建路由网关
创建一个工程名为 spring-cloud-alibaba-nacos-gateway 的项目,pom.xml 配置文件如下:
需要注意:
Spring Cloud Gateway 不使用
Web作为服务器,而是 使用WebFlux作为服务器,Gateway 项目已经依赖了starter-webflux,所以这里 千万不要依赖starter-web由于过滤器等功能依然需要 Servlet 支持,故这里还需要依赖
javax.servlet:javax.servlet-api
Application
application.yml
过滤器
最后更新于
这有帮助吗?