手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建

手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建

目录

文章目录

  • 手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建
    • 目录
    • 环境介绍
      • Java环境
      • Maven环境
      • 下载Nacos
        • 编译源码包
        • 安装单机Nacos并启动
    • 搭建Nacos配置中心
      • 项目结构
      • 父工程pom文件
      • pay-service工程pom文件
      • application.yml
      • 动态刷新配置

环境介绍

我用的是Win10系统,为了演示方便,所以就直接把nacos搭在了本地,配置源暂时先用Nacos内嵌的,后面搭建nacos集群时会改用mysql来存储nacos配置信息。

Java环境

nacos是运行在Java环境上的,所以必须要有java环境

手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建_第1张图片

Maven环境

maven环境主要用来将nacos源码编译为可执行文件(jar),为什么需要maven环境呢?是因为我傻乎乎的从github下载的是源码包,所以需要通过mvn命令手动编译一下。(我建议直接下载安装包,当然如果你要修改nacos源码的话就当我没说。。)

下载Nacos

源码包虽然需要手动编译,但是源码包非常小,大概只有4M左右,不像安装包那样有70多M,所以如果你网速不是很好的话,下载源码包手动编译其实也是一个不错的选择

Nacos仓库地址:https://github.com/alibaba/nacos/releases(安装包龟速下载中。。。)

手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建_第2张图片

源码包—百度网盘:https://pan.baidu.com/s/1qCL7iRbT1gXxjsU7mkLuag 提取码:49ke

安装包—百度网盘:https://pan.baidu.com/s/1z3mPXFStyIJAoECl6eut1g 提取码:l5yc

编译源码包

源码包下载完成并解压后的目录是这个样子。如果你下载的是安装包,那么可以跳过这一个步骤

手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建_第3张图片

进入到nacos-1.4.0的根目录下执行 mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U 进行编译

这个命令是我从nacos官网上扒拉下来的:https://nacos.io/en-us/docs/quick-start.html

编译完成后可以看到一堆绿油油的SUCCESS和\nacos-1.4.0\distribution下多出了一个target目录。

手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建_第4张图片

手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建_第5张图片
然后进入target\nacos-server-1.4.0\nacos目录,接来下的步骤就跟安装包的步骤是一样的了。

安装单机Nacos并启动

安装包下载完成并解压后的目录如下

手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建_第6张图片

然后进入bin目录,可以看到以下的几个脚本
手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建_第7张图片

我使用的windows系统,所以要通过startup.cmd这个脚本来启动,这个启动脚本默认是集群模式,所以我还需要编辑一下改为单机模式,当然如果你不修改启动脚本而是在启动时加-m standalone参数手动指定也是可以的,但是由于我比较懒,就直接修改脚本了。

手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建_第8张图片

脚本修改完成后双击startup.cmd就可以启动Nacos了

温馨提示1:单机启动时第一行会提示"nacos is starting with standalone"",需要按一下回车键确认一下哦

温馨提示2:通过这个这个脚本启动的nacos不是后台进程,所以记得不要关闭这个窗口

手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建_第9张图片

接着就可以去浏览器访问了,http://localhost:8848出现如下界面就代表nacos已经成功启动了。
手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建_第10张图片

然后输入nacos默认的账号密码nacos/nacos就可以进入nacos的控制台了

手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建_第11张图片

搭建Nacos配置中心

项目结构

手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建_第12张图片

父工程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>demoartifactId>
    <version>1.0-SNAPSHOTversion>
    <packaging>pompackaging>
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.2.5.RELEASEversion>
    parent>

    <properties>
        <java.version>1.8java.version>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <maven.compiler.source>1.8maven.compiler.source>
        <maven.compiler.target>1.8maven.compiler.target>
        <java.version>1.8java.version>
        <spring-cloud.version>Hoxton.SR3spring-cloud.version>
        <spring-boot.version>2.2.5.RELEASEspring-boot.version>
        <spring-cloud-alibaba.version>2.2.1.RELEASEspring-cloud-alibaba.version>
        <spring-cloud-sentinel.version>2.1.1.RELEASEspring-cloud-sentinel.version>
        <sentinel-datasource-nacos.version>1.7.1sentinel-datasource-nacos.version>
    properties>
    
    <modules>
        <module>pay-servicemodule>
    modules>
    
    <dependencyManagement>
        <dependencies>
            
            <dependency>
                <groupId>com.alibaba.cloudgroupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
                <version>${spring-cloud-alibaba.version}version>
            dependency>
        dependencies>
    dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>

    <repositories>
        <repository>
            <id>maven-aliid>
            <url>http://maven.aliyun.com/nexus/content/groups/public/url>
            <releases>
                <enabled>trueenabled>
            releases>
            <snapshots>
                <enabled>trueenabled>
                <updatePolicy>alwaysupdatePolicy>
                <checksumPolicy>failchecksumPolicy>
            snapshots>
        repository>
    repositories>
project>

pay-service工程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>demoartifactId>
        <version>1.0-SNAPSHOTversion>
    parent>

    <groupId>com.examplegroupId>
    <artifactId>pay-serviceartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <name>pay-servicename>
    <description>Demo project for Spring Bootdescription>

    <dependencies>
        
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
        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>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>

project>

application.yml

server:
  port: 8089
spring:
  application:
    name: pay-service
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
  profiles:
    active: develop

动态刷新配置

然后先添加一个@RestController演示效果( 我是真的懒,Controller都懒得写 直接怼在启动类里面算了),需要关注的是@RefreshScope和@Value这两个SpringCloud原生注解

@SpringBootApplication
@RefreshScope
@RestController
public class PayServiceApplication {

    @Value("${cache:default}")
    private String cache;

    @GetMapping(value = "/hello")
    public String show()
    {
        return cache;
    }
    
    public static void main(String[] args) {
        SpringApplication.run(PayServiceApplication.class, args);
    }

}

然后启动项目并访问http://localhost:8089/hello可以看到返回了cache的默认值:default。

手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建_第13张图片

然后再登录nacos的控制台添加配置信息,并点击右下角的发布按钮

手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建_第14张图片

这里需要说明一点:Nacos是通过Namespace+Group+DataID这三个要素定位到指定的配置文件的,并且DataId也具有指定的规则

手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建_第15张图片

详情请参考官方文档:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

然后再次访问http://localhost:8089/hello,可以看到cache的值已经被刷新了

手把手教你搭建SpringCloudAlibaba微服务架构——Nacos配置中心的搭建_第16张图片

最后说一点,按照dataID的规则假如我配置了spring.profiles.active这个属性时,那么我对应的DataID应该是pay-service-develop.properties。但是我发现当pay-service-develop.properties配置文件不存在时,那么nacos也会取pay-service.properties中的配置信息。

代码已上传至github: https://github.com/chhnhcqjava/SpringCloudAlibabaDemo_1.git

你可能感兴趣的:(微服务,微服务,架构,java)