一、springCloudAlibaba基础篇(nacos注册中心与配置中心)

一、springCloudAlibaba基础篇(nacos注册中心、配置中心)
1、Nacos环境准备
2、IDEA搭建项目
2.1 父类项目
2.2 创建子项目
2.3 查看是否注册成功
2.4 启动方式调整
3、配置中心
3.1 新增依赖和配置文件调整
3.2 编写Controller
3.3 nacos编写配置文件


1、Nacos环境准备
步骤1:进入 NACOS官网,官方推荐使用2.0.3版本,下载后解压
步骤2:连接数据库,创建任意名称数据库,并导入nacos目录中的nacos-mysql.sql文件
步骤3:修改nacos目录中application.propertie配置文件,将数据库链接指向自己的环境,下图是配置文件中要修改位置

### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url=jdbc:mysql://127.0.0.1:13306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=123456


在这里插入图片描述

 

步骤4:进入nacos的bin文件夹,执行cmd命令startup.cmd -m standalone,其中-m standalone指定为单机模式,否则以cluster集群模式启动,启动会报错的。启动命令目录里不要有中文字符,有可能启动失败,写这篇文章时刚好遇到了
步骤5:根据给定的地址,输入网址,用户密码都是nacos。登录进去的页面下面在讲解。在这里插入图片描述
2、IDEA搭建项目
2.1 父类项目
因为微服务是将一个项目,根据功能拆分成一个个单独的小应用,为了防止不同应用间出现错误,我们会创建一个父工程,统一管理一些操作,如依赖版本。下图是一个完整的pom.xml,可以自己先创建一个maven工程,然后直接替换掉内容。尽可能保证版本一致,之前用Hoxton.SR10其他版本出现,导致子项目的远程调用报错问题。↓当前项目结构↓

 在这里插入图片描述

<?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">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.xp</groupId>
    <artifactId>springcloud_demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <!-- 版本定义 -->
    <properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-cloud.version>Hoxton.SR10</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.5.RELEASE</spring-cloud-alibaba.version>
        <spring-boot.version>2.2.5.RELEASE</spring-boot.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <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>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>


2.2 创建子项目
只需三步,添加依赖,编写配置文件,启动类添加注解在这里插入图片描述

<?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_demo</artifactId>
        <groupId>com.xp</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

 

    <modelVersion>4.0.0</modelVersion>
    <artifactId>provider01</artifactId>
    <groupId>com.xp</groupId>
    <version>0.0.1-SNAPSHOT</version>
    <name>provider01</name>

    <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-discovery</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

server:
  port: 8101
spring:
  application:
    # 这里不要写下划线,否则后面用openFegin远程调用时,不支持下划线
    name: provider-01
  cloud:
    nacos:
      discovery:
        server-addr: http://localhost:8848
@SpringBootApplication
@EnableDiscoveryClient // 将自己注册到nacos注册中心
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

/** 随便写的Controller,测试是否调用正常 */
@RestController
@RequestMapping("/info")
public class InfoController {
    @Value("${server.port}")
    private String port;
    @RequestMapping("/")
    public String getPort(){
        return port;
    }
}


2.3 查看是否注册成功
我这里面因为起了两个项目,而且是同名的,所以显示实例数2。
后期会根据服务名称远程调用,同一名称的会被认为是同一类型服务,所以名称一样是正常的。调用时会根据名称找到真实IP,使用负载均衡算法来调用

在这里插入图片描述在这里插入图片描述2.4 启动方式调整
可以在启动类出添加 -Dserver.port=xxxx来调整端口号,方便单项目多端口注册到nacos里

在这里插入图片描述

3、配置中心
3.1 新增依赖和配置文件调整
细心的小伙伴应该发现了,我的配置文件用的是bootstrap.yml而非application.yml,写文章时我尝试用application.yml就没获取到nacos配置的值,此处和配置文件加载顺序有关,以后再写,大家出现同样问题改一下就好

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
server:
  port: 8101
spring:
  application:
    # 这里不要写下划线,否则用openFegin远程调用不支持下划线
    name: provider-01
  cloud:
    nacos:
      discovery:
        server-addr: http://localhost:8848
      config:
        server-addr: http://localhost:8848  #地址
        file-extension: yaml  # 指定格式yaml
        group: DEFAULT_GROUP  # 缺省即可
        prefix: ${spring.application.name} # 缺省即可

test:
  value: 123456 #自定义普通参数


3.2 编写Controller
此时访问localhost:8101/msg,页面会输出"8101:123456"的字样

@RestController
@RequestMapping("/info")
@RefreshScope //动态刷新注解
public class InfoController {
    @Value("${server.port}")
    private String port;
    @Value("${test.value}")
    private String val;

    @RequestMapping("")
    public String getPort(){
        return port;
    }
    @RequestMapping("/msg")
    public String getMsg(){
        return port + ":" + val;
    }
}


3.3 nacos编写配置文件
DATA-ID : 格式要求 {prefix}-{spring.profiles.active}.${file-extension}
${prefix} : 当前项目名称,也就是配置文件中spring.application.name的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置
${spring.profiles.active}:使用的环境,没有的话可以不配置,我下图中就没有配置
${file-extension}:配置文件的类型,默认properties,可以通过如下方式替换spring.cloud.nacos.config.file-extension= yaml

Group:分组,默认值DEFAULT_GROUP,也可以通过配置项 spring.cloud.nacos.config.group修改

此时访问localhost:8101/msg,页面会输出"8101:彼岸花"的字样。实现了动态修改配置文件

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值