Spring Cloud 注册中心 Nacos
服务管理
使用了一个大版本的控制,版本如下。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR9</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.7.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
1.下载Nacos
Nacos官网
根据官网上的步骤来进行nacos的搭建,我这里下载的是源码。
下载成功后,使用IDEA打开,先将maven仓库设置成自己的仓库。然后构建启动配置,这里设置以单机模式启动,不然会出现错误。
启动nacos,如果启动报版本兼容的错误,这里我们需要将项目 clean > install ,在启动即可。
启动成功之后浏览器访问 http://192.168.31.143:8848/nacos/index.html 账户密码 nacos/nacos。
到这里我们第一步就算完成了。
2.在项目使用nacos服务发现功能
- 导入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${latest.version}</version>
</dependency>
官网有强调这里nacos的版本必须根据自己项目的cloud版本相兼容。
- 修改配置
官网上使用的是properties的方式,我们通常习惯使用yml的方式。
spring:
application:
name: consumers-server #项目名称,在注册中心显示的名字
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 # nacos的地址
3.在启动类上添加注解
@SpringBootApplication
@EnableDiscoveryClient // 开启服务发现功能
public class MyConsumersApplication {
public static void main(String[] args) {
SpringApplication.run(MyConsumersApplication.class);
}
}
然后启动服务,在nacos上就能发现注册号的服务了。
配置管理
我们平常写项目会接入一些第三方平台的API,我们会在yml文件里面配置一些他们所需要的参数。如果我们想修改这些配置信息,那么就必须重启项目才能生效;但是使用nacos就可以帮助我们动态修改配置信息而不需要重启项目。
- 导入依赖
注意版本兼容
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${latest.version}</version>
</dependency>
2.添加配置
我们为了方便管理,把配置分开管理,新建一个bootstrap.yaml 文件
spring:
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yaml #文件后缀名
application:
name: user-server # 文件的前缀
profiles:
active: dev # 环境
然后在 application.yaml 里面写一段配置
使用@Value 获取到配置信息的值;这里我们做一个简单的测试。
第一次调用,返回的结果是我们配置的ddz
然后我们在 nacos 配置管理控制台新建一个配置文件
添加成功后,我们还需要在使用这个配置的类上加上原生注解 @RefreshScope 实现配置自动更新。
重启项目,然后再请求一下接口,可以发现返回的值已经被修改。
我们可以重复修改 nocas 里配置文件的值,这里返回的值会实时更新。
OpenFeign服务调用 + Sentinel服务降级
- 引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
-
在启动类增加注解 @EnableFeignClients ,并修改配置启动 sentinel 的功能
-
创建一个openFeign的调用接口,接口的方法名和被调用服务暴露的方法一样
-
创建接口接口实现类,用于order-server服务无法被用 降级 并返回假数据,并把他放入IOC容器中。
-
在接口上加上注解 @FeignClient 并指定参数。
然后我们就可以在user-order上调用order-server 服务了,如果order-server挂掉了,那么就会启用降级功能保护user-order服务,防止雪崩效应。