Nacos详解(springcloud+nacos实战)

news2024/12/23 12:25:01

Nacos详解

  • Nacos
    • 1.介绍
    • 2.Nacos专业术语
      • 2.1 服务 (Service)
      • 2.2 服务注册中心 (Service Registry)
      • 2.3服务提供方 (Service Provider)
      • 2.4服务消费方 (Service Consumer)
      • 2.5版本依赖关系
  • Nacos 注册中心
    • 1. 启动NacosServer
    • 2 使用 Nacos 做注册中心
      • 2.1 nacos-client-b
      • 2.2 nacos-client-b 开启服务发现客户端
      • 2.3 pom.xml
      • 2.4 同组才能访问
      • 2.5 Nacos集成OpenFeign做远程调用
      • 2.6 Nacos集成OpenFeign和gateway
  • Nacos 配置文件中心
    • 1.新建配置文件
    • 2.新建nacos-config-a模块
    • 3.回滚
    • 4.读取 多个配置文件

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/882670.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

部门用户权限应用的设计和创建(进行中)

数据库表设计 代码实现之前首先是表设计&#xff0c; 六个基本步骤 1.需求分析 (分析用户需求,包括数据、功能和性能需求&#xff09; 2.概念结构设计(主要采用 E-R图) 3.逻辑结构设计 (将ER图转换成表,实现从E-R模型到关系模型转换&#xff09; 4.数据库物理设计 (为设计的…

深度学习的“前世今生”

1、“感知机”的诞生 20世纪50年代&#xff0c;人工智能派生出了这样两个学派&#xff0c;分别是“符号学派”及“连接学派”。前者的领军学者有Marvin Minsky及John McCarthy&#xff0c;后者则是由Frank Rosenblatt所领导。 符号学派的人相信对机器从头编程&#xff0c;一个…

Vue-5.编译器idea

关闭 IDEA 自动更新 IDEA无法搜索插件 填写idea下载插件的官方地址点击ok测试成功则ok https://plugins.jetbrains.com/idea 全局内存配置&#xff08;重启后生效&#xff09; 部署 Alibaba Cloud toolkit&#xff08;部署代码的利器&#xff09; Git&#xff08;需要安装gi…

人工智能原理(4)

目录 一、确定性推理 1、推理方式 2、控制策略 二、推理的逻辑基础 1、永真和可满足性 2、等价性和永真蕴含 3、置换与合一 三、自然演绎推理 四、归结演绎推理 1、子句型 2、鲁滨逊归结原理 3、归结策略 一、确定性推理 推理&#xff1a;就是按照某种策略从已有事…

微机原理与接口技术 学习笔记(二) 存储器

文章目录 一&#xff0c;存储器1.1 概述1.1.1 半导体存储器的分类按制造工艺&#xff1a; 易失性或挥发性存储器 / 不易失性或不挥发性存储器按制造工艺&#xff1a; 1.1.2 半导体存储器的性能指标1.1.3 半导体存储器的一般结构及组成 1.2 随机存取存储器 RAM1.2.1 静态RAM1.2.…

操作符和表达式求值

目录 1.运算符的优先级和结合性 1.1运算符的优先级 1.2结合性 2.操作符的使用最终带来的是一个表达式的值 2.1.隐式类型转换&#xff08;整型提升&#xff09; 2.1.1整形提升的例子 2.2算术转换 1.运算符的优先级和结合性 运算符是编程语言中的基本元素之一&#xff0c;主…

临床试验三原则-对照、重复、随机

临床试验必须遵循三个基本原则&#xff1a;对照、重复、随机。 一、对照原则和对照的设置 核心观点&#xff1a;有比较才有鉴别。 对照组和试验组同质可比。 三臂试验 安慰剂&#xff1a;试验组&#xff1a;阳性对照组1&#xff1a;n&#xff1a;m&#xff08;n≥m&#xff…

论文略读:城市道路场景下车辆编队运动规划与控制算法研究

1. 一些观点&#xff1a; &#xff08;1&#xff09;我曾经认为不能复现的论文都是垃圾。我现在看到能够量产的论文之后发现&#xff0c;论文的复现实属难得&#xff0c;即使给你代码&#xff0c;反复钻研&#xff0c;一个月之久才敢说略微看懂&#xff0c;所以论文的复现实在是…

使用 `tailwindcss-patch@2` 来提取你的类名吧

使用 tailwindcss-patch2 来提取你的类名吧 使用 tailwindcss-patch2 来提取你的类名吧 安装使用方式 命令行 Cli 开始提取吧 Nodejs API 的方式来使用 配置 初始化 What’s next? tailwindcss-patch 是一个 tailwindcss 生态的扩展项目。也是 tailwindcss-mangle 项目重要…

