当前位置: 首页 > web >正文

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.xdnf.cn/news/5200.html

相关文章:

  • 第7次课 栈A
  • 腾讯云低代码实战:零基础搭建家政维修平台
  • [特殊字符]Meilisearch:AI驱动的现代搜索引擎
  • 《全球短剧正版授权通道,助力平台出海与流量变现》
  • 互联网大厂Java面试实录:从基础到微服务的深度考察
  • 51单片机入门教程——AT24C02数据存储
  • QT Creator配置Kit
  • word换行符和段落标记
  • 【具身智能算法入门】VLM/VLA 算法入门指南
  • 基于FPGA的PID控制器verilog实现,包含simulink对比模型
  • Linux系统下安装mongodb
  • 【Python】装饰器在装什么
  • [ctfshow web入门] web70
  • 《深入理解Linux网络》笔记
  • MySQL的Order by与Group by优化详解!
  • [docker基础四]容器虚拟化基础之 LXC
  • Visual Studio Code 前端项目开发规范合集【推荐插件】
  • 单片机-STM32部分:10-1、485
  • 【AI提示词】漏斗思维优化专家
  • RocketMQ Kafka区别
  • upload-labs靶场通关详解:第四关
  • zdir3个人网盘dockerfile打包
  • 202534 | KafKa简介+应用场景+集群搭建+快速入门
  • 大模型微调终极方案:LoRA、QLoRA原理详解与LLaMA-Factory、Xtuner实战对比
  • 绑定 SSH key(macos)
  • uniapp-商城-49-后台 分类数据的生成(方法加精)
  • 【计算机视觉】OpenCV实战项目:FunnyMirrors:基于OpenCV的实时哈哈镜效果实现技术解析
  • Checkmk实战指南:从零构建企业级监控系统
  • 字节:增强LLM角色区分能力
  • 第十八章,入侵检测/防御系统(IDS/IPS)