【SpringCloud】2、使用Nacos作为服务注册中心

news2024/11/13 11:48:20

1、项目搭建

首先,我们需要搭建一个 SpringCloud 微服务项目,后续的文章将基于此项目作为学习演示使用

  • 1、创建 cloud-learn 目录,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.biz</groupId>
    <artifactId>cloud-parent</artifactId>
    <version>1.0.0</version>

    <packaging>pom</packaging>

    <name>${project.artifactId}</name>
    <description>spring cloud 学习项目</description>

    <modules>
        <module>cloud-gateway</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.test.skip>true</maven.test.skip>
        <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
        <java.version>1.8</java.version>
        <spring-cloud.version>2021.0.5</spring-cloud.version>
        <spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version>
        <spring-boot.version>2.7.7</spring-boot.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- SpringCloud 微服务 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- SpringCloud Alibaba 微服务 -->
            <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>

            <!-- SpringBoot 依赖配置 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- bootstrap 启动器 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>${spring-boot.version}</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <repositories>
        <repository>
            <id>public</id>
            <name>aliyun nexus</name>
            <url>https://maven.aliyun.com/repository/public</url>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>public</id>
            <name>aliyun nexus</name>
            <url>https://maven.aliyun.com/repository/public</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

</project>

父模块主要定义了 spring-cloud、spring-cloud-alibaba、spring-boot 的版本信息

  • 2、创建子模块 cloud-gateway,pom.xml 文件内容如下:
<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>

    <parent>
        <groupId>com.biz</groupId>
        <artifactId>cloud-parent</artifactId>
        <version>1.0.0</version>
    </parent>

    <artifactId>cloud-gateway</artifactId>

    <description>网关模块</description>

    <dependencies>
        <!-- spring mvc -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- SpringCloud Alibaba Nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>
  • 3、项目启动类
package com.biz;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

/**
 * 网关启动程序
 *
 * @author ruoyi
 */
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class GatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
        System.out.println("(♥◠‿◠)ノ゙  网关启动成功   ლ(´ڡ`ლ)゙");
    }
}

整体项目目录如下:

在这里插入图片描述

2、注册 Nacos

src/resources 目录下,新建 bootstrap.yml 文件,内容如下:

spring:
  application:
    # 应用名称
    name: cloud-gateway
  cloud:
    nacos:
      discovery:
        # 注册中心地址
        server-addr: 127.0.0.1:8848

启动项目,打开 nacos 控制台查看【服务列表】

在这里插入图片描述

3、注册鉴权

上面我们在注册进入 nacos 时,只需要填写 nacos 的地址即可注册,这样非常不安全,所以我们需要在注册这一步加上鉴权操作

  • 1、修改 nacos 配置文件

修改 nacos/conf/application.properties 文件

nacos.core.auth.enabled=false

改为

nacos.core.auth.enabled=true

修改完配置信息,不需要重启 nacos 服务,我们的微服务已经无法注册进去了

  • 2、修改微服务配置文件
spring:
  application:
    # 应用名称
    name: cloud-gateway
  cloud:
    nacos:
      username: nacos
      password: nacos
      discovery:
        # 注册中心地址
        server-addr: 127.0.0.1:8848

需要加上 nacos 的用户密码,则可以注册成功

4、命名空间

  • 1、创建命名空间

在这里插入图片描述
public 为默认保留命名空间,我们如果使用命名空间来区分开发环境和生产环境,如图,创建了两个命名空间

dev,开发环境命名空间
prod,生产环境命名空间

  • 2、注册命名空间
spring:
  application:
    # 应用名称
    name: cloud-gateway
  cloud:
    nacos:
      username: nacos
      password: nacos
      discovery:
        # 注册中心地址
        server-addr: 127.0.0.1:8848
        namespace: 482e3612-4bf5-4d77-96ef-e963c6e7a4bb

我们需要复制命名空间 ID 进行配置,效果展示

在这里插入图片描述
我们注册的服务就进入了 dev 命名空间了

在这里插入图片描述
可以配合权限管理控制不同的用户操作不同的资源

