Nacos详解(springcloud+nacos实战)

Nacos

1.介绍

Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现配置管理服务管理平台

  • Nacos就是注册中心 + 配置中心的结合

在这里插入图片描述

Nacos可以用来做服务治理(服务注册和发现)和配置管理,Nacos主要提供以下四大功能:

  • 服务发现与服务健康检查:Nacos使服务更容易注册,并通过DNS或HTTP接口发现其他服务,Nacos还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求。
  • 动态配置管理:动态配置服务允许您在所有环境中以集中和动态的方式管理所有服务的配置。
  • 动态DNS服务:Nacos提供基于DNS协议的服务发现能力,旨在支持异构语言的服务发现,支持将注册在Nacos上的服务以域名的方式暴露端点,让三方应用方便的查阅及发现。
  • 服务和元数据管理:Nacos能从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略。

2.Nacos专业术语

2.1 服务 (Service)

服务是指一个或一组** 软件功能**,其目的是不同的客户端可以重用

2.2 服务注册中心 (Service Registry)

  • 存储服务实例和服务负载均衡策略的数据库。
  • 它是服务实例及元数据的数据库
  • 服务实例在启动时注册服务注册表,并在关闭注销
  • 服务和路由器的客户端查询 服务注册表以查找服务的可用实例
    实例
    提供一个或多个服务的具有可访问网络地址(IP:Port)的进程。

2.3服务提供方 (Service Provider)

提供可复用和可调用 服务的应用方

2.4服务消费方 (Service Consumer)

发起对某个服务调用的应用方

2.5版本依赖关系

在这里插入图片描述

Nacos 注册中心

1. 启动NacosServer

NacosServer 相当于 EurekaServer,只不过 eurekaServer 使我们自己搭建的一个项目,而 NacosServer 是阿里已经提供好了的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装好后
在这里插入图片描述
startup.cmd -m standalone 启动 单例模式, 默认(集群模式)
在这里插入图片描述
nacos后台管理平台
在这里插入图片描述

2 使用 Nacos 做注册中心

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

2.1 nacos-client-b

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

2.2 nacos-client-b 开启服务发现客户端

  • 服务发现:客户端把自己的服务car-service 开启服务发现后,可以被注册中心 发现。 然后,才能注册到注册中心
  • 注册中心:注册中心是一个地址的 注册列表 信息

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

2.3 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.powernode</groupId>
    <artifactId>nacos-client-b</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>02-nacos-client-b</name>
    <description>02-nacos-client-b</description>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.12.RELEASE</spring-boot.version>
        <spring-cloud-alibaba.version>2.2.7.RELEASE</spring-cloud-alibaba.version>
    </properties>
    <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>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${
    
    spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${
    
    spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>


</project>

nacos-client-a 同上操作, 可以注册 同一个命名空间 的 Z_GROUUP组
在这里插入图片描述

在这里插入图片描述

2.4 同组才能访问

  • 跨命名空间不能访问,如 crm-space的 A_GROUP 的 user-service 不能访问 car-space 的
    user-service
  • 跨组 不能访问,如 A_GROUP 的 user-service 不能访问 B_GROUP 的 user-service
  • 同组 才能访问, 如 同一个组 A_GROUP 下的 两个service才能访问
    在这里插入图片描述

2.5 Nacos集成OpenFeign做远程调用

在这里插入图片描述
写openfeign接口
在这里插入图片描述
在这里插入图片描述
client-a 消费者和 client-b服务提供者 都启动,然后访问 http://localhost:8080/test测试

在这里插入图片描述

2.6 Nacos集成OpenFeign和gateway

创建gateway模块, 引入依赖 Gateway 和 Nacos Service Discovery
配置文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Nacos 配置文件中心

在这里插入图片描述

1.新建配置文件

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

2.新建nacos-config-a模块

sping模块
引入依赖 Spring Web 和 Nacos Configuration

读取配置中心的nacos-config-dev.yml 文件
在这里插入图片描述
在这里插入图片描述
测试 http://localhost:8080/info 即可

3.回滚

配置中心的配置文件,可以回滚到之前写的内容。
在这里插入图片描述

4.读取 多个配置文件

在配置中心,创建 相应的配置文件,操作跟读取单个配置文件一样。

两种写法,推荐写法1

写法1:
user-center-dev.yml
application-dev.yml

#  读取共享配置文件
server:
  port: 8082
spring:
  application:
    name: nacos-config-test
  cloud:
    nacos:
      config:
        server-addr: localhost:8848 #注册地址不写,默认:localhost:8848
        username: nacos
        password: nacos
        namespace: 2f8c127f-53d0-4a62-84ad-4f88000d9292 # 目前读取多配置文件的方式 只支持在同一个命名空间下

        prefix: user-center  # 读自身配置文件  A_GROUP下
        group: A_GROUP
        file-extension: yml

        shared-configs:    # 读共享配置文件
          - application-dev.yml #  可以写共享的文件名称 只能在 DEFAULT_GROUP 默认组下(且放在当前命名空间下)

#          - dataId: application-dev.yml # 这两种写法都可以
#            group: C_GROUP
#            refresh: true

  profiles:
    active: dev

#总结
#1.本地 bootstrap.yml 写什么?  2.远端的配置文件写什么?
#本地:
#1. 应用名称 spring.application.name
#2. nacos的注册和拉取配置文件
#
#远端:
#1.端口 数据源 redis mq 能放远端的全放,因为方便管理。 包括自定义配置

写法2:
user-center-dev.yml
member-center-dev.yml

server:
  port: 8082
spring:
  application:
    name: nacos-config-test
  cloud:
    nacos:
      config:
        server-addr: localhost:8848 #注册地址不写,默认:localhost:8848
        username: nacos
        password: nacos
        namespace: 2f8c127f-53d0-4a62-84ad-4f88000d9292 # 目前读取多配置文件的方式 只支持在同一个命名空间下
#        读取两个个配置文件1:user-center-dev.yml, 2:member-center-dev.yml
        extension-configs:  #可以读多个配置文件,需要在同一个命名空间下,可以是不同的组
          - dataId: user-center-dev.yml
            group: A_GROUP
            refresh: true

          - dataId: member-center-dev.yml
            group: B_GROUP
            refresh: false  # 不动态刷线配置文件
        file-extension: yml # 后缀

#        读取一个配置文件 user-center-dev.yml
#        prefix: user-center
#        file-extension: yml
#  profiles:
#    active: dev

猜你喜欢

转载自blog.csdn.net/qq_45432276/article/details/132285981
今日推荐