springCloud/Alibaba常用中间件之Nacos服务注册与发现

文章目录

  • SpringCloud Alibaba:
  • 依赖版本补充
  • 六、Nacos:服务注册与发现
    • 1、下载安装Nacos
    • 2、服务注册
      • 1. 导入依赖(这里以服务提供者为例)
      • 2. 修改配置文件和主启动类
      • 3. 创建业务类
      • 4. 测试
    • 3.服务映射
      • 1. 导入依赖
      • 2. 修改配置文件和主启动类
      • 3. 创建业务类和RestTemplate配置类用来提供负载均衡
      • 4. 测试(使用idea中自带的虚拟端口映射)
    • 4. 配置中心
      • 1. 导入配置
      • 2. nacos创建命名空间
      • 3. 修改配置文件--主启动类
      • 4. 创建业务类


SpringCloud Alibaba:

官方学习文档(中文): https://spring-cloud-alibaba-group.github.io/github-pages/2022/zh-cn/2022.0.0.0-RC2.html
微服务的中间件介绍与使用
微服务架构体系图:
在这里插入图片描述

依赖版本补充

下面所有代码中的依赖版本如下:

<properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><hutool.version>5.8.22</hutool.version><lombok.version>1.18.26</lombok.version><druid.version>1.1.20</druid.version><mybatis.springboot.version>3.0.2</mybatis.springboot.version><mysql.version>8.0.11</mysql.version><swagger3.version>2.2.0</swagger3.version><mapper.version>4.2.3</mapper.version><fastjson2.version>2.0.40</fastjson2.version><persistence-api.version>1.0.2</persistence-api.version><spring.boot.test.version>3.1.5</spring.boot.test.version><spring.boot.version>3.2.0</spring.boot.version><spring.cloud.version>2023.0.0</spring.cloud.version><spring.cloud.alibaba.version>2023.0.0.0-RC1</spring.cloud.alibaba.version><knife4j-openapi3.version>4.4.0</knife4j-openapi3.version>
</properties>

六、Nacos:服务注册与发现

1、下载安装Nacos

下载地址:https://nacos.io/download/nacos-server

在这里插入图片描述

下载完之后解压到没有中文的目录录下,并到bin目录下运行cmd启动命令 startup.cmd -m standalone
(standalone代表着单机模式运行,非集群模式)
在这里插入图片描述

默认访问地址为:http://localhost:8848/nacos/ (要是有账号密码默认都是nacos)

在这里插入图片描述

2、服务注册

1. 导入依赖(这里以服务提供者为例)

<dependencies><!--nacos-discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- 引入自己定义的api通用包 --><dependency><groupId>com.atguigu.cloud</groupId><artifactId>cloud-api-commons</artifactId><version>1.0-SNAPSHOT</version></dependency><!--SpringBoot通用依赖模块--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--hutool--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version><scope>provided</scope></dependency><!--test--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies>

2. 修改配置文件和主启动类

server:port: 9001
spring:application:name: nacos-payment-providercloud:nacos:discovery:server-addr: localhost:8848 #配置Nacos地址

@SpringBootApplication
@EnableDiscoveryClient/*服务注册*/
public class Main9001 {public static void main(String[] args) {SpringApplication.run(Main9001.class, args);}
}

3. 创建业务类


@RestController
public class PayAlibabaController {@Value("${server.port}")/*动态获取端口*/private String serverPort;@GetMapping(value = "/pay/nacos/{id}")public String getPayInfo(@PathVariable("id") Integer id) {return "nacos registry, serverPort: " + serverPort + "\t id" + id;}
}

4. 测试

在这里插入图片描述

3.服务映射

为了演示这里需要在创建一个消费者去映射

1. 导入依赖

注意:消费者与服务提供者所需要导入的依赖不同多了一个负载均衡依赖


<dependencies><!--nacos-discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--loadbalancer负载均衡--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency><!--web + actuator--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
</dependencies>

