Nacos服务注册与发现---Nacos的使用以及集群

1. Nacos的安装

       Nacos的安装非常简单,我们只需前往官网下载相对应的压缩包,解压缩即可,因为Nacos本身可以理解为一个已经写好的服务。

1.前往官网下载相对应的Nacos压缩包: https://github.com/alibaba/nacos/releases
Nacos服务注册与发现---Nacos的使用以及集群_第1张图片

2.Nacos的安装: 将下载好的压缩包解压并进入到相关的文件界面
Nacos服务注册与发现---Nacos的使用以及集群_第2张图片

3.启动Nacos: 点击进入bin文件目录,并双击startup.cmd,此时退出启动相关界面(以单例的模式启动)
Nacos服务注册与发现---Nacos的使用以及集群_第3张图片
Nacos服务注册与发现---Nacos的使用以及集群_第4张图片
4.测试启动是否成功: 访问http://192.168.30.1:8848/nacos/index.html#/login测试是否启动成功(每个人的地址或许不一样,可查看启动界面时出现的地址,如上图中的Console),默认登录账号密码为:Nacos,Nacos
Nacos服务注册与发现---Nacos的使用以及集群_第5张图片
5.Nacos界面介绍
Nacos服务注册与发现---Nacos的使用以及集群_第6张图片
       整个nacos主要分为配置管理,服务管理,权限管理,命名空间和集群管理。每一个部分都负责不同的功能,如:

配置管理: 配置管理主要负责管理Nacos的配置中心数据,主要有配置的新增,修改等功能

服务管理: 服务管理则主要负责管理我们注册进来的服务,如查看服务的分组,实例数以及相对应的IP和端口

权限控制: 权限控制则主要负责登录用户对nacos的使用权限

命名空间: 命名空间主要是对服务系统的环境进行的一个划分,比如我们开发过程中的dev环境,test环境等

集群管理: 集群管理主要是负责管理nacos集群的

而在Nacos中,命名空间,分组与DataID也有相对应的关系,并且有不同的作用:

Nacos服务注册与发现---Nacos的使用以及集群_第7张图片

       在Nacos中,默认的命名空间为public,这个命名空间是不能删除的,默认的分组是DEFAULT_GROUP,默认的集群(Cluster)是DEFAULT。

       其中命名空间主要是用来实现隔离的,如我们的开发环境,测试环境,生成环境等等;而分组则是将我们的微服务划分到不同的组中去,而集群的作用则是为了容灾和提高服务性能。

2. Nacos服务注册与发现

1.建立测试项目: 新建项目SpringCloud-Alibaba,并添加测试模块:server-provider-8081
Nacos服务注册与发现---Nacos的使用以及集群_第8张图片
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服务注册与发现---Nacos的使用以及集群_第9张图片

3. 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
Nacos服务注册与发现---Nacos的使用以及集群_第10张图片
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;
    }
}

3.访问测试类路径
在这里插入图片描述

4. Nacos配置文件持久化

       在Nacos的配置中心里,所有的配置文件默认存储在它内部嵌套的数据库Debry中,而在真正的开发过程中,配置中心的数据一般都不会放在Ddbry中的,因为Nacos的关机以及启动有时会造成数据丢失的问题,所以普遍都会把配置中心的数据存储在我们的MySQL数据库中(Nacos目前只支持MySQL数据库)。

持久化配置:

1.新建数据库: nacos_config
Nacos服务注册与发现---Nacos的使用以及集群_第11张图片

2.执行nacos的SQL文件生成相对应的表: 文件位置在Nacos文件夹下的conf/nacos-mysql.sql
Nacos服务注册与发现---Nacos的使用以及集群_第12张图片
3.修改Nacos的配置文件,新增数据库配置: 数据库的连接名和密码改成自己的
Nacos服务注册与发现---Nacos的使用以及集群_第13张图片

4.重新启动Nacos,并新增配置文件
Nacos服务注册与发现---Nacos的使用以及集群_第14张图片

5.前往MySQL中查看是否有相对应的数据
Nacos服务注册与发现---Nacos的使用以及集群_第15张图片

5. Nacos集群搭建

Nacos服务注册与发现---Nacos的使用以及集群_第16张图片

       如上图所示,Nacos集群的搭建普遍采用以上架构模式,先做一个Nginx主从集群来,然后再搭建一个Nacos集群,Nacos集群默认最小要有三个节点,而且三个节点的配置中心的数据都需要存储在MySQL数据库中。当我们发起请求时,首先会通过Nginx集群,Nginx再将我们的请求转发到Nacos集群,从而达到高可用以及安全的Nacos集群环境。

Nacos集群搭建: windows版本,电脑需下载好nacos,而且前提是Nacos的配置中心数据需放在MySQL中

1.修改Nacos的启动文件startup.cmd
Nacos服务注册与发现---Nacos的使用以及集群_第17张图片

2.修改配置文件: 进入conf配置文件夹中,复制一份cluster.conf.example并重新命名,然后编写配置
Nacos服务注册与发现---Nacos的使用以及集群_第18张图片
3.搭建其他节点: 将nacos文件夹复制出俩份,作为另外俩个节点,并修改相关的启动端口文件/conf/application.properties
Nacos服务注册与发现---Nacos的使用以及集群_第19张图片
Nacos服务注册与发现---Nacos的使用以及集群_第20张图片

4.测试: 将三个nacos启动,并访问其中一个nacos访问界面
Nacos服务注册与发现---Nacos的使用以及集群_第21张图片
​ 由图中可看出,nacos集群搭建完成,并且三个节点都是启动状态。

你可能感兴趣的:(SpringCloud,Alibaba篇,微服务,springcloud,服务发现)