java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Spring Cloud注册中心Nacos

Spring Cloud之注册中心Nacos的使用详解

作者:新绿MEHO

本文介绍SpringCloud Alibaba中的Nacos组件,对比了Nacos与Eureka的区别,展示了如何在项目中引入SpringCloud Alibaba和Nacos,并配置负载均衡,通过实际操作,验证了服务注册和负载均衡的功能,感兴趣的朋友一起看看吧

Naacos

Nacos是Spring Cloud Alibaba的组件, Spring Cloud Alibaba遵循Spring Cloud中定义的服务注册, 服务发现规范. 因此使⽤Nacos和使⽤Eureka对于微服务来说,并没有太⼤区别.
主要差异在于:

• Eureka需要⾃⼰搭建⼀个服务, Nacos不⽤⾃⼰搭建服务, 组件已经准备好了, 只需启动即可.
• 对应依赖和配置不同

服务注册/服务发现

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

引⼊Spring Cloud Alibaba依赖

在⽗⼯程的pom⽂件中的 <dependencyManagement> 中引⼊Spring Cloud Alibaba的依赖:

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

注意: Spring Boot 和Spring Cloud的版本是有⼀定对应关系的. Spring Cloud Alibaba也遵循
Spring Cloud 的标准, 在引⼊依赖时, ⼀定要确认各个版本的对应关系.
Spring Cloud Alibaba 和Spring Cloud版本对应关系, 参考官⽅⽂档:-》链接
版本在⼀定范围内可以⾃由选择.

引入Nacos依赖

在order-service和product-service中引⼊nacos依赖:

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

引入Load Balance依赖

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

配置Nacos地址

配置项Key默认值说明
服务端地址

spring.cloud.nacos.discovery.

server-addr

Nacos Server 启动监听的ip地址和端⼝

spring:
  application:
    name: product-service
  cloud:
    nacos:
      discovery:
        server-addr: 47.98.109.138:8848

服务端调用

1. 修改IP为项⽬名

package order.service;
import order.mapper.OrderMapper;
import order.model.OrderInfo;
import order.model.ProductInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class OrderService {
    @Autowired
    private OrderMapper orderMapper;
    @Autowired
    private RestTemplate restTemplate;
    public OrderInfo selectOrderById(Integer orderId){
        OrderInfo orderInfo = orderMapper.selectOrderById(orderId);
        String url = "http://product-service/product/"+orderInfo.getProductId();
        ProductInfo productInfo = restTemplate.getForObject(url, ProductInfo.class);
        orderInfo.setProductInfo(productInfo);
        return orderInfo;
    }
}

2. 为restTemplate添加负载均衡注解 @LoadBalanced

package order.config;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class BeanConfig {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

启动服务

启动两个服务, 观察Nacos的管理界⾯, 发现order-service 和product-service 都注册在Nacos上了。

测试负载均衡

多次访问“http://127.0.0.1:8080/order/1”,可以看到,每个服务实例接受的请求数量都差不多:

到此这篇关于Spring Cloud之注册中心之Nacos的使用的文章就介绍到这了,更多相关Spring Cloud注册中心Nacos内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文