学会Nacos应用这一篇就够了

下载地址: https://github.com/alibaba/nacos/releases/tag/2.1.0

什么是Nacos

Nacos 由Alibaba开发,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
作为这样的一个平台,核心就是两一个功能,配置管理和服务注册与发现。

现在一般的Spring Cloud生态可以由 服务网关GateWay 、服务注册Nacos、服务配置Nacos、服务调用、OpenFeign、服务降级Hystrix几个部分注册

启动与关闭服务

Nacos默认集群模式,单机测试需加配置
Linux/Unix/Mac

启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
bash startup.sh -m standalone

Windows

启动命令(standalone代表着单机模式运行,非集群模式):
startup.cmd -m standalone

在这里插入图片描述

控制台:http://127.0.0.1:8848/nacos/#/login 默认账号密码 naocs

Linux/Unix/Mac

sh shutdown.sh

Windows


cmd shutdown.cmd

组成

在这里插入图片描述

Nacos的学习主要围绕着下图进行
在这里插入图片描述

SpringBoot快速搭建

环境搭建-依赖

pom.xml

        <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-config</artifactId>
            <version>${nacos.version}</version>
        </dependency>
        <!-- nacos注册中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>${nacos.version}</version>
        </dependency>
        <!--   feign 服务调用     -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>${openfeign.version}</version>
        </dependency>

环境搭建-application配置

application.yml

# nacos注册中心ip和端口
NACOS_SERVER: localhost:8848
NACOS_NAME: cloud-nacos-provider
NACOS_GROUP: DEFAULT_GROUP  

server:
  port: 10001

spring:
  profiles:
    active: dev 	#    配置文件使用的环境
    
  application:
    name: ${NACOS_NAME}
  cloud:
    nacos:
     config:
        server-addr: ${NACOS_SERVER}   # nacos本地服务器地址
        file-extension: yaml   # 配置文件的格式,默认properties
        group: ${NACOS_GROUP}   # 分组,默认DEFAULT_GROUP
#        namespace: dev # 使用命名空间
#        name:  # 设置data-id
      discovery:
        server-addr: ${NACOS_SERVER}  # 配置本地的Nacos服务器地址
        group: ${NACOS_GROUP}   # 分组,默认DEFAULT_GROUP
#        集群命名空间,一定要写的是命名空间的id ,不是name
#        namespace: 102a40ad-3a07-4ae7-8be0-638b8d698fed

Nacos配置文件的核心就是设置config 和 discovery
config用于设置读取配置管理中的配置,由外到内主要就是遵循配置 namespace 、group、 name

在这里插入图片描述
假如我们根据配置文件创建了以下配置
在这里插入图片描述
如果我们没有主动设置 name(data-id)和 namespace(命名空间) ,那么他自动寻找以下规则
namespace : 默认位public,可在命名空间出设置
dataID : 完整格式 如下

${prefix}-${spring.profiles.active}.${file-extension} 

其中 prefix 默认为 spring.application.name 的值,因此dataID 就变成了

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

在这里插入图片描述
如果主动设置了 name 即data-id设置好了,读取我们设置的配置,多个文件可以用

  cloud:
    nacos:
     config:
        server-addr: ${NACOS_SERVER}   # nacos本地服务器地址
        file-extension: yaml   # 配置文件的格式,默认properties
        group: ${NACOS_GROUP}   # 分组,默认DEFAULT_GROUP
 		shared-configs:
          - data-id: 

在这里插入图片描述

环境搭建-启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient //服务注册
@EnableFeignClients    //服务发现 
public class CloudNacosProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(CloudNacosProviderApplication.class, args);
    }
}

完成上述步骤,nacos基本就整合完了

配置持久化

nacos默认将数据存在本地文件夹中
在这里插入图片描述
我们也可以将数据存在mysql中,配置也很简单
1)新建库表,用它conf目录下的 sql文件即可
在这里插入图片描述
2)配置好application.properties
数据库配置一样可以设置集群
在这里插入图片描述

高可用集群

为了防止一个nacos崩掉,一般我们会创建三个或以上的nacos作为集群

startup.bat Model默认就是cluster集群模式

注意:配置集群需配置mysql持久化

  1. 指定下IP ,和端口(8848、8849、8850)

在这里插入图片描述
2)将cluster.conf.example改成cluster.conf
配置ip列表

在这里插入图片描述
在这里插入图片描述

服务器设置下多个地址,逗号隔开
在这里插入图片描述

@FeignClient基本使用

在A服务器要掉B服务器的接口,将B服务器接口
入参类型、返回类型、请求地址全路径再加上@FeignClient注解, 就会被Spring依赖注入

@FeignClient(value = "cloud-nacos-provider")
public interface DispatcherService {

    @PostMapping("/dispatch/user/saveUser")
    ResultEntity<DispatchCenterUserDto> saveUser(@RequestBody SysUserEntity sysUserEntity);

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值