SpringCloud Alibaba【二】nacos

news2024/11/23 10:33:20

nacos配置与使用

  • nacos初步使用
    • nacos安装与配置
      • 创建命名空间
    • nacos使用与配置
      • 创建新项目作为父项目
    • 创建nacos服务端项目
      • pom.xml
      • application.yml
      • 启动类
    • 创建nacos客户端项目
        • pom.xml
      • application.yml
      • 启动类
    • 启动测试
  • nacos配置负载均衡
    • 改造生产者nacos-provider-project
      • controller层
    • 改造消费者nacos-consumer-project
      • 配置负载均衡
      • controller
    • 测试
  • nacos配置中心
    • 创建命名空间
    • 修改生产者nacos-provider-project
      • 增加一个配置文件bootstrap.properties
      • 在controller层增加注解@RefreshScope
    • 测试

nacos初步使用

Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
简单来说,nacos可以用来管理一个springcloud项目中各个模块与组件。安装运行nacos后可以在专门的页面上看到注册进nacos的各个模块的信息。
以上是个人理解,如有不对,可在评论区纠正。

nacos安装与配置

GitHub下载地址
在这里插入图片描述
在这里插入图片描述
在此目录下进入cmd
输入命令:startup.cmd -m standalone
在这里插入图片描述
访问控制台中的地址,用户名密码都是nacos
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
如果这里访问页面的IP地址与本机地址不同,说明nacos使用了虚拟网卡。如果想要ip地址为本机ip,需要在网络适配器中禁用虚拟卡
在这里插入图片描述

创建命名空间

在这里插入图片描述
创建成功后系统会生成一个唯一的id,这个id写在生产者与消费者的yml文件中(下文已写出)。这样nacos会将项目中的服务注册到指定的命名空间中,避免多个项目混淆。

nacos使用与配置

创建新项目作为父项目

创建新项目后,删除src文件夹,只保留pom.xml
在这里插入图片描述
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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.hzx</groupId>
    <artifactId>testmaven32springcloud</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <!--spring cloud alibaba 2.2.6.RELEASE-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.2.6.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

我的springboot版本是2.3.2,对应的springcloud-alibaba版本是2.2.6。需要注意springboot和springcloud alibaba版本要相对应。

创建nacos服务端项目

名字是:nacos-provider-project
在这里插入图片描述

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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>testmaven32springcloud</artifactId>
        <groupId>com.hzx</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>nacos-provider-project</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.3.2.RELEASE</version>
        </dependency>
		<!--discovery依赖是用来注册到nacos客户端的-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.7.RELEASE</version>
        </dependency>
        <!--config依赖是用来完成配置中心功能-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.2.7.RELEASE</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

application.yml

server:
  port: 8081
spring:
  cloud:
    nacos:
      discovery:
        server-addr: http://192.168.220.1:8848
        namespace: 8302a253-b30a-4a13-bdeb-0caf566317b9
  application:
    name: nacos-provider

启动类

@SpringBootApplication
@EnableDiscoveryClient
public class StartNacosProvider{
    public static void main(String[] args) throws Exception {
        SpringApplication.run(StartNacosProvider.class, args);
    }
}

创建nacos客户端项目

名字是:nacos-consumer-project

pom.xml

与服务端的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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>testmaven32springcloud</artifactId>
        <groupId>com.hzx</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>nacos-consumer-project</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.3.2.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.2.7.RELEASE</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

application.yml

server:
  port: 8091
spring:
  cloud:
    nacos:
      discovery:
        server-addr: http://192.168.220.1:8848
        namespace: 8302a253-b30a-4a13-bdeb-0caf566317b9
  application:
    name: nacos-consumer

启动类

@SpringBootApplication
@EnableDiscoveryClient
public class StartNacosConsumer {
    public static void main(String[] args) throws Exception {
        SpringApplication.run(StartNacosConsumer.class, args);
    }
}

