[Spring Cloud] nacos作为服务中心

news2024/10/6 6:52:35

✨✨个人主页:沫洺的主页

📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 

                           📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专栏

                           📖Docker专栏📖Reids专栏📖MQ专栏📖SpringCloud专栏     

💖💖如果文章对你有所帮助请留下三连✨✨

衔接上篇: 

🍁nacos作为服务中心 

补充:

在使用nacos时,一般都是使用默认命名空间的public和默认的分组DEFAULT_GROUP

在Nacos官网中对服务中心的整个流程描写的很直观,如下图所示

接下来基于此图原理我们创建一个注册服务和一个调用服务

创建两个子模块a,b来模拟注册服务和调用服务,实现b服务调用a服务

注意创建两个子模块要在父模块中声明一下

        <module>spring-cloud-nacos-a</module>
        <module>spring-cloud-nacos-b</module>

创建注册服务: spring-cloud-nacos-a

 在官网中看到我们要启用 Nacos 的服务需要加discovery依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>${latest.version}</version>
</dependency>

接下来就是引入哪个版本的discovery,要考虑兼容问题

在父模块的pom.xml里可以看到我们使用的boot版本是2.2.5.RELEASE

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

去meven仓库找一下哪个版本的discovery支持2.2.5.RELEASE

所有使用2.2.1RELEASE版本的discovery

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <!--父模块加过此带版本的依赖,子模块添加时就不需要指定版本号了-->
            <!--<version>2.2.1.RELEASE</version>-->
        </dependency>

 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>
    <parent>
        <groupId>com.moming</groupId>
        <artifactId>spring-cloud-root</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>spring-cloud-nacos-a</artifactId>

    <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>
            <!--<version>2.2.1.RELEASE</version>-->
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.moming</groupId>
            <artifactId>user-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

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

</project>

配置服务提供者,从而服务提供者可以通过 Nacos 的服务注册发现功能将其服务注册到 Nacos server 上。

在application.properites中配置 Nacos server 的地址:

server.port=8070
spring.application.name=nacos-a

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

创建测试接口

基于Open Feign---扩展的调用原理(还是原来的user-api子模块)实现接口IUserService 

@RestController
public class UserServiceController implements IUserService {
    @Override
    public String getName(Integer id) {
        return "nacos-a返回id: "+id;
    }
    @Override
    public Integer getAmount(Integer id) {
        return id*100;
    }
}

运行a服务,可以看到a服务在nacos服务列表里

创建调用服务: spring-cloud-nacos-b来调用a服务

pom.xml添加openfeign依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

pom.xml添加discovery依赖

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <!--<version>2.2.1.RELEASE</version>-->
        </dependency>

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>
    <parent>
        <groupId>com.moming</groupId>
        <artifactId>spring-cloud-root</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>spring-cloud-nacos-b</artifactId>

    <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>
            <!--<version>2.2.1.RELEASE</version>-->
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.moming</groupId>
            <artifactId>user-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

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

</project>

 启动类上添加@EnableDiscoveryClient注解,目的是启用发现客户端(想调用其他服务就得加此注解)

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

在application.properites中配置 Nacos server 的地址:

server.port=8071
spring.application.name=nacos-b

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

创建假名客户端,模拟调用a服务

基于Open Feign---扩展的调用原理(还是原来的user-api子模块)继承接口IUserService 

@FeignClient("nacos-a")
public interface NacosAClient extends IUserService {
}

要想识别@FeignClient("nacos-a")注解,在启动类上我们还要加@EnableFeignClients注解,来启用假名客户端

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

创建测试接口

实现b服务调用a服务

@RestController
public class CallNacosAController {
    @Autowired
    private NacosAClient nacosAClient;
    @GetMapping("/test")
    public String callNacos(){
        String name = nacosAClient.getName(3);
        return name;
    }
}

启动b服务(a服务也启动)

同样的可以看到b服务也在nacos服务列表里

查看a服务的订阅者(调用者),此时还没有调用

 访问接口localhost:8071/test

 再查看订阅者,就可以看到b服务的客户端地址

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

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

相关文章

【C语言从0到1之指针】(详解,赶紧收藏期末考试备用)

&#x1f57a;作者&#xff1a;启明星使 &#x1f383;专栏&#xff1a;《数据库》《C语言》《数据结构》 &#x1f3c7;分享喜欢的一句话&#xff1a;去发光&#xff0c;而不是等待被照亮​ 目录 1. 指针是什么 内存 指针变量 总结&#xff1a; 外&#xff1a; 2. 指针和…

比 O(nlog(n)) 做得更好 — 5.结束语和基准

这就是 groupSort 真正优于 mergeSort 的地方。 长按关注《Python学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 扫码关注《Python学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 最后的想法 我们知道&#xff0c;将一个大问题分解为一系列更小…

vmware虚拟机黑屏问题

&#x1f490;文章适合于所有的相关人士进行学习&#x1f490; 1.问题描述 VMware虚拟机出现了黑屏现象&#xff0c;打开虚拟机挂起能看到显示&#xff0c;但一开就黑屏。下面就给大家说说虚拟机黑屏怎么办&#xff0c;vmware虚拟机开机黑屏的解决方法。 大多数同学在安装第…

策略验证_卖出口诀_长箭射天股价落地

写在前面&#xff1a; 1. 本文中提到的“股票策略校验工具”的具体使用操作请查看该博文&#xff1b; 2. 文中知识内容来自书籍《同花顺炒股软件从入门到精通》 3. 本系列文章是用来学习技法&#xff0c;文中所得内容都仅仅只是作为演示功能使用 目录 解说 策略代码 结果 解…

