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

【Nacos】Nacos快速上手

Nacos快速上手

  • 项目环境介绍
  • 一、服务注册/服务发现
    • 1.引入Spring Cloud Alibaba依赖
    • 2.引入Nacos相关的依赖
    • 3.引入Load Balance依赖
    • 4.配置Nacos的地址
  • 二、修改远程调用代码
  • 三、测试
  • 四、启动多个服务,测试负载均衡
  • 五、可能出现的问题

在这里插入图片描述

项目环境介绍

请你确保你的服务器或个人主机上已经安装并配置了Nacos
如果没有,请先安装Nacos并进行相应配置:Nacos安装和配置

这里我们使用一个父子工程的项目来进行演示,子工程一个是订单服务order-service,一个是商品服务product-service,在访问订单服务的时候,它就会远程调用我们的商品服务(此处订单服务时服务消费者,商品服务是服务提供者)
在这里插入图片描述

远程调用代码:

@Service
public class OrderService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate RestTemplate restTemplate;public OrderInfo selectOrderById(Integer orderId){OrderInfo orderInfo = orderMapper.selectOrderInfoById(orderId);String url = "http://127.0.0.1:9090/product/"+orderInfo.getProductId();ProductInfo productInfo = restTemplate.getForObject(url, ProductInfo.class);orderInfo.setProductInfo(productInfo);return orderInfo;}
}

一、服务注册/服务发现

Nacos的服务注册和服务发现代码一样

1.引入Spring Cloud Alibaba依赖

在父工程的pom文件中的中引入Spring Cloud Alibaba的依赖:

<properties><spring-cloud-alibaba.version>2022.0.0.0-Rc2</spring-cloud-alibaba.version>
</properties><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>

💥 注意: Spring Boot 和Spring Cloud的版本是有一定对应关系的,Spring Cloud
Alibaba也遵循Spring Cloud 的标准,在引入依赖时,一定要确认各个版本的对应关系,Spring Cloud Alibaba和Spring Cloud版本对应关系,参考官方文档:版本发布说明
版本在一定范围内才可以选择使用

2.引入Nacos相关的依赖

order-serviceproduct-service中引入nacos依赖

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

3.引入Load Balance依赖

同样在order-serviceproduct-service中都引入

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

4.配置Nacos的地址

可以配置在我们自己的主机上也可以配置在Linux服务器上,此处我们选择Linux

配置项Key默认值说明
服务端地址spring.cloud.nacos.discovery.server-addrNacos Server启动监听的ip地址和端口
spring:application:name: product-service#服务端地址cloud:nacos:discovery:server-addr: http://120.26.87.94:10020/ 

当然,此处如果使用的是本机作为Nacos服务中心,配置项该位自己主机的ip和相应端口即可


二、修改远程调用代码

把代码修改成我们的项目名

@Service
public class OrderService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate RestTemplate restTemplate;public OrderInfo selectOrderById(Integer orderId){OrderInfo orderInfo = orderMapper.selectOrderInfoById(orderId);String url = "http://product-service/product/"+orderInfo.getProductId();ProductInfo productInfo = restTemplate.getForObject(url, ProductInfo.class);orderInfo.setProductInfo(productInfo);return orderInfo;}
}

别忘了添加负载均衡注解 @LoadBalanced

@Configuration
public class BeanConfig {@LoadBalanced@Beanpublic RestTemplate restTemplate(){return new RestTemplate();}
}

三、测试

测试接口:http://127.0.0.1:8080/order/1
在这里插入图片描述

此时启动这两个服务,就会发现在Nacos管理界面就已经有这两个服务了
在这里插入图片描述


四、启动多个服务,测试负载均衡

services栏中,我们可以配置多个服务,具体操作步骤如下:
右击我们要进行复制的服务,然后选择Copy Configuration项,然后再弹出的窗口中点击Modify options->Add VM options,进行端口配置,后续会出现一个新的输入项,我们输入-Dserver.port={自定义端口号}再确认即可创建出多个服务实例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
启动服务,观察Nacos界面,就可以看到我们已经添加了多个服务实例
在这里插入图片描述


五、可能出现的问题

java.net.UnknownHostException

出现这种问题大概率是因为没有添加负载均衡的依赖

检查是否添加了依赖

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

服务注册失败

这种情况有可能会有报错日志也可能没有,但出现这种情况我们应该检查Spring Cloud Alibaba版本是否是正确的:版本发布说明
在这里插入图片描述

http://www.lryc.cn/news/524528.html

相关文章:

  • C++otlv4连接sql serveer使用记录(注意点)
  • 在Linux中,如何查询已安装软件包的版本信息?
  • 搜广推实习面经四
  • 【Elasticsearch】inference ingest pipeline
  • AQS公平锁与非公平锁之源码解析
  • 若依框架在企业中的应用调研
  • 【Day23 LeetCode】贪心算法题
  • 2025年PHP面试宝典,技术总结。
  • Qt中的按钮组:QPushButton、QToolButton、QRadioButton和QCheckBox使用方法(详细图文教程)
  • influxdb+grafana+jmeter
  • Net Core微服务入门全纪录(三)——Consul-服务注册与发现(下)
  • leetcode 479. 最大回文数乘积
  • 独立搭建UI自动化测试框架
  • 62,【2】 BUUCTF WEB [强网杯 2019]Upload1
  • Spring Boot 整合 ShedLock 处理定时任务重复执行的问题
  • 常见Arthas命令与实践
  • Glide加载gif遇到的几个坑
  • STM32学习之通用定时器
  • MiniMax-Text-01——模型详细解读与使用
  • Redis的Windows版本安装以及可视化工具
  • tensorflow源码编译在C++环境使用
  • 第四届机器学习、云计算与智能挖掘国际会议
  • #漏洞挖掘# 一文了解什么是Jenkins未授权访问!!!
  • QT QListWidget控件 全面详解
  • 【Vim Masterclass 笔记25】S10L45:Vim 多窗口的常用操作方法及相关注意事项
  • 包文件分析器 Webpack Bundle Analyzer
  • 代码随想录day14
  • react19新API之use()用法总结
  • 67,【7】buuctf web [HarekazeCTF2019]Avatar Uploader 2(未完成版)
  • ANSYS HFSS 中的相控天线阵列仿真方法