目录
3.启动类添加@EnableDiscoveryClient注解
Nacos注册中心
1.什么是Nacos注册中心?
Nacos支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态 DNS 服务。
官方介绍:
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。
注册中心主要有三部分组成:
Nacos-Server:注册中心
提供服务的注册和发现。
Nacos-Provider:服务提供方
把自身的服务实例注册到 Nacos Server 中
Nacos-Consumer:服务调用方
通过 Nacos Server 获取服务列表,消费服务。
以下文章中以这三个服务举例:
Nacos-Provider (订单服务,端口:8080)
Nacos-Consumer(用户服务,端口:8081)
nacos(项目内配置完即可使用,nacos默认端口:8848)
服务注册
1.引入依赖
在 springcloud-parent 父工程中引入 SpringCloudAlibaba 的依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
在 Nacos-Provider 和 Nacos-Consumer 子工程中的pom文件中引入 nacos-discovery 依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2、在yml中配置nacos地址
在Nacos-Provider工程中配置application.yml
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.209.129:8848 #nacos服务的地址
application:
name: nacos-provider #向注册中心注册的名字
在Nacos-Consumer工程中配置application.yml
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.209.129:8848 #nacos服务的地址
application:
name: nacos-consumer#向注册中心注册的名字
3.启动类添加@EnableDiscoveryClient注解
在Nacos-Provider工程中的启动类上添加此注解:
@SpringBootApplication
@EnableDiscoveryClient//向注册中心注册该服务,并可以获取其他服务的调用地址
public class ConsumerApp {
public static void main(String[] args) {
SpringApplication.run(ConsumerApp.class);
}
}
在Nacos-Consumer工程中的启动类上添加此注解:
@SpringBootApplication
@EnableDiscoveryClient //向注册中心注册该服务,并可以获取其他服务的调用地址
public class ConsumerApp {
public static void main(String[] args) {
SpringApplication.run(ConsumerApp.class,args);
}
}
4.项目重新启动后,可以看两个服务都被注册进了 Nacos
Nacos配置中心
1.什么是Nacos配置中心
首先我们来看一下,微服务架构下关于配置文件的一些问题:
-
配置文件相对分散。
-
配置文件无法区分环境。
-
配置文件无法实时更新。
配置中心的思路:
-
首先把项目中各种配置全部都放到一个集中的地方进行统一管理。
-
当各个服务需要获取配置的时候,就来配置中心的接口拉取自己的配置。
-
当配置中心中的各种参数有更新的时候,也能通知到各个服务实时的过来同步最新的信息,使之动态更新。
2.Nacos配置中心入门
1.创建nacos_config
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
2.bootstrap.yml
注意:
客户端配置文件的名称必须为
bootstrap.yml
bootstrap.yml
比applicaton.yml
优先加载,应用于系统级别参数配置,一般不会变动;
application.yml
应用于SpringBoot项目的自动化配置
spring:
cloud:
nacos:
config:
server-addr: 192.168.88.132:8848
prefix: nacos-config #默认值是spring.application.name
file-extension: yaml #默认值是properties
3.启动类
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigApp {
public static void main(String[] args) {
SpringApplication.run(ConfigApp.class,args);
}
4.controller
@RestController
@RefreshScope //重新从BeanFactory获取一个新的实例(该实例使用新的配置)
public class ConfigController {
@Value("${spring.datasource.driver-class-name}")
private String className;
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Value("${spring.datasource.type}")
private String type;
@RequestMapping("/config")
public String config(){
System.out.println(this);
String configInfo = className+"<br>" +url+ "<br>" +username+ "<br>" +password+ "<br>" +type;
return configInfo;
}
5.在Nacos中新建配置文件
在 Nacos 中,dataId(配置文件的命名的规则) 的完整格式如下:
${spring.cloud.nacos.config.prefix}.${spring.cloud.nacos.config.file-extension}
说明
spring.cloud.nacos.config.prefix:默认是当前服务的服务名称
spring.cloud.nacos.config.file-extension:配置文件的格式(后缀),目前只支持yaml和properties
6.填写配置文件名称、格式、内容
内容如下:
server:
port: 80
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.204.129:8848
application:
name: nacos-config
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/health?characterEncoding=UTF-8
username: root
password: 1111
type: com.alibaba.druid.pool.DruidDataSource
7.测试
启动时加载配置文件
修改配置文件后nacos监听到MD5有变化则推送消息给客户端,客户端收到消息后会拉取最新配置
浏览器访问
配置隔离
Nacos配置管理模型
- Namespace:代表不同的环境配置隔离 如:开发、测试
- Group:可以代表某一个项目 如: XX电商项目
- DataId:配置文件/工程名称
获取配置集需要指定:
-
nacos服务地址,必须指定
-
namespace,如不指定默认public
-
group,如不指定默认 DEFAULT_GROUP
-
dataId,必须指定