2. 修改配置文件和主启动类

server:port: 90
spring:application:name: nacos-order-consumercloud:nacos:discovery:server-addr: localhost:8848
#消费者将要去访问的微服务名称(nacos微服务提供者叫什么你写什么)
service-url:nacos-user-service: http://nacos-payment-provider

主启动类和上面一样

3. 创建业务类和RestTemplate配置类用来提供负载均衡

这里不懂得可以看一下前面的文章《springCloud/Alibaba常用中间件(Consul、LoadBalancer、Openfeign、circuitBreaker)》中的负载均衡


@Configuration
public class RestTemplateConfig {@Bean@LoadBalanced //赋予RestTemplate负载均衡的能力public RestTemplate restTemplate() {return new RestTemplate();}
}

@RestController
public class OrderNacosController {@Resourceprivate RestTemplate restTemplate;/*方式一:在配置文件中配置好要访问的服务。注意:!!!这里是和你配置文件中的service-url下面所配置的名字一样!!!*/@Value("${service-url.nacos-user-service}")private String service;/*方式二:直接写入要访问的服务url*/public static final String service_url = "http://nacos-payment-provider/pay";@GetMapping("/consumer/pay/nacos/{id}")public String paymentInfo(@PathVariable("id") Integer id) {String result = restTemplate.getForObject(service + "/nacos/" + id, String.class);return result + "\t" + "    我是OrderNacosController83调用者。。。。。。";}
}

4. 测试(使用idea中自带的虚拟端口映射)

测试用消费者的接口是否可以访问成功
这里为了测试负载均衡可以在写一个服务,也可以直接使用idea中自带的虚拟端口映射配置如下在这里插入图片描述
在这里插入图片描述 这时就会出现一个服务,启动即可
在这里插入图片描述
这里就可以进行负载均衡的测试了

4. 配置中心

1. 导入配置

