Nacos(全称:Dynamic Naming and Configuration Service)是阿里巴巴开源的一款功能强大的动态服务发现、服务配置和服务管理平台。同时支持 APCP 模式,当前国内中小型公司在微服务注册中心选型中使用较为常见,是 SpringCloud Alibaba 技术体系的核心组件。
上一篇文章介绍nacos基于mysql,nginx的生产集群搭建,这一篇主要介绍nacos作为服务注册,发现组件的整合SpringCloud体系使用场景。
采用的版本为JDK17,SpringBoot 3.2.7,SpringCloud 2023.0.2,SpringCloud alibaba2023.0.1.0

服务注册与发现

在微服务架构中当前集群中存在多少服务实例,服务之间如何发现是一个问题。当服务实例不多时,传统方式服务消费者自己维护服务提供者信息就够行,但是在微服务架构中,服务划分的细,应用进程多,动态的扩容与缩容,还按照这个模式就很麻烦不够用了。
因此需要抽象一个注册中心组件来解耦服务消费者与服务提供者,进行服务实例的统一管理。它包括以下功能:

  1. 服务注册:注册中心支持服务提供者把自身的服务名,通信协议,网络地址等信息注册在注册中心中。
  2. 服务发现:注册中心支持服务消费者获取当前存在哪些服务提供者以及他们当前的注册信息
  3. 健康检查:注册中心支持通过心跳等方式,维护当前在线的服务提供者的信息,当存在服务异常、上线、下线等操作时,能够通知服务消费者。

未命名绘图.drawio.png

SpringCloud整合Nacos

依赖介绍

spring-cloud-starter-alibaba-nacos-discovery:nacos与springcloud整合的服务starter包。
spring-cloud-starter-loadbalancer:SpringCloud官方的客户端负载均衡组件,用于替代Ribbon,这里nacos版本比较新,官方也不再支持ribbon了。
spring-cloud-starter-openfeign: openfeign是Netflix2016把Feign 捐献给社区,并改名为openfeigin,社区现在也一直在维护。是一个简化HTTP之间调用的客户端。
spring-cloud-starter-bootstrap:SpringBoot2.4版本bootstrap.yml不会主动加载了,这里引入bootstrap依赖既可。

ribbon,loadbalancer,fegin后面文章在详细介绍,这里就不重点介绍了。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.7</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>vip.codehome</groupId>
<artifactId>order-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>nacos-client</name>
<description>prder-service</description>
<properties>
    <java.version>17</java.version>
    <spring-cloud.version>2023.0.2</spring-cloud.version>
    <alibaba-cloud.version>2023.0.1.0</alibaba-cloud.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-loadbalancer</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bootstrap</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>${alibaba-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
   <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
</dependencies>
</dependencyManagement>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
</project>

Nacos配置介绍

serverAddr: nacos注册中心地址
username: nacos鉴权用户名
password: nacos鉴权密码
service: 注册服务名
namespace: 命名空间,一般分为开发(dev),测试(test),生产(prod)等环境,默认是public
group: 分组,可以进一步细分服务,一般按照业务划分,默认DEFALUT_GROUP
bootstrap.yml配置文件

spring:
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.50.247:8848
        username: nacos
        password: nacos
        service: order-service
        namespace: dev
        group: v1
  application:
    name: order-service

最后在启动类添加@EnableDiscoveryClient注解即可。

项目启动后可以在Nacos服务中心查看注册的服务。
image-nwta.png

文章作者: 编程之家
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 编程之家
springcloud 注册中心 nacos fegin 客户端负载
喜欢就支持一下吧