SpringCloud Alibaba Nacos

作为SpringCloud Alibaba的一个重要的组件,Nacos可实现动态服务发现、服务配置、服务元数据及流量管理

(官网地址:https://nacos.io/zh-cn/docs/what-is-nacos.html)

  • 服务发现和服务健康监测:支持基于DNS和基于RPC的服务发现,支持对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求;
  • 动态配置服务:动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置;
  • 动态 DNS 服务:动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务;
  • 服务及其元数据管理:支持从微服务平台建设的视角管理数据中心的所有服务及元数据。

我们先做一下准备工作,安装一下Nacos,本次使用的是最新版本的2.1.1

参考官网,在腾讯云服务器上使用docker部署单机版,也可以在本机部署(mac/linux)

(1)安装docker

linux:

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum install docker-ce docker-ce-cli containerd.io

mac:(使用Homebrew 安装:https://brew.sh/)

brew install --cask --appdir=/Applications docker

(2)安装docker-compose

linux:

yum install docker-compose

mac: 一般安装docker已经带了compose,所以不需要安装,可以检测一下是否已安装

docker-compose -v

(3)安装nacos

git clone https://github.com/nacos-group/nacos-docker.git
cd nacos-docker
docker-compose -f example/standalone-derby.yaml up -d

等待完成后,在地址上输入http://127.0.0.1:8848/nacos/ 账号/密码:nacos

注:若自己的云服务器上安装,想要外部测试使用,则需要去对应云服务上设置防火墙,把8848端口放行

1、服务发现

用Nacos作为注册中心,创建一个项目引用以下(官方wiki:https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-discovery)

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.8.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
 <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

配置文件配置nacos服务

server:
    port: 8206
spring:
    application:
        name: nacos-biz-service
    cloud:
        nacos:
            discovery:
                server-addr: 127.0.0.1:8848 #Nacos地址
management:
    endpoints:
        web:
            exposure:
                include: '*'

启动服务后查看nacos

2、配置中心

作为配置中心时,需要引入

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

注:如果不引入spring-cloud-starter-bootstrap读取不了bootstarp.yml/bootstrap.properties

将application.yml调整

spring:
    profiles:
        active: dev

新增bootstarp.yml

server:
    port: 8206
spring:
    application:
        name: nacos-biz-service
    cloud:
        nacos:
            config:
                file-extension: yaml #这里我们获取的yaml格式的配置
            server-addr: 127.0.0.1:8848#Nacos地址 可在此处统一配置

注:此处使用的是nacos2.x版本, 根据官方文档需要开放9849端口(官方文档:https://nacos.io/zh-cn/docs/2.0.0-compatibility.html)

然后我们去nacos页面上添加配置文件,匹配的规则如下:

${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

在项目中添加一个读取配置的接口方便测试

@RestController
@RefreshScope//动态刷新的注解
public class NacosConfigController {

    @Value("${biz.info}")
    private String bizInfo;

    @GetMapping("/biz-info")
    public String getBizInfo() {
        return bizInfo;
    }
}

接着我们测试一下动态刷新功能

测试成功,完成动态刷新和配置中心对接

Leave a Reply

Your email address will not be published. Required fields are marked *