注意这里需要导入bootstrap(系统级配置)
依赖为下面的修改bootstrap配置做准备
(这里不太懂的话前面的文章《springCloud/Alibaba常用中间件(Consul、LoadBalancer、Openfeign、circuitBreaker)》中的Consul的服务配置与刷新


<dependencies><!--bootstrap--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><!--nacos-config--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--nacos-discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--web + actuator--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
</dependencies>

2. nacos创建命名空间

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

3. 修改配置文件–主启动类

# nacos配置(bootstrap.yml)
spring:application:name: nacos-config-client-chybcloud:nacos:discovery:server-addr: localhost:8848 #Nacos服务注册中心地址namespace: chyb #关键点:添加命名空间ID,与config保持一致,若是这里不加服务可能会在public(默认)中运行config:server-addr: localhost:8848 #Nacos作为配置中心地址file-extension: yaml #指定yaml格式的配置group: CHYB_TESTGROUP #指定配置组namespace: chyb #指定命名空间(填写的是命名空间ID)
# nacos端配置文件DataId的命名规则是:
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# 本案例的DataID是:nacos-config-client-dev.yaml
# application.yml
server:port: 3377
spring:profiles:active: dev # 表示开发环境#active: prod # 表示生产环境#active: test # 表示测试环境

主启动类:和上面一样这里就不演示了

4. 创建业务类


@RestController
@RefreshScope //在控制器类加入@RefreshScope注解使当前类下的配置支持Nacos的动态刷新功能。
public class NacosConfigClientController {@Value("${config.info}")private String configInfo;@GetMapping("/config/info")public String getConfigInfo() {return configInfo;}
}
  1. 测试
    在这里插入图片描述
    这里可以修改一下nacos中的配置内容测试是否会动态改变

上述大部分代码以上传到gitee:https://gitee.com/banhuayue/springCloud-Alibaba-code.git

笔记参考来自尚硅谷

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

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

相关文章

uniapp中score-view中的文字无法换行问题。

项目场景&#xff1a; 今天遇到一个很恶心的问题&#xff0c;uniapp中的文字突然无法换行了。得..就介样 原因分析&#xff1a; 提示&#xff1a;经过一fan研究后发现 scroll-view为了能够横向滚动设置了white-space: nowrap; 强制不换行 解决起来最先想到的是&#xff0c;父…

【STM32 学习笔记】I2C通信协议

注&#xff1a;通信协议的设计背景 3:00~10:13 I2C 通讯协议(Inter&#xff0d;Integrated Circuit)是由Phiilps公司开发的&#xff0c;由于它引脚少&#xff0c;硬件实现简单&#xff0c;可扩展性强&#xff0c; 不需要USART、CAN等通讯协议的外部收发设备&#xff0c;现在被广…

【网络原理】数据链路层

目录 一. 以太网 二. 以太网数据帧 三. MAC地址 四. MTU 五. ARP协议 六. DNS 一. 以太网 以太网是一种基于有线或无线介质的计算机网络技术&#xff0c;定义了物理层和数据链路层的协议&#xff0c;用于在局域网中传输数据帧。 二. 以太网数据帧 1&#xff09;目标地址 …

控制台打印带格式内容

1. 场景 很多软件会在控制台打印带颜色和格式的文字&#xff0c;需要使用转义符实现这个功能。 2. 详细说明 2.1.转义符说明 样式开始&#xff1a;\033[参数1;参数2;参数3m 可以多个参数叠加&#xff0c;若同一类型的参数&#xff08;如字体颜色&#xff09;设置了多个&…

[6-2] 定时器定时中断定时器外部时钟 江协科技学习笔记(41个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 V 30 31 32 33 34 35 36 37 38 39 40 41

数据库的脱敏策略

数据库的脱敏策略&#xff1a;就是屏蔽敏感的数据 脱敏策略三要求&#xff1a; &#xff08;1&#xff09;表对象 &#xff08;2&#xff09;生效条件&#xff08;脱敏列、脱敏函数&#xff09; &#xff08;3&#xff09;二元组 常见的脱敏策略规则&#xff1a; 替换、重排、…

Python序列化的学习笔记

1. Npy&Numpy O4-mini-Cursor&#xff1a;如果.npy文件里包含了「Python对象」而非纯数值数组时&#xff0c;就必须在加载时加上allow_pickleTrue。

[思维模式-27]:《本质思考力》-7- 逆向思考的原理与应用

目录 一、什么是逆向思考 1.1、逆向思考的六大核心思维模式 1.2、逆向思考的四大实践方法 1. 假设倒置法 2. 缺陷重构法 3. 用户反推法 4. 规则解构法 1.3、逆向思考的经典案例库 1. 商业创新&#xff1a;从“卖产品”到“卖服务” 2. 用户体验&#xff1a;从“功能满…

在python中,为什么要引入事件循环这个概念?

在Python中&#xff0c;事件循环&#xff08;Event Loop&#xff09;是异步编程的核心机制&#xff0c;它的引入解决了传统同步编程模型在高并发场景下的效率瓶颈问题。以下从技术演进、性能优化和编程范式三个角度&#xff0c;探讨这一概念的必要性及其价值。 一、同步模型的局…

Taccel:一个高性能的GPU加速视触觉机器人模拟平台

触觉感知对于实现人类水平的机器人操作能力至关重要。而视觉触觉传感器&#xff08;VBTS&#xff09;作为一种有前景的解决方案&#xff0c;通过相机捕捉弹性凝胶垫的形变模式来感知接触的方式&#xff0c;为视触觉机器人提供了高空间分辨率和成本效益。然而&#xff0c;这些传…

oracle 会话管理

会话管理 1&#xff1a;查看当前所有用户的会话(SESSION)&#xff1a; SELECT * FROM V S E S S I O N W H E R E U S E R N A M E I S N O T N U L L O R D E R B Y L O G O N T I M E , S I D ; 其中 O r a c l e 内部进程的 U S E R N A M E 为空 2 &#xff1a;查看当前…

Python开发后端InfluxDB数据库测试接口

1、使用PyCharm创建一个Python项目wzClear 2、新建package包wzInfluxdb和wzConfig包&#xff0c;如上图所示&#xff0c;新建一个DB.json配置文件并添加influxdb配置信息&#xff0c;DB.json为统一配置文件 {"influxdbV1": {"url": "http://192.168.0…

采用LLaMa-Factory对QWen大模型实现微调(效果很好)

前言 LLaMA-factory是一个非常有用的开源框架。关于利用llama-factory实现大模型的微调&#xff0c;研究了有一个多月了&#xff0c;终于相对成功的微调了一个QWen的大模型。其中的曲折愿和大家分享&#xff01; 一、源码的下载 在github上的网址&#xff1a; GitHub - hiyou…

深入理解深度Q网络DQN:基于python从零实现

DQN是什么玩意儿&#xff1f; 深度Q网络&#xff08;DQN&#xff09;是深度强化学习领域里一个超厉害的算法。它把Q学习和深度神经网络巧妙地结合在了一起&#xff0c;专门用来搞定那些状态空间维度特别高、特别复杂的难题。它展示了用函数近似来学习价值函数的超能力&#xf…

机械物理:水力发电站工作原理是什么?

水利发电站的工作原理是将水的势能转化为电能&#xff0c;主要依赖水体的重力作用与能量转换设备。以下是其核心步骤和组成部分的详细解释&#xff1a; 1. 蓄水与势能积累 水坝与水库&#xff1a;通过建造水坝拦截河流&#xff0c;形成水库蓄水。水位升高后&#xff0c;水体的…

[面试]SoC验证工程师面试常见问题(五)TLM通信篇

SoC验证工程师面试常见问题(五) 摘要:UVM (Universal Verification Methodology) 中的 TLM (Transaction Level Modeling) 通信是一种用于在验证组件之间传递事务(Transaction)的高层次抽象机制。它通过端口(Port)和导出(Export)实现组件间的解耦通信,避免了信…

CAD属性图框值与Excel联动(CAD块属性导出Excel、excel更新CAD块属性)——CAD c#二次开发

CAD插件实现块属性值与excel的互动&#xff0c;效果如下&#xff1a; 加载dll插件&#xff08;CAD 命令行输入netload &#xff0c;运行xx即可导出Excel&#xff0c;运行xx1即可根据excel更新dwg块属性值。&#xff09; 部分代码如下 // 4. 开启事务更新CAD数据using (Transact…

【数据挖掘】Apriori算法

Apriori算法是经典的关联规则挖掘算法&#xff0c;用于从事务型数据库中发现频繁项集和强关联规则&#xff0c;特别常用于购物篮分析等场景。 &#x1f9e0; 核心思想&#xff08;Apriori原则&#xff09; 一个项集是频繁的&#xff0c;前提是它的所有子集也必须是频繁的。 即&…

单链表设计与实现

01. 单链表简介 在数据结构中&#xff0c;单链表的实现可以分为 带头结点 和 不带头结点 两种方式&#xff0c;这里我们讨论第二种方式。 头结点&#xff1a;链表第一个节点不存实际数据&#xff0c;仅作为辅助节点指向首元节点&#xff08;第一个数据节点&#xff09;。头指…

【论文阅读】——Articulate AnyMesh: Open-Vocabulary 3D Articulated Objects Modeling

文章目录 摘要一、介绍二、相关工作2.1. 铰接对象建模2.2. 部件感知3D生成 三、方法3.1. 概述3.2. 通过VLM助手进行可移动部件分割3.3. 通过几何感知视觉提示的发音估计3.4. 通过随机关节状态进行细化 四、实验4.1. 定量实验发音估计设置: 4.2. 应用程序 五、结论六、思考 摘要…