用SpringCloud Alibaba搭建属于自己的微服务(十三)~基础搭建~alibaba nacos作为分布式配置中心

一.概述

1.何谓分布式配置中心?

通俗的来说就是在分布式系统中,有一个集中的配置文件管理中心,其他的组件从配置中心读取配置,想修改组件的配置,可以通过修改配置中心的配置来实现修改组件的配置.

2.为什么使用nacos?

(1) nacos是alibaba的项目(值得信赖).
(2) 支持国产.
(3) 文档学习成本低(有中文文档).
(4) nacos属于alibaba自用,淘宝的并发量以14亿中国人为基础堪称世界之最.

二.server-user服务配置文件部分迁移到nacos配置中心.

1.nacos的官方文档.

https://nacos.io/zh-cn/docs/quick-start.html.

2.nacos中的一些名词.

(1) group组的概念.

(2) namespace名称空间的概念.

这里我不一一解释何谓组,何谓namespace,都是字面意思,放在实际生产中,可以用来区分环境,比如dev组、test组和prod组,dev名称空间、test名称空间和prod名称空间,当然我们也可以不这样使用(比如我们用微信,微信有非常的多的功能,但是我们一般用来聊天).

3.配置规则.

(1) 官方文档的部分截图,过于学术化,我第二点说得通俗一点.

在这里插入图片描述

(2) 就是让我们的微服务去nacos上读取配置,nacos提供了两种方案.

a.默认加载的配置文件.

默认加载的配置文件名称为${prefix}-${spring.profile.active}.${file-extension},意思就是假设我们的服务名称为server-user,那么默认从nacos注册中心上默认加载server-user.yml.

b.手动配置的配置文件.
手动配置的配置文件,当然就是需要我们在application/bootstrap.yml中写好nacos中对应的配置文件名称.

4.server-user服务用nacos作为配置中心(默认配置文件).

(1) server.pom中引入nacos配置中心客户端依赖.

<dependency>
   <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

(2) application.yml文件更名为bootstrap.yml

a.为什么要改?
  nacos这么定义的,从bootstrap.yml中读取nacos配置中心的配置信息(人家这么写的你怪谁).

b.bootstrap.yml和application.yml在springboot中有什么区别?
  bootstrap.yml见名知义是系统级别的,application.yml是应用级别的,springboot工程启动的时候会先加载bootstrap.yml再加载application.yml.
在这里插入图片描述

(3) yml中配置注册中心的ip,加入了spring.cloud.nacos.config

server:
  port: 1002  #服务端口
spring:
  application:
    name: server-user #服务名称
  datasource:
    username: root
    password: Test2016@
    url: jdbc:mysql://47.6.11.185:3306/user?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true
    type: com.alibaba.druid.pool.DruidDataSource
  cloud:
    nacos:
      discovery:
        server-addr: 47.96.131.85:8848
      config:
        server-addr: 47.6.131.185:8848  #nacos config配置中心ip和端口
        file-extension: yaml  #文件扩展名格式,针对于默认的{spring.application.name}-${profile}.${file-extension:properties}配置
        enabled: true #开启或关闭配置中心

mybatis-plus:
  typeAliasesPackage: com.ccm.server.user.dao.mysql.domain  #数据库实体类包
  mapper-locations: classpath:mappering/*.xml #xml文件扫描

(4) nacos上创建默认会加载的配置文件server-user.yml

在这里插入图片描述在这里插入图片描述在这里插入图片描述

(5) 测试代码编写.

package com.ccm.server.user.controller;

import com.ccm.common.exception.result.ResultSet;
import com.ccm.server.user.service.TestService;
import com.mysql.cj.protocol.Resultset;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Description nacos测试控制层
 * @Author zhouzhiwu
 * @CreateTime 2020/7/16 21:59
 */
@Api(tags = "nacos测试")
@RestController
@RequestMapping(value = "nacosTest")
public class NacosTestController {

    @Value("${server-user.testConstant}")
    private String aa;


    /**
     * @Description nacos加载默认的配置文件
     * @Author zhouzhiwu
     * @CreateTime 2020/7/16 21:59
     * @Params []
     * @Return java.lang.Object
     */
    @ApiOperation(value = "从nacos加载默认的配置文件测试")
    @GetMapping(value = "test01")
    public ResultSet test01() {
        return ResultSet.success(aa);
    }
}

(6)swagger测试.

asdasd读取到了nacos中server-user这个配置文件的配置,成功.

5.server-user服务用nacos作为配置中心(自定义配置文件).

(1) 要求:把server-user的数据库配置文件迁移到nacos中.

(2) nacos上面新建mysql-user.yaml的配置文件.

在这里插入图片描述在这里插入图片描述

(3)删除bootstrap.yml中的数据库相关配置.

server:
  port: 1002  #服务端口
spring:
  application:
    name: server-user #服务名称
  cloud:
    nacos:
      discovery:
        server-addr: 47.96.131.15:8848
      config:
        server-addr: 47.96.131.85:8848  #nacos config配置中心ip和端口
        file-extension: yaml  #文件扩展名格式,针对于默认的{spring.application.name}-${profile}.${file-extension:properties}配置
        enabled: true #开启或关闭配置中心

(3)配置要从nacos中加载哪些配置文件.

server:
  port: 1002  #服务端口
spring:
  application:
    name: server-user #服务名称
  cloud:
    nacos:
      discovery:
        server-addr: 47.96.11.185:8848
      config:
        server-addr: 47.96.131.18:8848  #nacos config配置中心ip和端口
        file-extension: yaml  #文件扩展名格式,针对于默认的{spring.application.name}-${profile}.${file-extension:properties}配置
        enabled: true #开启或关闭配置中心
        shared-dataids: mysql-user.yaml #自定义的配置文件dataid,以逗号分隔
        refreshable-dataids: mysql-user.yaml #自定义的配置文件dataid实现自动刷新,以逗号分隔(其实就是热加载配置文件)

(4)编写测试代码,见test02()(能够正常访问数据库说明配置生效).

package com.ccm.server.user.controller;

import com.ccm.common.exception.result.ResultSet;
import com.ccm.server.user.dao.mysql.mapper.TestTableMapper;
import com.ccm.server.user.service.TestService;
import com.mysql.cj.protocol.Resultset;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Description nacos测试控制层
 * @Author zhouzhiwu
 * @CreateTime 2020/7/16 21:59
 */
@Api(tags = "nacos测试")
@RestController
@RequestMapping(value = "nacosTest")
public class NacosTestController {

    @Value("${server-user.testConstant}")
    private String aa;

    @Autowired
    private TestTableMapper testTableMapper;


    /**
     * @Description nacos加载默认的配置文件
     * @Author zhouzhiwu
     * @CreateTime 2020/7/16 21:59
     * @Params []
     * @Return java.lang.Object
     */
    @ApiOperation(value = "从nacos加载默认的配置文件测试")
    @GetMapping(value = "test01")
    public ResultSet test01() {
        return ResultSet.success(aa);
    }

    @ApiOperation(value = "从nacos加载自定义配置文件测试")
    @GetMapping(value = "test02")
    public ResultSet test02() {
        return ResultSet.success(testTableMapper.list());
    }
}

(5)swagger测试.

在这里插入图片描述没毛病,至此完事.
源码地址:https://gitee.com/chouchimoo/ccm-mall.git(本章节分支:zj-13)

猜你喜欢

转载自blog.csdn.net/theOldCaptain/article/details/107393991