> 文章列表 > 【微服务笔记19】微服务组件之Nacos注册中心基础环境搭建

【微服务笔记19】微服务组件之Nacos注册中心基础环境搭建

【微服务笔记19】微服务组件之Nacos注册中心基础环境搭建

这篇文章,主要介绍微服务组件之Nacos注册中心基础环境搭建。

目录

一、Nacos注册中心

1.1、Nacos注册中心

1.2、搭建NacosServer服务端

(1)下载Nacos Server服务端工程

(2)修改配置信息

(3)单机启动nacos服务

(4)访问nacos控制台

1.3、搭建nacos客户端工程

(1)引入依赖

(2)添加配置信息

(3)编写启动类

(4)运行测试

1.4、服务发现配置属性介绍

1.5、nacos控制台介绍

(1)数据模型

(2)命名空间

(3)Group分组

(4)服务Service

(5)集群Cluster


一、Nacos注册中心

1.1、Nacos注册中心

Nacos是Spring Cloud Alibaba微服务组件之一,因为Spring Cloud Netflix中有些组件停止更新维护了,所以Alibaba就基于Spring Cloud Netflix第一代微服务组件之上,开发出了自己的一套微服务组件,即:第二代微服务组件Spring Cloud Alibaba。

Nacos就是Spring Cloud Alibaba中的一个组件,这个组件不仅具备了注册中心的作用,而且还具备配置中心的,此外Nacos提供了一个可视化的管理界面,可以方便的管理服务、服务配置信息等。

Nacos是Dynamic Naming and Configuration Service的缩写,中文含义就是:动态命名和配置服务,所以Nacos具备的两个核心功能就是:服务发现、配置管理。这里首先介绍一下,Nacos实现的注册中心功能。

Nacos注册中心的核心思想和Eureka注册中心是类似的,也是采用的C/S架构模式,但是和Eureka注册中心的区别在于,Nacos已经给我们提供了Nacos Server服务端工程,我们只需要下载对应的jar包即可使用,不需要我们自己搭建注册中心服务端工程。

1.2、搭建NacosServer服务端

(1)下载Nacos Server服务端工程

Nacos注册中心服务端工程不需要我们自己搭建,从Nacos官网下载对应版本的Nacos Server对应的jar包即可。目前nacos已经开发到了2.x版本,对于之前的1.x版本已经不再进行维护,所以推荐使用2.x版本的nacos,我下载的是nacos2.2.2最新版本作为案例。

下载nacos server服务端之后,解压目录,目录结构如下所示:

(2)修改配置信息

nacos官网说,对于2.2.2和2.2.1版本的NacosServer安装包,需要修改【conf/application.properties】配置文件中的【nacos.core.auth.plugin.nacos.token.secret.key】属性值,这个属性就是自定义密钥,修改成自己的即可。为了方便演示,官网也给出了一个测试密钥,我们可以暂时拿来使用。

### The default token (Base64 String):
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789和VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
  • 注意:没有修改这个配置信息,将无法启动。

(3)单机启动nacos服务

这里我们是采用单机的nacos服务,所以执行下面的命令就可以启动服务。

# windows下执行这个启动
startup.cmd -m standalone# linux下执行下面命令启动
sh startup.sh -m standalone

 执行命令之后,就可以正常启动nacos服务端啦,如下所示。

(4)访问nacos控制台

nacos服务端工程,给我们提供了一个可视化的管理界面,可以清楚的看到各微服务实例的运行状态,配置信息等内容,nacos控制台访问【http://127.0.0.1:8848/nacos】地址即可进入到nacos控制台界面(nacos默认的启动端口是8848)。

到此,nacos server服务端工程就已经搭建好啦,下面就搭建一个客户端工程。

1.3、搭建nacos客户端工程

nacos客户端工程,其实就是每一个微服务应用程序,在应用程序中引入【nacos-discovery】依赖,启动类上面使用【】注解。因为现在是要使用Spring Cloud Alibaba微服务,所以在原先微服务的基础之上,我们还需要引入【Spring Cloud Alibaba】的微服务依赖。

(1)引入依赖

  • 父工程:需要引入SpringBoot依赖、Spring Cloud依赖、Spring Cloud Alibaba依赖。
  • 需要注意的是,这三个依赖之间的版本需要匹配,具体的版本可以查看【版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub】地址。
  • 有时候可能因为版本不匹配问题,会导致服务搭建失败。