启动测试

先启动服务端再启动客户端
在这里插入图片描述
在这里插入图片描述
在nacos网站可以看到服务已经注册进nacos中
在这里插入图片描述


nacos配置负载均衡

改造生产者nacos-provider-project

controller层

@RestController
public class ProviderController {
    
    @Value("${server.port}")
    private String port;

    @RequestMapping(value = "/nacos/provider/get/{id}",method = RequestMethod.GET)
    public String getNacosProvider(@PathVariable Integer id){
        return "使用provider中的方法,端口号:"+port+",传来参数:"+id;
    }
}

改造消费者nacos-consumer-project

配置负载均衡

@Configuration
public class ConsumerConfig {

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

controller

@RestController
public class ConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping(value = "/nacos/consumer/get/{id}",method = RequestMethod.GET)
    public String getNacosConsumer(@PathVariable Integer id){
        return restTemplate.getForObject("http://nacos-provider/nacos/provider/get/"+id,String.class);
    }
}

测试

现在启动两个生产者,先启动一个生产者然后修改一下端口号再启动一个生产者
在这里插入图片描述
在这里插入图片描述
现在有两个 生产者,端口号分别为8081和8082。
启动消费者消费者端口号为8091
现在通过apifox调用消费者的接口
在这里插入图片描述
在这里插入图片描述
根据返回值可以看到,消费者分别调用了两个生产者的接口,达成负载均衡的效果。
可以在nacos网站未各个生产者分配权重。权重越高被访问的频率越高,权重设置为0则实例完全不会被访问。
在这里插入图片描述
在这里插入图片描述
使用负载均衡,可以合理利用资源,服务器性能有差异,当实例部署在性能不同的机器上时,可以通过设置权重,让性能好的机器承担更多的用户请求;另外,在升级服务时,通过调整权重进行平滑升级,例如,把实例1权重调节为0,用户只能去调用实例2、实例3的情况,待实例1升级后,也可以将实例1的权重设置为0.1,让一部分用户先体验,实例1稳定后再调高权重。


nacos配置中心

SpringCLoud Alibaba的Nacos相对于SpringCloud而言,实现了Eureka和Config和Ribbon的作用,上面已经介绍了nacos对应eureka可ribbon的内容,下面介绍config的内容。
nacos的配置中心中,所有服务使用nacos上面的配置,不走本地配置。

创建命名空间

现在nacos网站上创建一个新的命名空间
在这里插入图片描述
在这里插入图片描述

修改生产者nacos-provider-project

增加一个配置文件bootstrap.properties

配置文件是先加载bootstrap再加载application,所有读取nacos的配置写在bootstrap配置里。

spring.application.name=nacos-provide-config-center
spring.cloud.nacos.config.server-addr=http://192.168.220.1:8848
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.namespace=8302a253-b30a-4a13-bdeb-0caf566317b9
spring.profiles.active=dev
spring.cloud.nacos.config.refresh-enabled=true

在nacos网站里同样需要配置
在这里插入图片描述

bootstrap.properties文件中输入的内容与在网页里配置的内容相一致

application.name会对应nacos上面配置文件的dataid值

server-addr是nacos的地址

file-extension是对应nacos上面配置文件的扩展名

namespace是对应nacos上面配置文件所属的命名空间

active是表示后缀使用哪个配置文件,例如nacos-provide-config-center-dev.yaml,nacos-provide-config-center-test.yaml

refresh-enabled是开启配置文件自动刷新(修改nacos的配置文件后默认不会自动刷新,除非重启服务。注意:需要结合@RefreshScope注解一起使用)

在这里插入图片描述

在controller层增加注解@RefreshScope

在这里插入图片描述

测试

启动生产者与消费者后,可以在nacos网站的配置中看到,端口号与本地不同。

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

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

相关文章

uniapp vue国际化 i18n

