Nacos

简介

动态服务发现、配置和服务管理平台,其主要功能如下:

  • 服务发现和服务健康监测
  • 动态配置服务
  • 动态 DNS 服务
  • 服务及其元数据管理

一、安装Nacos服务端( Nacos Server)

  1. 访问:https://github.com/alibaba/nacos/tags下载所需要的Nacos服务端
  2. 如果是本地开发,使用单机模式:修改”bin“文件夹下的“startup.cmd(linux下后缀为.sh)” ,将 set MODE=“cluster” 修改为 set MODE=“standalone”,之后双击启动即可
  3. 浏览器打开 IP:8848(端口默认为8848),登录,默认账号密码统一为 nacos

二、将应用向Nacos服务端注册(注册功能)

1. 引入依赖

代码如下(示例):

 <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
 </dependency>

2. 配置并查看:

  1. 在应用的"bootstrap.yml"配置文件中配置 Nacos Server 地址
spring:
  application:
  	name: servicename
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848  #服务端的地址
  1. 在启动类添加注解
    @EnableDiscoveryClient 此注解开启注册功能
@EnableDiscoveryClient   //添加的注解
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}
  1. 进入Nacos查看服务是否注册成功

3.命名空间,组,集群

命名空间(namespace)

Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,可以用来做最外层隔离
在这里插入图片描述

组(Group)

组在命名空间下
在这里插入图片描述

集群

discovery:cluster-name 集群配置名称

在这里插入图片描述

三、Nacos配置中心

配置获取流程

  1. 项目启动
  2. 读取本地配置文件(bootstrap.yml)
  3. 读取Nacos中的配置文件
  4. 读取本地配置文件(application.yml)
  5. 创建Spring容器
  6. 加载bean

1. 引入依赖

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

2. 配置

  1. 在服务创建文件"bootstrap.yml"配置文件,配置 Nacos Server 地址
spring:
  cloud:
    nacos:
      config:
        namespace: 4a759a7b-ca5c-48aa-be24-50c1c7265a24  #命名空间ID
        file-extension: yml  #配置项后缀
        ext-config:
          - dataId: service.yml #配置名称
            refresh: true  #开启自动刷新配置
        server-addr: 127.0.0.1:8848 #配置中心服务器地址(就是Nacos服务端地址,但是配置中心和注册中心的地址是分开的)

3. 完成上述步骤后,应用会从配置中心获取相应的配置,并添加在 Spring Environment 的 PropertySources 中。

  1. 打开Nacos管理页面,进入配置管理添加一个配置项,配置名称 “service.yml”,配置格式选为YAML,并在其中写入配置项。(注意:注意格式缩进)
user:
	name: jack
	age: 18
  1. 之后在应用中使用 @Value 注解来将对应的配置注入到 SampleController 的 userName 和 age 字段,并添加 @RefreshScope 打开动态刷新功能,之后可以在方法中引用,配置中心动态的修改值,查看是否会动态刷新。
 @RefreshScope
 class SampleController {

 	@Value("${user.name}")
 	String userName;

 	@Value("${user.age}")
 	int age;
 }
  1. @ConfigurationProperties() 注解
    prefix:参数的配置前缀
    在这里插入图片描述
    可以将配置文件映射到对应的类上,并且自动开启动态刷新
    在这里插入图片描述

4.配置文件优先级

环境配置->共享配置->本地配置

四、Nacos集群搭建

集群结构图
在这里插入图片描述

1. 搭建数据库,初始化数据库表结构

Nacos默认数据存储在内嵌数据库Derby中,不属于生产可用的数据库。官方推荐的最佳实践是使用带有主从的高可用数据库集群,这里我们以单点的数据库为例来讲解。

2.下载nacos安装包

nacos在GitHub上有下载地址:https://github.com/alibaba/nacos/tags,可以选择任意版本下载。

3.配置nacos

  • 目录说明:
    bin:启动脚本
    conf:配置文件
  • 进入nacos的conf目录,修改配置文件cluster.conf.example,重命名为cluster.conf:
    然后添加内容:(这里与你Nacos集群端口相同)
	127.0.0.1:8845
	127.0.0.1.8846
	127.0.0.1.8847
  • 然后修改application.properties文件,添加数据库配置
	spring.datasource.platform=mysql

	db.num=1 #数据库集群的数量

	db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
	db.user.0=root
	db.password.0=123

4.启动nacos集群

  • 将nacos文件夹复制三份,分别命名为:nacos1、nacos2、nacos3
  • 然后分别修改三个文件夹中的application.properties.
nacos1:
		server.port=8845
nacos3:
		server.port=8846
nacos2:
		server.port=8847
  • 然后分别启动三个nacos节点:
	startup.cmd

5. nginx反向代理

  • 下载nginx安装包

解压到任意非中文目录下,修改conf/nginx.conf文件,配置如下:

upstream nacos-cluster {
    server 127.0.0.1:8845;
	server 127.0.0.1:8846;
	server 127.0.0.1:8847;
}
server {
    listen       80;
    server_name  localhost;

    location /nacos {
        proxy_pass http://nacos-cluster;
    }
}

而后在浏览器访问:http://localhost/nacos即可。
代码中application.yml文件配置如下:

spring:
  cloud:
    nacos:
      server-addr: localhost:80 # Nacos地址
  1. 优化
  • 实际部署时,需要给做反向代理的nginx服务器设置一个域名,这样后续如果有服务器迁移nacos的客户端也无需更改配置.
  • Nacos的各个节点应该部署到多个不同服务器,做好容灾和隔离

官方文档

Nacos官方文档:https://nacos.io/zh-cn/docs/quick-start.html

Nacos服务注册与发现(Nacos Discovery Example):https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md

应用的配置管理(Nacos Config Example):https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我好帅啊~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值