<!-- 引入SpringBoot依赖 -->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.0.RELEASE</version><relativePath/> <!-- lookup parent from repository -->
</parent><dependencyManagement><!-- 使用 dependencyManagement 依赖管理,统一管理组件的版本 --><dependencies><!-- 引入 SpringCloud 微服务依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR12</version><type>pom</type><scope>import</scope></dependency><!-- 引入 Spring Cloud Alibaba 依赖 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.7.RELEASE</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>
  • 子工程:子工程中引入【nacos-discovery】客户端依赖。
<!-- 引入 web 依赖 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 引入 nacos-discovery 客户端依赖 -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

(2)添加配置信息

  • 在application.yml配置文件中,需要指定nacos server的服务地址。
server:port: 9090
spring:application:name: nacos-consumer # 微服务名称cloud:nacos:discovery:enabled: true # 启用 nacos 服务发现,默认是trueservice: ${spring.application.name} # 指定注册到nacos注册中心中的微服务名称server-addr: 127.0.0.1:8848 # nacos server 注册中心服务端的地址

(3)编写启动类

package com.gitee.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;/*** @version 1.0.0* @Date: 2023/4/22 9:28* @Copyright (C) ZhuYouBin* @Description: nacos消费者工程启动类*/
// 启动 nacos 服务发现客户端
@EnableDiscoveryClient
@SpringBootApplication
public class NacosConsumerApp {public static void main(String[] args) {SpringApplication.run(NacosConsumerApp.class, args);}
}

(4)运行测试

启动nacos客户端工程之后,去nacos控制台查看是否服务注册成功。

1.4、服务发现配置属性介绍

nacos服务发现常见的配置属性有下面这些:

spring.cloud.nacos.discovery.service:给当前的服务命名,默认是 ${spring.application.name}
spring.cloud.nacos.discovery.server-addr:Nacos Server 启动监听的ip地址和端口
spring.cloud.nacos.discovery.group:设置服务所处的分组,默认是DEFAULT_GROUP
spring.cloud.nacos.discovery.weight:设置服务的权重,权重越大负载均衡时候分发请求越多(取值范围 1 到 100,数值越大,权重越大)
spring.cloud.nacos.discovery.namespace:命名空间,设置不同的命名空间,就相当于是不同的环境,例如:开发环境、测试环境、生产环境。
spring.cloud.nacos.discovery.cluster-name:集群名称,默认是 DEFAULT

1.5、nacos控制台介绍

(1)数据模型

在nacos中,它将所有的微服务采用一个数据模型来定义,分别是:

  • 命名空间:相当于是将应用分成了多个环境,例如可以有:开发环境、测试环境、生产环境。
  • 分组:一个命名空间下面,可以存在多个分组,每一个分组就是一些服务的集合。
  • 服务:服务就是指一个微服务应用程序,例如:订单微服务、商品微服务。
  • 集群:一个服务中,可以部署多个结点,这些服务结点就组成了集群的概念。
  • 实例:最小的一个单元,就是指具体的微服务结点。

(2)命名空间

在nacos控制台中的【命名空间】菜单里面,可以新增、删除命名空间,默认会有public命名空间,并且这个是不能进行删除、修改的。

可以在application.yml配置文件中,通过【spring.cloud.nacos.discovery.namespace】属性指定注册到哪个命名空间里面,需要注意的是:这个是将命名空间的ID配置到namespace里面。

(3)Group分组

Group分组是对命名空间进一步细分,两个微服务名称相同,但是分组不同,那么这里个微服务就不会作为集群管理。

但是如果分组是相同的,那么两个相同的微服务将被纳入同一个集群里面管理。 

(4)服务Service

一个Group分组下面,就是一个一个的具体微服务啦,一个分组下面可以有多个微服务,例如:订单微服务、商品微服务。

(5)集群Cluster

一个服务下面,可以部署多台实例,这些实例就组成了一个集群,详情里面可以看到集群中的每一个实例,并且可以对实例进行上线、下线操作。

  • 上线是指:将实例的权重修改为1,请求会分发到这个实例上面。
  • 下线是指:将实例的权重修改为0,请求不会分发到这个实例上面,但是服务实例仍然是运行的。

到此,Nacos注册中心的基础环境就搭建好啦。

综上,这篇文章结束了,主要介绍微服务组件之Nacos注册中心基础环境搭建。