一、安装 vue-i18n npm i vue-i18n 二、新建i18n目录 1、en.json 内容 {"loginPage":{"namePh":"Please enter your login account","passwordPh":"Please enter password"} } 2、zh-CN.json 内容 {"loginPage&qu…

设置Ubuntu 20.04的静态IP地址(wifi模式下)

一、引言 自己家用的Ubuntu的&#xff0c;重启后ip地址经常会改变&#xff0c;这个时候就需要我们手动配置静态IP了。 二、优点 给Ubuntu设置一个静态IP地址有以下几个好处&#xff1a; 持久性&#xff1a;静态IP地址是固定不变的&#xff0c;与设备的MAC地址绑定。这意味着…

Linux shell编程学习笔记16:bash中的关联数组

上一节我们探讨了普通的数组&#xff0c;即使用数字下标来索引数组中不同的元素的数组&#xff0c;也可以称之为索引数组。 相比纯粹的数字&#xff0c;字符串不仅能表明含义&#xff0c;也更便于记忆使用&#xff0c;于是就有了关联数组。 一、关联数组概述 bash 从4.0开始支…

计算机网络相关硬件介绍

计算机相关硬件 计算机由运算器、控制器、存储器、输入设备和输出设备等五个逻辑计算机硬件部件组成。 一、中央处理器&#xff08;CPU&#xff09;&#xff08;运算器、控制器&#xff09; &#xff08;1&#xff09;运算器 运算器是对数据进行加工处理的部件&#xff…

倍福控制Beckhoff_AX5000 控制第三方电机

1. 把第三方电机的.XML 文件&#xff0c;拷贝到 C:\TwinCAT\Io\TcDriveManager\MotorPool 目录下&#xff0c;并重新启动 TwinCAT。 2. 打开新的 System Manager 文件&#xff0c;完成 Choose Target 之后&#xff0c;把 TwinCAT System Manager 置为 Config mode。 3. 右击 …

Android加载SO包

一、前言 这几天用Android整合开源的RTMP推拉流都没成功&#xff0c;好几年没玩Android了碰到好多坑&#xff0c;在Android中为了效率难免需要调用C语言编写生成的SO文件&#xff0c;比如图片渲染加速&#xff0c;视频编解码等插件&#xff0c;今天我们就先聊一下在Android中如…

腾讯云轻量应用服务器性能差吗?为什么便宜?

腾讯云轻量应用服务器性能如何&#xff1f;为什么便宜是不是性能不行&#xff1f;腾讯云百科txybk.com从轻量应用服务器的CPU型号、处理器主频、内存、公网带宽、月流量和系统盘多方面来详细测评轻量性能&#xff0c;轻量应用服务器性价比高&#xff0c;并不是性能不行&#xf…

WindowsServer2019-部署与管理Active Directory域服务-02

部署与管理Active Directory域服务 文章目录 管理域用户、组和组织单位1、新建组织单位2、在组织单位中新建组3、在组织单位中新建用户4、将用户添加到组5、将成员计算机&#xff08;对象&#xff09;移动到组织单位 管理域组策略1、配置域组策略2、禁止特定组织单位的用户访问…

使用iperf3测试网络带宽

使用iperf3测试网络带宽 控制变量&#xff1a;这两台电脑或者服务器和电脑的网卡需要支持千兆。避免影响结果出现变量 一、下载及简单使用。 下载&#xff1a;https://iperf.fr/iperf-download.php 使用说明&#xff1a; iperf3.exe -h Usage: iperf [-s|-c host] [option…

Power BI 傻瓜入门 10. 完善数据模型

本章内容包含&#xff1a; 确定中的数据建模过程中影响性能的因素增强数据模型以获得最佳性能优化数据模型以实现企业级报告和可视化 这就是困境。您的报告在测试和开发环境中运行得非常出色。为什么&#xff1f;因为环境是被包容的。但是当您将数据模型部署到生产中时--无论…

研发效能认证学员作品:快速进行持续集成应用实践丨IDCF

作者&#xff1a;赖嘉明 研发效能&#xff08;DevOps&#xff09;工程师认证学员 随着数字化转型的推进及市场竞争的加剧&#xff0c;越来越多的企业也意识到持续集成的重要性。 而持续集成作为一种先进的软件开发实践和工具链&#xff0c;可以帮助企业实现自动化构建、集成和…

基于FPGA的图像PSNR质量评估计算实现,包含testbench和MATLAB辅助验证程序

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 设置较大的干扰&#xff0c;PSNR15。 设置较小的干扰&#xff0c;PSNR25。 2.算法运行软件版本 matlab2022a vivado2019.2 3.部分核心程序 ti…

Keil 4 软件安装包下载及安装教程(图文详解)

目录 一.简介 二.安装教程 Keil4&#xff08;32/64&#xff09;位下载地址&#xff1a; 链接&#xff1a; https://pan.baidu.com/s/1F72jjsTjeOCLCVeL1c1qXg 密码&#xff1a;24nu 一.简介 Keil C51是一款由Keil Software&#xff08;现在是ARM公司的一部分&#xff09…

麒麟KYLINOS上使用开始菜单图标开启或关闭vnc

原文链接&#xff1a;麒麟KYLINOS上使用开始菜单图标开启或关闭vnc hello&#xff0c;大家好啊&#xff0c;今天给大家带来第二篇在麒麟KYLINOS上安装部署vnc的文章&#xff0c;本篇文章讲述了如何将vnc的开启及关闭做成图标展示在开始菜单&#xff0c;并且设置当第一次启动vnc…

【LeetCode:2520. 统计能整除数字的位数 | 模拟 | HashMap】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【问题解决】发现Web应用程序源代码泄露模式

1. 漏洞描述 AppScan扫描软件的安全报告中&#xff0c;有一类漏洞被描述为&#xff1a;“发现Web应用程序源代码泄露模式”。 该类问题指的是在服务器端&#xff0c;Web应用程序的开发者工具(Devtools)中的Sources面板中可以看到前端build构建之后的相关源代码&#xff0c;包…

Win10+Ubuntu20.04双系统双硬盘(SSD+HDD)安装与启动

Win10Ubuntu20.04双系统双硬盘安装与启动 前言准备工作Step 1: 备份你的数据Step 2: 制作安装Ubuntu的磁盘分区若以方式2进行安装&#xff1a;若以方式3进行安装&#xff1a; Step 3: 下载ubuntuStep 4: 制作ubuntu启动U盘Step 5: 从U盘启动ubuntuStep 6: 安装ubuntuStep 7: 系…

9.(vue3.x+vite)组件间通信方式之EventBus

前端技术社区总目录(订阅之前请先查看该博客) 示例效果 EventBus的简介 EventBus 又称为事件总线。是所有组件共用相同的事件中心,可以向该中心注册发送事件或接收事件,所以组件都通知到其他组件,但也就是太方便所以若使用不慎,就会造成难以维护的“灾难”。 其具体的思…

纯干货!一个白帽子挖漏洞经验细致分享

不知道是不是很多人和我一样&#xff0c;每天刷着漏洞&#xff0c;看着自己的排名一位一位的往上提升&#xff0c;但是&#xff0c;但是。总感觉怪怪的&#xff0c;为什么别人刷的漏洞都是现金&#xff0c;而自己刷的漏洞都是给库币。别人一天为什么提交那么多漏洞&#xff0c;…

ES6新增循环对象的四种方法(通俗易懂)

在我们ES6之前&#xff0c;我们一般都是用for…in来循环对象&#xff0c;现在我们ES6为我们新增了几种方法&#xff0c;让我为大家介绍一下吧&#xff01; 1.Object.keys() 静态方法返回一个由给定对象自身的可枚举的字符串键属性名组成的数组 const obj {name:"zs&quo…