当前位置: 首页 > 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版本是否是正确的:版本发布说明
在这里插入图片描述

相关文章:

【Nacos】Nacos快速上手

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

C++otlv4连接sql serveer使用记录(注意点)

C使用otlv4在做插入时&#xff0c;有一些设计的坑需要注意 插入数据&#xff1a; 当要给表中插入单个字符时&#xff0c;数据库表设计使用varchar(1)是合理的&#xff0c;但是otlv4一直报错char。 后续查很久才知道&#xff0c;otlv4所写的绑定的字符数组的长度应该实际数组…...

在Linux中,如何查询已安装软件包的版本信息?

在Linux中&#xff0c;查询已安装软件包的版本信息可以使用多种方法&#xff0c;具体取决于你使用的Linux发行版及其所采用的包管理器。 RPM-based Linux系统&#xff08;如Red Hat、CentOS、Dedora&#xff09; 使用rpm命令查询所有已经安装的特定软件包及其版本&#xff1a…...

搜广推实习面经四

字节跳动TAC 广告算法 一、回归任务的评价指标有哪些 1.均方误差&#xff08;Mean Squared Error, MSE&#xff09;/均方根误差&#xff08;Root Mean Squared Error, RMSE&#xff09; M S E 1 n ∑ i 1 n ( y i − y ^ i ) 2 MSE \frac{1}{n} \sum_{i1}^{n} (y_i - \ha…...

【Elasticsearch】inference ingest pipeline

Elasticsearch 的 Ingest Pipeline 功能允许你在数据索引之前对其进行预处理。通过使用 Ingest Pipeline&#xff0c;你可以执行各种数据转换和富化操作&#xff0c;包括使用机器学习模型进行推理&#xff08;inference&#xff09;。这在处理词嵌入、情感分析、图像识别等场景…...

AQS公平锁与非公平锁之源码解析

AQS加锁逻辑 ReentrantLock.lock public void lock() {sync.acquire(1);}AbstractQueuedSynchronizer#acquire public final void acquire(int arg) {if (!tryAcquire(arg) &&acquireQueued(addWaiter(Node.EXCLUSIVE), arg))selfInterrupt();}addWaiter就是将节点加入…...

若依框架在企业中的应用调研

若依框架作为一款基于 Spring Boot 的轻量级 Java 快速开发框架&#xff0c;在企业级应用开发中发挥着重要作用。以下是对其在企业中应用的调研情况&#xff1a; 应用现状 广泛应用于多种管理系统&#xff1a;在众多企业中&#xff0c;若依框架常被用于构建各类后台管理系统&a…...

【Day23 LeetCode】贪心算法题

一、贪心算法 贪心没有套路&#xff0c;只有碰运气&#xff08;bushi&#xff09;&#xff0c;举反例看看是否可行&#xff0c;&#xff08;运气好&#xff09;刚好贪心策略的局部最优就是全局最优。 1、分发饼干 455 思路&#xff1a;按照孩子的胃口从小到大的顺序依次满足…...

2025年PHP面试宝典,技术总结。

面试是进入职场的第一道坎&#xff0c;因为我本身学校太一般的问题在面试中遇到了各种不爽&#xff0c;和那些高学历的相比自己真是信心大跌。我面试的方向是php开发工程师&#xff0c;主要做网站后台、APP接口等。下面是我这段时间总结的面试方面的常考常问的知识点&#xff0…...

Qt中的按钮组:QPushButton、QToolButton、QRadioButton和QCheckBox使用方法(详细图文教程)

&#x1f4aa; 图像算法工程师&#xff0c;专业从事且热爱图像处理&#xff0c;图像处理专栏更新如下&#x1f447;&#xff1a; &#x1f4dd;《图像去噪》 &#x1f4dd;《超分辨率重建》 &#x1f4dd;《语义分割》 &#x1f4dd;《风格迁移》 &#x1f4dd;《目标检测》 &a…...

influxdb+grafana+jmeter

influxdb influxd先启动 启动完成后执行 influxdb的端口号 grafana的启动 通过grafana-server.exe启动grafana 启动后打开 http://localhost:8087/...

Net Core微服务入门全纪录(三)——Consul-服务注册与发现(下)

系列文章目录 1、.Net Core微服务入门系列&#xff08;一&#xff09;——项目搭建 2、.Net Core微服务入门全纪录&#xff08;二&#xff09;——Consul-服务注册与发现&#xff08;上&#xff09; 3、.Net Core微服务入门全纪录&#xff08;三&#xff09;——Consul-服务注…...

leetcode 479. 最大回文数乘积

题目如下 看完题目后没有想到取巧的办法所以尝试使用枚举法。 使用枚举法之前先回答两个问题&#xff1a; 1. 如何构造回文串&#xff1f; 2. 如何判断是否存在两个n位整数相乘可以得到这个回文串&#xff1f; 显然n位数与n位数相乘必然是2n位数也就是说最大回文整数长度必然…...

独立搭建UI自动化测试框架

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 今天给大家分享一个seleniumtestngmavenant的UI自动化&#xff0c;可以用于功能测试&#xff0c;也可按复杂的业务流程编写测试用例&#xff0c;今天此篇文章不过多…...

62,【2】 BUUCTF WEB [强网杯 2019]Upload1

进入靶场 此处考点不是SQL&#xff0c;就正常注册并登录进去 先随便传一个 进行目录扫描&#xff0c;我先用爆破代替 先随便后面写个文件名 为了提供payload位置 www.tar.gz真的存在 返回浏览器修改url就自动下载了 看到tp5,应该是ThinkPHP5框架 参考此博客的思路方法c[强网杯…...

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题

&#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Micro麦可乐的博客 &#x1f425;《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程&#xff0c;入门到实战 &#x1f33a;《RabbitMQ》…...

常见Arthas命令与实践

Arthas 官网&#xff1a;https://arthas.aliyun.com/doc/&#xff0c;官方文档对 Arthas 的每个命令都做出了介绍和解释&#xff0c;并且还有在线教程&#xff0c;方便学习和熟悉命令。 Arthas Idea 的 IDEA 插件。 这是一款能快速生成 Arthas命令的插件&#xff0c;可快速生成…...

Glide加载gif遇到的几个坑

Glide本身支持gif格式的动画加载&#xff0c;但是大多数情况下我们用Glide都是去加载一些静态图片&#xff0c;加载gif动态图的需求不是很多&#xff0c;因此这次使用Glide加载gif就遇到了一些令人匪夷所思的问题 问题一&#xff1a;加载gif图片会有明显的卡顿 通常情况下我们…...

STM32学习之通用定时器

1.1通用定时器介绍 通用定时器具有基本定时器的所有特征&#xff0c;基本定时器只能递增计数&#xff0c;而通用定时器可以递减计数&#xff0c;可以中心对齐计数&#xff1b;也可以触发ADC和DAC&#xff0c;同时在更新事件&#xff0c;触发事件&#xff0c;输入捕获&#xff…...

MiniMax-Text-01——模型详细解读与使用

MiniMax发布了最新的旗舰款模型&#xff0c;MiniMax-Text-01。这是一个456B参数的MOE模型&#xff0c;支持最大4M上下文。今天我们来解读一下这个模型&#xff0c;最后会讲一下模型的使用方式和价格。 先来看整体指标&#xff0c;以下图表分为三块指标&#xff0c;分别是文本能…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...

6.9-QT模拟计算器

源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...