这篇文章,主要介绍微服务组件之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 服务发现,默认是true
service: ${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注册中心基础环境搭建。