Nacos的安装非常简单,我们只需前往官网下载相对应的压缩包,解压缩即可,因为Nacos本身可以理解为一个已经写好的服务。
1.前往官网下载相对应的Nacos压缩包: https://github.com/alibaba/nacos/releases
2.Nacos的安装: 将下载好的压缩包解压并进入到相关的文件界面
3.启动Nacos: 点击进入bin文件目录,并双击startup.cmd,此时退出启动相关界面(以单例的模式启动)
4.测试启动是否成功: 访问http://192.168.30.1:8848/nacos/index.html#/login测试是否启动成功(每个人的地址或许不一样,可查看启动界面时出现的地址,如上图中的Console),默认登录账号密码为:Nacos,Nacos
5.Nacos界面介绍
整个nacos主要分为配置管理,服务管理,权限管理,命名空间和集群管理。每一个部分都负责不同的功能,如:
配置管理: 配置管理主要负责管理Nacos的配置中心数据,主要有配置的新增,修改等功能
服务管理: 服务管理则主要负责管理我们注册进来的服务,如查看服务的分组,实例数以及相对应的IP和端口
权限控制: 权限控制则主要负责登录用户对nacos的使用权限
命名空间: 命名空间主要是对服务系统的环境进行的一个划分,比如我们开发过程中的dev环境,test环境等
集群管理: 集群管理主要是负责管理nacos集群的
而在Nacos中,命名空间,分组与DataID也有相对应的关系,并且有不同的作用:
在Nacos中,默认的命名空间为public,这个命名空间是不能删除的,默认的分组是DEFAULT_GROUP,默认的集群(Cluster)是DEFAULT。
其中命名空间主要是用来实现隔离的,如我们的开发环境,测试环境,生成环境等等;而分组则是将我们的微服务划分到不同的组中去,而集群的作用则是为了容灾和提高服务性能。
1.建立测试项目: 新建项目SpringCloud-Alibaba,并添加测试模块:server-provider-8081
2.导入公共依赖: 在SpringCloud-Alibaba的pom文件里导入公共依赖
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>org.examplegroupId>
<artifactId>SpringCloud-AlibabaartifactId>
<version>1.0-SNAPSHOTversion>
<modules>
<module>server-provider-8081module>
modules>
<properties>
<java.version>1.8java.version>
<spring.boot.version>2.3.2.RELEASEspring.boot.version>
<spring.cloud.version>Hoxton.SR8spring.cloud.version>
<spring.cloud.alibaba.version>2.2.3.RELEASEspring.cloud.alibaba.version>
properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>${spring.boot.version}version>
<type>pomtype>
<scope>importscope>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-dependenciesartifactId>
<version>${spring.cloud.version}version>
<type>pomtype>
<scope>importscope>
dependency>
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-alibaba-dependenciesartifactId>
<version>${spring.cloud.alibaba.version}version>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
exclude>
excludes>
configuration>
plugin>
plugins>
build>
project>
3.搭建测试模块: server-provider-8081
pom依赖导入:
<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.0modelVersion>
<parent>
<groupId>org.examplegroupId>
<artifactId>SpringCloud-AlibabaartifactId>
<version>1.0-SNAPSHOTversion>
<relativePath/>
parent>
<artifactId>server-provider-8081artifactId>
<properties>
<java.version>1.8java.version>
properties>
<dependencies>
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
dependencies>
project>
新增bootstrape配置文件并写入配置:
spring:
cloud:
nacos:
server-addr: 127.0.0.1:8848
discovery:
group: test
service: ${spring.application.name}
编写application配置文件:
server:
port: 8081
spring:
application:
name: server-provider-8081
启动类添加注解: 用于服务发现
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class ServerProvider8081Application {
public static void main(String[] args) {
SpringApplication.run(ServerProvider8081Application.class, args);
}
}
4.测试: 启动nacos和server-provider,访问并进入nacos
Nacos在设置服务中心时需要注意一下dataId格式设置以及配置文件名访问问题:在nacos中,dateID的完整格式为:{prefix}-{spring.profiles.active}.{file-extension},其中“prefix”默认是微服务的名字,即我们配置中的spring.application.name,也可以通过配置项 spring.cloud.nacos.config.prefix来配置我们自定义的,而spring.profiles.active则是我们的运行环境,如:dev,test,local等等,最后的file-extension则是配置文件的拓展名,一般是properties和yaml。
在配置文件的命名上,建议遵守dateID的完整格式,避免出现没有必要的错误。
简单测试: 从配置中心获取配置文件并输出
1.新增配置文件: 在nacos配置管理中新增配置文件server-provider-8081-dev.yaml
2.修改测试模块: server-provider-8081
pom依赖: 新增nacos-config依赖
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
dependency>
修改bootstrap配置文件:
spring:
cloud:
nacos:
discovery:
group: test
service: ${spring.application.name}
server-addr: 127.0.0.1:8848
config:
file-extension: yaml
server-addr: 127.0.0.1:8848
修改application配置文件:
server:
port: 8081
spring:
application:
name: server-provider-8081
profiles:
active: dev
新增测试类:
package com.example.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
//支持nacos动态刷新
@RefreshScope
public class NacosConfigTestController {
@Value("${config.info}")
private String info;
@GetMapping("/test")
public String test(){
return info;
}
}
在Nacos的配置中心里,所有的配置文件默认存储在它内部嵌套的数据库Debry中,而在真正的开发过程中,配置中心的数据一般都不会放在Ddbry中的,因为Nacos的关机以及启动有时会造成数据丢失的问题,所以普遍都会把配置中心的数据存储在我们的MySQL数据库中(Nacos目前只支持MySQL数据库)。
持久化配置:
2.执行nacos的SQL文件生成相对应的表: 文件位置在Nacos文件夹下的conf/nacos-mysql.sql
3.修改Nacos的配置文件,新增数据库配置: 数据库的连接名和密码改成自己的
如上图所示,Nacos集群的搭建普遍采用以上架构模式,先做一个Nginx主从集群来,然后再搭建一个Nacos集群,Nacos集群默认最小要有三个节点,而且三个节点的配置中心的数据都需要存储在MySQL数据库中。当我们发起请求时,首先会通过Nginx集群,Nginx再将我们的请求转发到Nacos集群,从而达到高可用以及安全的Nacos集群环境。
Nacos集群搭建: windows版本,电脑需下载好nacos,而且前提是Nacos的配置中心数据需放在MySQL中
2.修改配置文件: 进入conf配置文件夹中,复制一份cluster.conf.example并重新命名,然后编写配置
3.搭建其他节点: 将nacos文件夹复制出俩份,作为另外俩个节点,并修改相关的启动端口文件/conf/application.properties
4.测试: 将三个nacos启动,并访问其中一个nacos访问界面
由图中可看出,nacos集群搭建完成,并且三个节点都是启动状态。