Nacos技术

news2024/11/24 11:48:02

说明:Nacos是微服务框架中的注册中心技术,可用于管理、协调微服务之间的请求,可配合Feign技术,搭建一个完整的微服务框架。

一、安装&启动

可在官网(https://nacos.io/zh-cn/)提供的下载链接(https://github.com/alibaba/nacos/releases)中下载,下载后解压到一个没有中文、没有数字的路径下。打开目录的bin文件夹,在此目录下打开CMD,输入startup.cmd -m standalone 命令,启动Nacos,这种方式为单机模式、非集群模式启动,直接双击startup.exe为集群模式。
在这里插入图片描述
出现下面界面,为启动成功

在这里插入图片描述

此时,可以打开浏览器,输入:http://localhost:8848/nacos/,进入nacos平台,首次登录需要账号密码,都是nacos。

在这里插入图片描述

二、使用

在用户服务(8081端口)、订单服务(8082端口)的pom.xml文件中,添加注册依赖

        <!--nacos配置管理依赖【注册】-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

用户服务配置(application.yml)

server:
  port: 8081

# 1.数据源的配置
spring:
  # 1.1设置服务名称
  application:
    name: userservice

  # 1.2数据库配置
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db_spring_cloud
    username: root
    password: 123456

  # 1.3配置Nacos注册中心地址
  cloud:
    nacos:
      discovery:
        # 服务地址
        server-add: localhost:8848


# 2.mybatis配置
mybatis:
  configuration:

    # 显示SQL日志配置
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

    # 驼峰命名配置
    map-underscore-to-camel-case: true

  # 设置mapper.xml文件所在的路径
  mapper-locations: classpath:mapper/*.xml

订单服务配置(application.yml)

server:
  port: 8082

# 1.数据源的配置
spring:
  # 1.1设置服务名称
  application:
    name: orderservice

  # 1.2数据库配置
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db_spring_cloud
    username: root
    password: 123456

  # 1.3配置Nacos注册中心地址
  cloud:
    nacos:
      discovery:
        # 服务地址
        server-add: localhost:8848


# 2.mybatis配置
mybatis:
  configuration:

    # 显示SQL日志配置
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

    # 驼峰命名配置
    map-underscore-to-camel-case: true

  # 设置mapper.xml文件所在的路径
  mapper-locations: classpath:mapper/*.xml

启动这两个服务,打开nacos平台,可以看到这两个服务

在这里插入图片描述

(1)服务管理

在nacos服务器中,服务的结构如下图:
在这里插入图片描述

需要知道以下三点:

(1)微服务是根据服务名称区分的,名称相同视为同一个服务;

(1)不同命名空间之间是不能通信的;

(2)在集群环境中,nacos的负载均衡策略,会优先分配同一个集群下的服务;

命名空间

在nacos平台上,可手动新建命名空间

在这里插入图片描述

在程序中,配置文件中没有设置,默认会分配到public下,可通过下面的配置进行设置

spring:
  cloud:
    nacos:
      discovery:
        # 配置服务所在的命名空间
        namespace: 447cedef-498e-4200-a3bd-7a8ff51f4934

需要注意的是,命名空间的值是nacos上命名空间随机生成的ID

在这里插入图片描述

在程序中,通过下面的配置设置分组,不设置默认组名称为“DEFAULT_GROUP”;

spring:
  cloud:
    nacos:
      discovery:
        # 设置分组
        group: group1

集群

在程序中,通过下面的配置设置集群,不设置默认集群名称为“DEFAULT”;

spring:
  cloud:
    nacos:
      discovery:
        # 设置集群
        cluster-name: hz

配置效果

设置orderservice的命名空间,组,集群如下:

# 1.数据源的配置
spring:
  # 1.1设置服务名称
  application:
    name: orderservice

  # 1.2数据库配置
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db_spring_cloud
    username: root
    password: 123456

  # 1.3配置Nacos注册中心地址
  cloud:
    nacos:
      discovery:
        # 服务地址
        server-add: localhost:8848

        # 配置服务所在的命名空间
        namespace: 447cedef-498e-4200-a3bd-7a8ff51f4934

        # 设置分组
        group: group2

        # 设置集群
        cluster-name: hz

nacos平台

在这里插入图片描述


(不同命名空间之间不能通信)

在这里插入图片描述

(Load balancer does not have available server for client: userservice)

在这里插入图片描述

(2)配置管理

当微服务的数量非常多时,配置和维护服务的配置文件是一件工作量巨大的事情。可以使用nacos的配置中心,将本地相同的配置信息,写在nacos上(称为云端配置)。之后微服务需要使用直接关联就可以了,同样,需要修改时也只需要修改云端上的配置。

分类

云端配置分为如下四类:

  • 带环境名称的配置,如orderservice-dev.yaml,表示开发环境下的订单服务配置;

  • 不带环境名称的配置,如orderservice.yaml,表示订单服务配置;

  • 扩展配置,如extend.yaml,表示扩展的配置,不特指为某一个服务的扩展;

  • 共享配置,如logconfig.yaml,表示所有微服都可能使用到的配置;

配置

可在nacos平台上的,配置管理中添加配置,需要注意服务所在的命名空间

在这里插入图片描述

创建四种类型的配置

在这里插入图片描述

使用

在需要加载云端配置的服务中,添加nacos配置中心依赖

        <!--nacos配置管理依赖【配置中心】-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

创建bootstrap.yml文件,这个文件会在程序读取application.yml配置文件之前读取,是application.yml的前置文件,可以将关联nacos上的配置文件内容写在这里。
在这里插入图片描述

bootstrap.yml文件内容,可以根据实际需要设置

# bootstrap.yml
spring:
  cloud:
    nacos:
      discovery:
        config:
          server-addr: localhost:8848
          namespace: 447cedef-498e-4200-a3bd-7a8ff51f4934
          group: group2
          # 不带环境的配置
          file-extension: yaml
          refresh-enabled: true

          # 扩展配置(可配置多个)
          extension-configs:
            - data-id: extend1.yaml
              group: DEFAULT_GROUP
              refresh: true

            - data-id: extend2.yaml
              group: DEFAULT_GROUP
              refresh: true

          # 共享配置(可配置多个)
          shared-configs:
            - data-id: logconfig1.yaml
              group: DEFAULT_GROUP
              refresh: true

            - data-id: logconfig2.yaml
              group: DEFAULT_GROUP
              refresh: true


  # 激活带环境的配置文件
  profiles:
    active: dev

另外,需要注意的是,从云端拉取下来的配置,使用@Configuration注解使用的会实时更新,使用@Value注解使用的需要在类上额外加上@RefreshScope注解,才能同步更新;

(@Configuration注解读取的配置会实时同步)

在这里插入图片描述

(@Value注解读取的配置需要在类上面额外增加@RefreshScope注解)

在这里插入图片描述

配置优先级

当一个服务中,既有加载了云端配置文件,也有本地配置文件,当具有相同配置时,配置的优先级是:

  • 云端配置 > 本地配置;

其中,云端配置:

  • 带环境的配置 > 不带环境的配置 > 扩展配置 > 共享配置;

再其中,扩展配置、共享配置在bootstrap.yml中关联了多个时,使用规则是后来居上,即使用最后的配置

(当关联了多个扩展配置、共享配置,使用的是后面的)

在这里插入图片描述

(3)权重

在集群环境下,默认的负载均衡策略是随机访问,可以在nacos的服务详情中选择某一台服务器的权重,权重越高,被访问的概率越大。

在这里插入图片描述

(4)负载均衡

可以在配置文件中,设置集群环境下的负载均衡策略为Nacos规则

(bootstrap.yml文件)

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule

总结

Nacos是阿里巴巴提供的一门注册中心技术,Nacos在微服务之上,提供了一系列管理、协调微服务的功能,如服务管理、配置管理、权重、负载均衡等。

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

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

相关文章

【uni-app】自定义导航栏

【uni-app】自定义导航栏 新手刚玩uniapp进行微信小程序&#xff0c;甚至多端的开发。原生uniapp的导航栏&#xff0c;并不能满足ui的需求&#xff0c;所以各种查阅资料&#xff0c;导航栏自定义内容 整理如下&#xff1a; 需要修改的文件如下&#xff1a; 1、pages.json 修…

前端渲染模式CSR,SSR,SSG,ISR,DPR

目录 一、客户端渲染——CSR&#xff08;Client Side Rendering&#xff09; 二、服务器端渲染——SSR&#xff08;Server Side Rendering&#xff09; 三、静态站点生成——SSG&#xff08;Static Site Generation&#xff09; 四、增量静态生成——ISR&#xff08;Increm…

ASEMI快恢复二极管MUR2080CT参数, MUR2080CT规格

编辑-Z MUR2080CT参数描述&#xff1a; 型号&#xff1a;MUR2080CT 最大峰值反向电压(VRRM)&#xff1a;800V 最大RMS电压(VRMS)&#xff1a;430V 最大直流阻断电压VR(DC)&#xff1a;800V 平均整流正向电流(IF)&#xff1a;20A 非重复峰值浪涌电流(IFSM)&#xff1a;15…

科技赋能企业,实现数字化转型

科技是第一生产力&#xff0c;数字技术即科技&#xff0c;可以改变传统的商业模式&#xff0c;为各行各业注入新的活力。 推动企业数字化转型&#xff0c;可是实现行业的效率提升&#xff0c;实现跨界重组&#xff0c;重构产业模式&#xff0c;为产业格局重新赋能&#xff0c;最…

批发小程序怎么做

批发订货小程序功能介绍 我们的批发订货小程序是一个集订货浏览权限、一客一价、业务员端口、代客下单、订单汇总和订单打印等功能于一体的专业平台。以下是对这些功能的详细描述&#xff1a; 1. 订货浏览权限&#xff1a;我们的小程序可以为不同用户分配不同的订货浏览权限。…

山寨版 Threads登苹果下载榜第一,黑客借此分发恶意软件

最近&#xff0c;苹果在欧洲下架了一款假冒的Threads应用程序&#xff0c;有意思的是该APP吸引了大量的用户下载&#xff0c;最高峰时曾登录苹果下载榜第一名。 在发现该虚假APP后&#xff0c;苹果已经暂停了其开发者账户&#xff0c;随后更是将SocialKit LTD所有的应用程序全…

做PPT一定要知道这5个素材模板网站。

做PPT绝对不能错过的5个网站、PPT素材、PPT模板、PPT课件、PPT教程等全部都能免费下载&#xff0c;建议收藏&#xff01; 菜鸟图库 https://www.sucai999.com/search/ppt/0_0_0_1.html?vNTYwNDUx 菜鸟图库网有非常丰富的免费素材&#xff0c;像设计类、办公类、自媒体类等素材…

DBeaver数据库管理工具安装连接PostgreSQL和DM

文章目录 1. 安装2. 连接PostgreSQL3. 连接DM83.1 下载驱动3.2 添加驱动3.3 连接3.4 创建表空间和用户3.5 执行sql 1. 安装 下载地址 https://dbeaver.io/download/ 2. 连接PostgreSQL 配置显示所有数据库 第二个勾选会显示模板数据库 点击测试连接&#xff0c;然后下载驱动…

Helm 安装prometheus-stack 使用local pv持久化存储数据

目录 背景&#xff1a; 环境准备&#xff1a; 1. 磁盘准备 2. 磁盘分区格式化 local storage部署 1. 节点打标签 2. 创建local pv storageClass和prometheus-pv Prometheus-stack部署 1. 下载helm chart包 2. values.yaml 参数解释 3. 部署prometheus-stack 4. 查看…

运行软件plotsr时报错:“ImportError: Incomplete genomic information”

为了对 syri.out &#xff08;assembly的变异检测结果&#xff09;进行可视化处理&#xff0c;本人选择了plotsr软件对其基因组重排现象进行可视化&#xff1a; (base) [hgzhonghead01 08.assembly_calling]$ plotsr --sr syri.out --genomes ../data/Sc_R64.fasta --genomes …

什么是搜索引擎?2023 年搜索引擎如何运作?

目录 什么是搜索引擎&#xff1f;搜索引擎的原理什么是搜索引擎爬取&#xff1f;什么是搜索引擎索引&#xff1f;什么是搜索引擎检索?什么是搜索引擎排序&#xff1f; 搜索引擎的目的是什么&#xff1f;搜索引擎如何赚钱&#xff1f;搜索引擎如何建立索引?网页抓取文本处理建…

全网最细,接口自动化测试-数据库操作与日志模块,一篇打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 进行接口测试时&a…

Unity Shader - SV_POSITION 和 TEXCOORD[N] 的varying 在 fragment shader 中输出的区别

起因 因另一个TA同学问了一个问题 我抱着怀疑的心态&#xff0c;测试了一下 发现 varying 中的 sv_position 和 texcoord 的值再 fragment shader 阶段还真的不一样 而且 sv_position 还不是简单的 clipPos/clipPos.w 的操作 因此我自己做了一个试验&#xff1a; 结果还是不一…

Ext4文件系统介绍 - 实战篇

本文主要通过dd&#xff0c;hexdump和dumpe2fs工具分析ext4的磁盘二进制数据&#xff0c;加深对ext4文件系统的印象&#xff0c;要想理解本建议先阅读下Ext4文件系统介绍 - 理论篇_nginux的博客-CSDN博客。 磁盘超级块数据分析 根据理论篇我们知道ext4 layout中前1024字节是x…

Flask 使用Flask的session来保存用户登录状态例子

使用Python的Flask库实现的登录接口、查询金额接口和注销接口的示例。 当用户发送POST请求到/login接口时&#xff0c;代码会获取请求中的用户名和密码。如果用户名和密码匹配&#xff08;在示例中是admin和admin123&#xff09;&#xff0c;则会将用户名保存在session中&…

Scratch 放置建筑

Scratch 放置建筑 本程序的功能是放置和删除建筑。点击鼠标时建筑会复制并从初始位置向鼠标指针移动&#xff0c;每次复制都更换外观&#xff0c;距离鼠标指针较近时停止移动并调至垂直方向&#xff0c;延时0.5秒。延时过后鼠标指针接触到建筑每隔0.1秒进行判断&#xff0c;3次…

HOT62-N皇后

leetcode原题链接&#xff1a;N皇后 题目描述 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返…

灵活用工服务平台是怎样的?

灵活用工服务平台是为企业提供灵活用工人员招募、管理和支付等服务的平台。这些平台通常会建立一套在线系统&#xff0c;帮助企业发布岗位需求&#xff0c;筛选和招募合适的灵活用工人员&#xff0c;管理他们的工作时间和报酬。 企业选择做灵活用工的原因有这些&#xff1a; 1…

虚幻插件Landscaping Landscaping Mapbox

虚幻插件Landscaping & Landscaping Mapbox Landscaping offers an easy way to import GIS data as single Landscape or World Composition (UE4) or World Partition (UE5) or Procedural/Static Mesh. 提供了一种非常简单的方式来导入GIS数据&#xff0c;可以生成Lands…

力扣C++|一题多解之数学题专场(1)

目录 7. 整数反转 9. 回文数 12. 整数转罗马数字 13. 罗马数字转整数 29. 两数相除 7. 整数反转 给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 -如果反转后整数超过 32 位的有符号整数的范围 [2^31, 2^31 -1] &#xff0c;就返回 0。…