如您在阅读中发现不足,欢迎留言!!!

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

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

相关文章

【数据统计】— 峰度、偏度、点估计、区间估计、矩估计、最小二乘估计

【数据统计】— 峰度、偏度、点估计、区间估计、矩估计、最小二乘估计 四分位差异众比率变异系数利用数据指标指导建模思路 形状变化数据分布形态峰度: 度量数据在中心聚集程度偏度 利用数据指标指导建模思路 参数估计点估计区间估计矩估计举例&#xff1a;黑白球&#xff08;矩…

修改键盘映射(注册表)Scancode Map

1.win R 打开 cmd命令框&#xff0c;输入regedit 2.赋值这个地址到蓝色框里&#xff1a; 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout 3.右键 ->新建->二进制值&#xff0c;命名为 Scancode Map 4.现在来讲解怎么使用这个二进制表修…

LC串联谐振回路

理想LC串联谐振回路 下图是理想的LC串联谐振回路&#xff0c;不考虑L C的等效电阻。理想的LC回路没有任何损耗。 理想LC串联谐振的回路阻抗为&#xff1a; 令虚部为0&#xff0c;就可求出谐振角频率W0 可得谐振角频率&#xff1a; 可得谐振频率&#xff1a; 因为 所以电…

计算机网络之运输层

协议 协议就是计算机与计算机之间通信的“约定”&#xff0c;既为规则&#xff0c;只有遵循这个约定&#xff0c;双方就可以进行通信。 进程之间的通信 从通信和信息处理的角度来看&#xff0c;运输层向上面的应用层提供通信的服务&#xff0c;属于面向通信的最高层&#xf…

Redis哨兵(非集群 Rrdis 的高可用性 )

Redis哨兵(非集群 Rrdis 的高可用性 ) 1. 什么是哨兵 吹哨人巡查监控后台 master 主机是否故障,如果故障了根据投票数自动将某一个从库转换为新主库,继续对外服务 Redis哨兵在不使用Redis集群时为Redis提供高可用性 2. 作用 无人值守运维 3. 哨兵作为分布式系统 Redis S…

console.log(obj)不一定能的到obj当前的值

1.Log (anObject)的输出具有误导性; 只有在控制台中展开 > 时才能解析显示的对象的状态。它不是您在 console.log 对象时对象的状态。 相反&#xff0c;尝试 console.log (Object.keys ()) &#xff0c;或者甚至console.log(JSON.parse(JSON.stringify(obj))) &#xff0c;…

黑盒(功能)测试基本方法

1、黑盒测试的概念 1、什么是黑盒测试 &#xff08;1&#xff09;黑盒测试又称功能测试、数据驱动测试或基于规格说明书的测试&#xff0c;是一种从用户观点出发的测试。 &#xff08;2&#xff09;测试人员把被测程序当作一个黑盒子。 2、黑盒测试主要测试的错误类型有 &…

JVisualVM、Visual GC