高等数学教材重难点题型总结(二)导数与微分

本章重点题目较少&#xff0c;除了*标题页没什么特别难的&#xff0c;本帖出于总结性的角度考虑并未囊概全部的*标&#xff0c;最后会出一期*标题的全部内容整理&#xff0c;在攻克重难点的基础上更上一层楼。 1.根据定义求某点处的导数值 2.通过定义证明导数 3.左右导数的相关…

QT使用QML实现地图绘制虚线

QML提供了MapPolyline用于在地图上绘制线段&#xff0c;该线段是实线&#xff0c;因此我使用Canvas自定义绘制的方式在地图上绘制线段&#xff0c;如图&#xff1a; 鼠标在地图上点击后&#xff0c;在点击位置添加图标 &#xff0c;当有多个图标被添加到地图上后&#xff0c;计…

openGauss学习笔记-40 openGauss 高级数据管理-锁

文章目录 openGauss学习笔记-40 openGauss 高级数据管理-锁40.1 语法格式40.2 参数说明40.3 示例 openGauss学习笔记-40 openGauss 高级数据管理-锁 如果需要保持数据库数据的一致性&#xff0c;可以使用LOCK TABLE来阻止其他用户修改表。 例如&#xff0c;一个应用需要保证表…

MTK Android非常用分辨率修改充电动画

非标准分辨率的屏,配置MTK Android的关机充电动画. 环境 芯片 MTK 系统 Android 服务器 ubuntu 屏幕分辨率356*400,不是常见的分辨率. 原始充电动画显示异常,画面扭曲. 方法 确定使用的图片 vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo 这个目录下…

05-基础入门-系统及数据库等

基础入门-系统及数据库等 一、操作系统层面1、识别操作系统常见方法2、简要两者区别及识别意义3、操作系统层面漏洞类型对应意义4、简要操作系统层面漏洞影响范围 二、数据库层面1、识别数据库类型常见方法2、数据库类型区别及识别意义3、数据库常见漏洞类型及攻击4、简要数据库…

【【STM32之GPIO】】

STM32之GPIO 学完了正点原子自带的视频课之后感觉仍然一知半解现在更新一下来自其他版本的STM32学习 GPIO 就是 General Purpose Input Output 中文名叫通用输入输出口 可配置8种输入输出模式 引脚电平 0V~3.3V 部分引脚可容忍5V 输出模式下可控制端口输出高低电平&#xff…

MongoDB增删改查操作

数据库操作&#xff1a; 在MongoDB中&#xff0c;文档集合存在数据库中。 要选择使用的数据库&#xff0c;请在mongo shell程序中发出 use <db> 语句 // 查看有哪些数据库 show dbs;// 如果数据库不存在&#xff0c;则创建并切换到该数据库&#xff0c;存在则直接切换到…

CS5263 DP转HDMI 4k@60Hz转接线方案,替代IT6563 PS176方案

集睿致远/ASL推出的CS5263是一款DP转HDMI 2.0音视频转换芯片&#xff0c;主要用于设计DP转HDMI2.0音视频转换器或者DP转HDMI 4K60Hz音视频转接线等产品种适用于需要视频协议转换的电缆适配器、电视接收器、监视器和其他应用。 CS5263参数 DisplayPort输入&#xff08;接收器&a…

电脑如何快速查看系统中的驱动是否安装

第一步&#xff1a;winR 打开运行命令窗口 第二步输入&#xff1a;在打开输入框中输入driverquery&#xff0c;点击确定或按下回车键&#xff0c;命令行页面列出本机相关驱动信息。 1、driverquery 驱动查询 2、driverquery /V 驱动程序查询/ V

在 React+Typescript 项目环境中创建并使用组件

上文 ReactTypescript清理项目环境 我们将自己创建的项目环境 好好清理了一下 下面 我们来看组件的创建 组件化在这种数据响应式开发中肯定是非常重要的。 我们现在src下创建一个文件夹 叫 components 就用他专门来处理组件业务 然后 我们在下面创建一个 hello.tsx 注意 是t…

多智能体共识算法的粗略数学证明

这篇文章是对论文《Consensus and Cooperation in Networked Multi-Agent Systems》中定理一的粗略数学证明。 论文中的定理一&#xff1a; 对一个由 n 个智能体以拓扑结构 G 组成的网络&#xff0c;使用以下共识算法&#xff1a; x ˙ i ( t ) Σ j ∈ N i a i j ( x j ( t…