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

【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 {
    @Autowired
    private OrderMapper orderMapper;
    @Autowired
    private 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 {
    @Autowired
    private OrderMapper orderMapper;
    @Autowired
    private 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
    @Bean
    public 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.kler.cn/a/514276.html

相关文章:

  • qiankun+vite+vue3
  • Linux Bash 中使用重定向运算符的 5 种方法
  • 数据结构-二叉树
  • 简述mysql 主从复制原理及其工作过程,配置一主两从并验证
  • Unity预制体未即时刷新
  • 【Linux系统编程】—— 从零开始实现一个简单的自定义Shell
  • Models如何使用Gorm与数据库进行交互?
  • 利用Kubespray安装生产环境的k8s集群-准备篇
  • centos哪个版本建站好?centos最稳定好用的版本
  • 音频入门(二):音频数据增强
  • 【Elasticsearch】inference ingest pipeline
  • 缓存之美:万文详解 Caffeine 实现原理(上)
  • 多线程杂谈:惊群现象、CAS、安全的单例
  • 一文大白话讲清楚webpack基本使用——6——热更新及其原理
  • Bash语言的安全开发
  • 设计模式Python版 GOF设计模式
  • 【大厂面试题】软件测试面试题整理(附答案)
  • 消息队列篇--原理篇--RabbitMQ和Kafka对比分析
  • Git【将本地代码推送到远程仓库】--初学者必看
  • 2025美赛数学建模B题思路+模型+代码+论文
  • 电脑开机出现Bitlock怎么办
  • solidity基础 -- 内联汇编
  • PyTest自学 - pytest的各种执行方式
  • 是 mysql 分库分表,还是Hive 大数据处理?
  • Linux C/C++编程-文件类型
  • ui文件转py程序的工具