JVisualVM JVisualVM Java VisualVM 是一款 JDK 自带免费的性能分析工具 public class JVisualVM {public static void main(String[] args) {Thread t1 new Thread(() -> {while (!Thread.currentThread().isInterrupted()) {}}, "JVisualVM测试子线程");t1.…

flinkcdc 动态的增加新的同步表到同一个作业中

背景 flinkcdc 2.0版本上线了一个新功能–支持动态加表这个是很有用的feature&#xff0c;本文介绍在开发中如何使用。 设想下假如你一个 CDC pipeline 监控了 4 张表&#xff0c;突然有天业务需求需要再加几张表&#xff0c;你肯定不想另起作业 (浪费资源)&#xff0c;那么这…

大数据——HDFS(分布式文件系统)

一&#xff0c;分布式系统概述 Hadoop的两大核心组件 HDFS&#xff08;Hadoop Distributed Filesystem&#xff09;&#xff1a;是一个易于扩展的分布式文件系统&#xff0c;运行在成百上千台低成本的机器上。HDFS具有高度容错能力&#xff0c;旨在部署在低成本机器上。HDFS主…

日撸 Java 三百行day34

文章目录 说明Day34 图的深度优先遍历1.思路2.代码3.总结1.在广度遍历中借助了队列2.在深度优先遍历借助了栈。 说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护&#xff1a…

Android 开发之核心技术点——性能优化篇(带面试题)~

性能优化对于Android开发的重要性非常大。随着Android设备的不断升级&#xff0c;用户对应用的要求也越来越高&#xff0c;包括应用的运行速度、响应速度、流畅度等方面。如果应用的性能不能满足用户的需求&#xff0c;很可能会导致用户流失、差评以及应用被卸载等情况。 另外…

boot-admin整合flowable官方editor-app进行BPMN2.0建模

boot-admin整合flowable官方editor-app源码进行BPMN2.0建模 正所谓百家争鸣、见仁见智、众说纷纭、各有千秋&#xff01;在工作流bpmn2.0可视化建模工具实现的细分领域&#xff0c;网上扑面而来的是 bpmn.js 这个渲染工具包和web建模器&#xff0c;而笔者却认为使用flowable官…

2023零基础快速跟上人工智能第一梯队

写在前面&#xff1a;有关人工智能学什么&#xff0c;怎么学&#xff0c;什么路线等一系列问题。我决定整理一套可行的规划路线&#xff0c;希望帮助准备入门的朋友们少走些弯路。 下面我会推荐一个比较快速可行的学习模板&#xff0c;并附上我认为比较好的学习资料。 新手不建…

git使用规范文档

git使用规范文档 Git使用规范流程图 开发人员操作步骤&#xff1a; 第一步&#xff1a;clone代码 在你的本地代码库进行从远程仓库clone代码操作&#xff08;100%表示clone完成&#xff09; 进入项目文件&#xff0c;右键Git Bash Here 切换到你所进行开发的分支上 拉取该分…

JavaSE学习进阶day05_02 常见的数据结构和List接口

第三章 数据结构&#xff08;掌握&#xff09; 3.1 数据结构介绍 数据结构 : 数据用什么样的方式组合在一起。 科班出身的同学我想你对数据结构一点也不陌生&#xff0c;不知道你记不记得&#xff0c;当时学习数据结构的逻辑结构中的集合时&#xff0c;只是简单了解它&#…

hackathon 复盘:niche 海外软件工具正确的方法 6 个步骤

上周末&#xff0c;去参加了北京思否 hackathon&#xff0c;两天时间内从脑暴 & 挖掘软件 IDEA -> Demo 研发路演&#xff0c;这次经历让我难忘。这里我的看法是每个开发者圈友&#xff0c;都应该去参加一次 hackathon ~ 做 niche 软件正确的方法 这边先说结论&#xf…

vmware下Ubuntu系统中安装vscode

文章目录 前言&#xff1a;在线下载&#xff1a;离线下载包&#xff1a;配置C/C环境 前言&#xff1a; 这篇博客是为后面交叉编译程序放到树莓派上运行做的准备。同时也是自己在装过程中的一个记录。 在线与离线安装的唯一不同就是获取安装包是在线下载还是别的地方拷贝过来以…

【数据结构】- 链表之单链表(中)

文章目录 前言一、单链表(中)1.1 头删1.2尾删1.2.1第一种方法&#xff1a;1.2.2第二种方法&#xff1a;1.2.3多因素考虑 二、完整版代码2.1 SList.h2.2 SList.c2.3 Test.c 总结 前言 千万不要放弃 最好的东西 总是压轴出场 本章是关于数据结构中的链表之单链表(中) 提示&#…

数据结构与算法基础(王卓)(26)线性表的查找(2):顺序查找(二分查找、分块查找)

二、折半查找&#xff08;二分或对分查找) 前置条件和前面一样 最开始根据PPT示(实)例写出的程序框架&#xff1a; 一开始&#xff1a; low&#xff1a;第一位 high&#xff1a;最后一位 mid&#xff1a;正中间 查找数小于mid&#xff1a; 把high移动到mid前面一位&#xff08;…