nacos介绍
1、Nacos简介
Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
Nacos注册中心分为server与client,server采用Java编写,为client提供注册发现服务与配置服务。而client可以用多语言实现,client与微服务嵌套在一起,nacos提供sdk和openApi,如果没有sdk也可以根据openApi手动写服务注册与发现和配置拉取的逻辑
2、Nacos优势
常见的注册中心:
Eureka(原生,2.0遇到性能瓶颈,停止维护)
Zookeeper(支持,专业的独立产品。例如:dubbo)
Consul(原生,GO语言开发)
Nacos
相对于 Spring Cloud Eureka 来说,Nacos 更强大。
Nacos = Spring Cloud Eureka + Spring Cloud Config
Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config。
通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。
通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。
Nacos安装(注册中心-服务端,使用SaaS,软件即服务)
为了方便,这里直接使用 docker 安装
docker run -d --name nacos -p 8848:8848 nacos/nacos-server:2.0.0
搭建nacos服务
在父项目上右击 > new > 新建 Module…
项目起名为 spring-cloud-alibaba-2021-user
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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>spring-cloud-alibaba-2021</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>spring-cloud-alibaba-2021-user</artifactId>
<dependencies>
<!-- springweb 启动依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- nacos 服务注册发现(客户端)依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- nacos-config 配置中心依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--spring-cloud-dependencies 2020.0.0 版本不在默认加载bootstrap.yml 文件,如果需要加载bootstrap 文件需要手动添加依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
</dependencies>
</project>
application.yml 内容如下
server:
port: 8089
spring:
# 后面的bean会覆盖前面相同名称的bean
main:
allow-bean-definition-overriding: true
bootstrap.yml 内容如下,bootstrap.yml 文件比 application.yml 先加载,主要用于存放一些不会改变的配置,application.yml 存放一些经常需要改动的配置;
spring:
application:
name: user-demo
profiles:
active: yexindong_active
cloud:
nacos:
discovery:
server-addr: chn520.cn:8848 # 服务注册中心地址
namespace: public # 注册到nacos的名称空间,默认为public
config:
prefix: yexindong_nacos_prefix
file-extension: yaml # 指定yaml格式的配置, 必须要放到bootstrao.yml 才会生效,放到application下不会生效
server-addr: chn520.cn:8848 #配置中心地址
group: DEFAULT_GROUP
父项目的 pom.xml 文件加入modules
<modules>
<module>spring-cloud-alibaba-2021-user</module>
</modules>
新建启动类 UserApp.java
package com.alibaba.cloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableDiscoveryClient
public class UserApp {
public static void main(String[] args) {
SpringApplication.run(UserApp.class, args);
}
}
新建controller层 UserController.java
package com.alibaba.cloud.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope // 不重启即可刷新 nacos配置
@RequestMapping("/user")
public class UserController {
@Value("${cache:default}")
private String cache;
/**
* 获取注册中心的配置
* @return
*/
@RequestMapping("/getConfig")
public String getConfig(){
return "config:" + cache;
}
}
此时 项目结构如下
配置nacos
网页上打开nacos,进入 配置管理 > 配置列表 ,点击右边的 +
号
此时会打开新建配置的页面,
- DataId 输入:
yexindong_nacos_prefix-yexindong_active.yaml
- 配置格式 选择:
YAML
- 配置内容 中输入:
cache: 123456
- 点击 右下角的
发布
按钮
发布成功后,就可以在列表中看到刚刚发布的配置
注册
启动 UserApp.java 中的main方法,然后在nacos的 服务管理 > 服务列表 中查看,发现服务已经注册上去了
配置功能
然后访问 地址: http://localhost:8089/getConfig
,获取配置成功
修改配置
接下来在nacos中修改配置,将 cache改为 789
然后再次访问 http://localhost:8089/getConfig
,配置已经更新了