Spring Cloud Alibaba(二) 环境搭建及nacos注册中心配置中心

1,201 阅读4分钟

Spring Cloud Alibaba(二) 环境搭建及nacos注册中心配置中心

技术选型

maven
开发工具:idea
注册中心、配置中心:nacos-2.0.3
spring-cloud
spring-cloud-alibaba
API网关:spring-cloud-alibaba-gateway
数据库:MySQL 5.7
nosql:redis
分布式锁:redisson
持久层:mybatis-plus
全链路蓝绿灰度发布容灾、网关动态路由: discovery-6.12.1
分布式事务:seata
服务调用:openfeign
服务熔断和降级:Hystrix

架构设计

image.png 本人画的不好,别喷我🐶

一、Nacos安装及启动

1. Nacos单机启动

  1. 首先先下载nacos

github下载地址:github.com/alibaba/nac…

百度云下载地址:pan.baidu.com/s/1n1l1lf8B… 提取码:41A5

  1. 解压后进入nacos/bin目录
  2. 输入命令启动服务

单机启动 linux:sh startup.sh -m standalone

windows:`cmd startup.cmd -m standalone`

image.png

看到这个基本上就是启动成功了,可通过 http://127.0.0.1:8848/nacos/index.html 进入自带的控制台界面,默认用户名/密码是nacos/nacos

image.png

2. Nacos集群启动

3个或3个以上Nacos节点才能构成集群,仅支持linux/unix/mac

在nacos的解压目录conf目录下,有配置文件cluster.conf(若无则手动创建),每行配置成ip:port。(配置3个或3个以上节点)

#cluster.conf
192.168.0.1:8848
192.168.0.2:8848
192.168.0.3:8848

配置后在各个节点服务器输入命令启动所有服务:sh startup.sh

3. 配置Mysql

默认使用嵌入式数据库,0.7版本以后增加支持mysql数据源能力

初始化nacos相关表:运行conf/nacos-mysql.sql文件 修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=user
db.password=password

配置后输入命令启动服务(参照上文后续启动服务命令)

  1. Nacos集群启动 3. 配置Mysql 全都是借鉴别人的,咱没试过,有问题别找我,找我我也不会🐶

二、搭建项目

1.新建无骨架的maven项目作为父项目

image.png 删除掉src及其他的东西留下个pom,在pom中引入依赖作为父依赖,然后下面的子依赖就可以不用写版本号了。

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.3.12.RELEASE</version>
    </parent>
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
        <spring-cloud.version>Hoxton.SR12</spring-cloud.version>
    </properties>
    <!--全局引入下载依赖地址,并不会引入依赖-->
    <dependencyManagement>
        <dependencies>
            <!--springcloud下载仓库-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--阿里巴巴下载仓库-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--nacos注册发现依赖-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
            </dependency>
            <!--nacos统一配置中心管理依赖-->\
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

三、ncaos注册中心

新建一个Module:zhc-common,以后主要是放置公共实体类以及公共工具类以及公共依赖,所以不需要启动类,以及test

image.png image.png


<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>springcloud</artifactId>
        <groupId>com.zhc.cloud</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>zhc-common</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

然后根据上面的方式在建两个module,这里一个zhc-business,一个zhc-system
然后公共类引入Nacos注册发现依赖 以及 springboot的web依赖,两个新建的module引入common

然后以zhc-system服务为例

  1. 引依赖
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <dependency>
        <groupId>com.zhc.cloud</groupId>
        <artifactId>zhc-common</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
</dependencies>
  1. 写配置文件

创建resource文件夹以及application.yml文件并写入配置

spring
    #nacos
    cloud:
      nacos:
        # nacos discovery 配置
        discovery:
          #使用nacos的配置中心配置覆盖本地配置
          enabled: true
          #分組
          group: ZHC_GROUP
          #给服务添加一些标签,例如属于什么业务线,该元数据会持久化存储在服务端,但是客户端消费时不会获取到此值,默认为空
          metadata:
            env: env1
            group: ZHC_GROUP
            region: dev
            version: 1.0
            zone: zone1
          #命名空间ID
          namespace: ZHC_GROUP
          #账号
          username: nacos
          #密码
          password: nacos
          #该项目是否向注册中心注册服务,默认为true
          register-enabled: true
          #nacos地址
          server-addr: 127.0.0.1:8848
          #项目名称
          service: ZHC-SYSTEM-SERVICE
  1. 启动类
@SpringBootApplication //SpringBoot
@EnableConfigurationProperties //开启服务的注册
public class ZhcSystemStartApplication {

    public static void main(String[] args) {
        SpringApplication.run(ZhcSystemStartApplication.class, args);
    }


}
  1. 服务注册到nacos

在nacos中创建命名空间

image.png

创建后启动项目就可以看到ZHC-SYSTEM-SERVICE可以注册到ncaos。

image.png

四、ncaos配置中心

  1. 写配置文件

创建 bootstrap.yml 文件并写入配置

spring:
  application:
    name: zhc-system
  cloud:
    nacos:
      # nacos config 配置
      config:
        #        enabled: false
        #        nacos集群地址。注:多个IP可以通过“,”号隔离,例如192.168.80.1:8848,192.168.80.1:8848  填写域名时前缀不要加上http://
        server-addr: 127.0.0.1:8848
        #命名空间ID
        namespace: ZHC_GROUP
        #账号
        username: nacos
        #密码
        password: nacos
        # 主配置 最大重试次数
        max-retry: 5
        # 主配置 配置监听长轮询超时时间
        config-long-poll-timeout: 46000
        # 主配置 重试时间
        config-retry-time: 2000
        # 主配置 开启注册监听器预加载配置服务(除非特殊业务需求,否则不推荐打开该参数)
        enable-remote-sync-config: true
        # 主配置 data-id
        name: zhc-system
        # 主配置 group-id
        group: ZHC_GROUP
        # 主配置 配置文件类型
        fileExtension: yaml
        # nacos默认远程优先,需要使用本地配置优先可以开启下边三条配置
#        override-none: true
#        allow-override: true
#        override-system-properties: false
  1. nacos配置

在ZHC_GROUP分组下创建

image.png

创建后配置zhc-system项目

image.png 日志打印这个说明读取nacos日志成功 image.png

上一篇 Spring Cloud Alibaba(一) 简介
下一篇 Spring Cloud Alibaba(一) 简介

作者:zhc
链接:juejin.cn/post/704731…
来源:稀土掘金