mysql运行报错:

Install/Remove of the Service Denied!解决办法&#xff1a;Install/Remove of the Service Denied解决办法 上面报错看这篇&#xff1a;MySQL本地连接报错&#xff1a;ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061) 上面报错看这篇&#xf…

【Ubuntu】实现windows和ubuntu之间的共享文件

实现windows和ubuntu之间的共享文件一、配置windows和ubuntu之间的共享文件夹&#xff08;方式1&#xff09;二、通过将windows中的文件拖拽到ubuntu的终端之上&#xff08;方式2&#xff09;一、配置windows和ubuntu之间的共享文件夹&#xff08;方式1&#xff09; VMware菜单…

UE Select File / Folder Window 插件说明

本插件可以在蓝图中打开系统自带的文件/文件夹选择窗口。并且可以在打包出发行包。 1. Open Load File Window 打开文件读取选择窗口&#xff0c;只能单选文件&#xff0c;此函数只是返回文件路径&#xff0c;不会真正读取文件信息 输入 Dialog Title &#xff1a;打开窗口的…

[附源码]java毕业设计图书管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Java EE|软件视角下的操作系统

文章目录前言操作系统的概念及常见的OS举例操作系统的定位以及它的功能/职责/作用全程高能&#xff01;&#xff01;&#xff01;敲黑板警告&#xff01;&#xff01;&#xff01;一、进程概念&#xff08;感性认知&#xff09;二、进程的描述和组织&#xff01;&#xff01;&a…

步进电机实验

一、实验目的&#xff1a; 掌握步进电机的控制方法 二、实验内容与要求&#xff1a; 编写实验程序&#xff0c;利用8255的B口来控制步进电机的运转。 三、实验环境&#xff1a; PC机一台&#xff0c;TD-PITE实验装置一套。 四、实验步骤&#xff1a; 1、参考下图连接实验…

Linux下如何操作寄存器

本期主题&#xff1a; linux下操作寄存器 往期链接&#xff1a; linux设备驱动中的并发linux设备驱动中的编译乱序和执行乱序linux设备驱动之内核模块linux字符驱动linux字符驱动之ioctl部分linux字符驱动之read、write部分linux驱动调试之Debugfs 文章目录1.为什么有这个问题…

内网信息收集(基于红日靶场1)

net view # 查看局域网内其他主机名 net config Workstation # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域 net user # 查看本机用户列表 net user /domain # 查看域用户 net localgroup administrators # 查看本地…

合宙esp32 环境搭建和使用方法

文章目录1.环境搭建2.问题2-1&#xff1a;exec: "cmd": executable file not found in %PATH%3.合宙esp32 使用3-1引脚定义3-1-1&#xff1a;板载LED3-2下载程序&#xff1a;3-3测试程序4.ESP32-C3开发板相关资料1.环境搭建 1-1&#xff1a;下载esp32 安装包 链接&a…

[一篇读懂]C语言八讲:数据结构概述

[一篇读懂]C语言八讲&#xff1a;数据结构概述1. 与408关联解析及本节内容介绍1 与408关联解析2 本节内容介绍2. 逻辑结构与存储结构1 逻辑结构2 存储结构顺序存储链式存储3 顺序存储与链式存储分析顺序存储优缺点链式存储优缺点3. 时间复杂度与空间复杂度1 算法定义2 时间复杂…

攻防世界1-misc

1-misc 题目描述&#xff1a;无 题目环境&#xff1a;https://download.csdn.net/download/m0_59188912/87094807 打开压缩包&#xff0c;提示密码是出题人生日。 使用archpr爆破压缩包。 得到密码&#xff1a;20001228 解压压缩包&#xff0c;得到两个文件&#xff0c;一个图片…

[附源码]java毕业设计网吧购物系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【CSDN|每日一练】代写匿名信

目录 运行结果题目描述输入描述:输出描述:示例代码结语运行结果 题目描述 小Q想要匿名举报XX领导不务正业! 小Q害怕别人认出他的字迹。 他选择从报纸上剪裁下来英文字母组成自己的举报信。 现在小Q找来了报纸,和自己的举报信的Txt, 你能帮他确定一下是否能够完成匿名信…

6242. 二叉搜索树最近节点查询

目录题目关键词代码题目 给你一个 二叉搜索树 的根节点 root &#xff0c;和一个由正整数组成、长度为 n 的数组 queries 。 请你找出一个长度为 n 的 二维 答案数组 answer &#xff0c;其中 answer[i] [mini, maxi] &#xff1a; mini 是树中小于等于 queries[i] 的 最大值…

Vue-Router学习记录

目录 一.使用路由 1.1配置路由 1.2采用路由 二.路由懒加载 三.路由重定向 四.嵌套路由 五.路由跳转 1.1标签式 1.2编程式 1.3路由的query参数 1.4命名路由 前言: vue 属于单页面应用&#xff0c;所谓的路由&#xff0c;就是根据浏览器路径不同&#xff0c;用不同的…

常见Lidar点云数据处理及可视化软件汇总

常见的点云处理及可视化软件有&#xff1a; CloudCompare、Globalmapper、Pix4d、ArcGIS&#xff08;Pro&#xff09;、Lidar 360、PCL等等。 文章目录1. CloudCompare2. Globalmapper3. Pix4d4. ArcGIS&#xff08;Pro&#xff09;5. Lidar 3606. PCL1. CloudCompare CloudCo…