文章目录

  • 一、安装nacos
    • 1.docker-compose.yml
    • 2.nacos数据库表结构
    • 3.docker-compose 构建运行
    • 4.检查nacos日志
    • 6.测试访问:
    • TODO:
  • 二、nacos为注册中心:项目测试
    • 1.新建maven项目:
    • 2.配置pom.xml
    • 3.配置application.properties
    • 4.激活服务发现客户端
    • 5.编写controller
    • 6.增加远程调用配置
    • 7.启动后查看nacos网页端
    • 8.访问地址
    • 9.测试消费端负载均衡
  • 三.nacos配置中心和注册中心:项目测试
    • 1.新建maven项目
    • 2.配置子项目pom.xml
    • 3.配置bootstrap.properties文件
    • 4.激活服务发现客户端
    • 5.编写controller
    • 6.编写bean,获取远程配置
    • 7.在nacos服务端上增加配置
    • 8.启动config项目
    • 9.访问controller
  • 四、整合gateway网关
    • 1.添加依赖
    • 2.编写配置文件
    • 3.启动项目
    • 4.如何测试网关是否拦截了目标服务器请求

一、安装nacos

安装文档:https://mrbird.cc/Spring-Cloud-Alibaba-Nacos%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83.html

docker-compose安装nacos

创建文件夹:/opt/docker-file/nacos

1.docker-compose.yml

version: "3"services:nacos:image: nacos/nacos-server:v2.1.0container_name: nacosenvironment:# 支持主机名可以使用hostname,否则使用ip,默认ip- PREFER_HOST_MODE=ip# 单机模式- MODE=standalone# 数据源平台 支持mysql或不保存empty- SPRING_DATASOURCE_PLATFORM=mysql# mysql配置,!!!attention必须是mysql所在主机IP#- MYSQL_SERVICE_HOST=192.168.0.123#- MYSQL_SERVICE_PORT=3306#- MYSQL_SERVICE_USER=root#- MYSQL_SERVICE_PASSWORD=123456#- MYSQL_SERVICE_DB_NAME=nacosvolumes:- ./logs:/home/nacos/logs- ./conf:/home/nacos/confports:- 8848:8848 restart: always

创建log日志目录及配置文件目录:

mkdir -p /opt/docker-file/nacos/logsmkdir -p /opt/docker-file/nacos/conf

将application.properties文件复制到/opt/docker-file/nacos/conf目录下

server.servlet.contextPath=/nacosserver.port=8848spring.datasource.platform=mysql# 数据库数量db.num=1db.url.0=jdbc:mysql://192.168.229.199:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTCdb.user=root2db.password=123456

2.nacos数据库表结构

/* * Copyright 1999-2018 Alibaba Group Holding Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *//******************************************//* 数据库全名 = nacos_config *//* 表名称 = config_info *//******************************************/CREATE TABLE `config_info` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` VARCHAR(255) NOT NULL COMMENT 'data_id',`group_id` VARCHAR(255) DEFAULT NULL,`content` LONGTEXT NOT NULL COMMENT 'content',`md5` VARCHAR(32) DEFAULT NULL COMMENT 'md5',`gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`src_user` TEXT COMMENT 'source user',`src_ip` VARCHAR(50) DEFAULT NULL COMMENT 'source ip',`app_name` VARCHAR(128) DEFAULT NULL,`tenant_id` VARCHAR(128) DEFAULT '' COMMENT '租户字段',`c_desc` VARCHAR(256) DEFAULT NULL,`c_use` VARCHAR(64) DEFAULT NULL,`effect` VARCHAR(64) DEFAULT NULL,`type` VARCHAR(64) DEFAULT NULL,`c_schema` TEXT,`encrypted_data_key` TEXT NOT NULL COMMENT '秘钥',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';/******************************************//* 数据库全名 = nacos_config *//* 表名称 = config_info_aggr *//******************************************/CREATE TABLE `config_info_aggr` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` VARCHAR(255) NOT NULL COMMENT 'data_id',`group_id` VARCHAR(255) NOT NULL COMMENT 'group_id',`datum_id` VARCHAR(255) NOT NULL COMMENT 'datum_id',`content` LONGTEXT NOT NULL COMMENT '内容',`gmt_modified` DATETIME NOT NULL COMMENT '修改时间',`app_name` VARCHAR(128) DEFAULT NULL,`tenant_id` VARCHAR(128) DEFAULT '' COMMENT '租户字段',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';/******************************************//* 数据库全名 = nacos_config *//* 表名称 = config_info_beta *//******************************************/CREATE TABLE `config_info_beta` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` VARCHAR(255) NOT NULL COMMENT 'data_id',`group_id` VARCHAR(128) NOT NULL COMMENT 'group_id',`app_name` VARCHAR(128) DEFAULT NULL COMMENT 'app_name',`content` LONGTEXT NOT NULL COMMENT 'content',`beta_ips` VARCHAR(1024) DEFAULT NULL COMMENT 'betaIps',`md5` VARCHAR(32) DEFAULT NULL COMMENT 'md5',`gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`src_user` TEXT COMMENT 'source user',`src_ip` VARCHAR(50) DEFAULT NULL COMMENT 'source ip',`tenant_id` VARCHAR(128) DEFAULT '' COMMENT '租户字段',`encrypted_data_key` TEXT NOT NULL COMMENT '秘钥',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';/******************************************//* 数据库全名 = nacos_config *//* 表名称 = config_info_tag *//******************************************/CREATE TABLE `config_info_tag` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` VARCHAR(255) NOT NULL COMMENT 'data_id',`group_id` VARCHAR(128) NOT NULL COMMENT 'group_id',`tenant_id` VARCHAR(128) DEFAULT '' COMMENT 'tenant_id',`tag_id` VARCHAR(128) NOT NULL COMMENT 'tag_id',`app_name` VARCHAR(128) DEFAULT NULL COMMENT 'app_name',`content` LONGTEXT NOT NULL COMMENT 'content',`md5` VARCHAR(32) DEFAULT NULL COMMENT 'md5',`gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`src_user` TEXT COMMENT 'source user',`src_ip` VARCHAR(50) DEFAULT NULL COMMENT 'source ip',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';/******************************************//* 数据库全名 = nacos_config *//* 表名称 = config_tags_relation *//******************************************/CREATE TABLE `config_tags_relation` (`id` BIGINT(20) NOT NULL COMMENT 'id',`tag_name` VARCHAR(128) NOT NULL COMMENT 'tag_name',`tag_type` VARCHAR(64) DEFAULT NULL COMMENT 'tag_type',`data_id` VARCHAR(255) NOT NULL COMMENT 'data_id',`group_id` VARCHAR(128) NOT NULL COMMENT 'group_id',`tenant_id` VARCHAR(128) DEFAULT '' COMMENT 'tenant_id',`nid` BIGINT(20) NOT NULL AUTO_INCREMENT,PRIMARY KEY (`nid`),UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),KEY `idx_tenant_id` (`tenant_id`)) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';/******************************************//* 数据库全名 = nacos_config *//* 表名称 = group_capacity *//******************************************/CREATE TABLE `group_capacity` (`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',`group_id` VARCHAR(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',`quota` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',`usage` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '使用量',`max_size` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',`max_aggr_count` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',`max_aggr_size` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',`max_history_count` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',`gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_group_id` (`group_id`)) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';/******************************************//* 数据库全名 = nacos_config *//* 表名称 = his_config_info *//******************************************/CREATE TABLE `his_config_info` (`id` BIGINT(64) UNSIGNED NOT NULL,`nid` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,`data_id` VARCHAR(255) NOT NULL,`group_id` VARCHAR(128) NOT NULL,`app_name` VARCHAR(128) DEFAULT NULL COMMENT 'app_name',`content` LONGTEXT NOT NULL,`md5` VARCHAR(32) DEFAULT NULL,`gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,`gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,`src_user` TEXT,`src_ip` VARCHAR(50) DEFAULT NULL,`op_type` CHAR(10) DEFAULT NULL,`tenant_id` VARCHAR(128) DEFAULT '' COMMENT '租户字段',`encrypted_data_key` TEXT NOT NULL COMMENT '秘钥',PRIMARY KEY (`nid`),KEY `idx_gmt_create` (`gmt_create`),KEY `idx_gmt_modified` (`gmt_modified`),KEY `idx_did` (`data_id`)) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';/******************************************//* 数据库全名 = nacos_config *//* 表名称 = tenant_capacity *//******************************************/CREATE TABLE `tenant_capacity` (`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',`tenant_id` VARCHAR(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',`quota` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',`usage` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '使用量',`max_size` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',`max_aggr_count` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',`max_aggr_size` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',`max_history_count` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',`gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_tenant_id` (`tenant_id`)) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';CREATE TABLE `tenant_info` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`kp` VARCHAR(128) NOT NULL COMMENT 'kp',`tenant_id` VARCHAR(128) DEFAULT '' COMMENT 'tenant_id',`tenant_name` VARCHAR(128) DEFAULT '' COMMENT 'tenant_name',`tenant_desc` VARCHAR(256) DEFAULT NULL COMMENT 'tenant_desc',`create_source` VARCHAR(32) DEFAULT NULL COMMENT 'create_source',`gmt_create` BIGINT(20) NOT NULL COMMENT '创建时间',`gmt_modified` BIGINT(20) NOT NULL COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),KEY `idx_tenant_id` (`tenant_id`)) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';CREATE TABLE `users` (`username` VARCHAR(50) NOT NULL PRIMARY KEY,`password` VARCHAR(500) NOT NULL,`enabled` BOOLEAN NOT NULL);CREATE TABLE `roles` (`username` VARCHAR(50) NOT NULL,`role` VARCHAR(50) NOT NULL,UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE);CREATE TABLE `permissions` (`role` VARCHAR(50) NOT NULL,`resource` VARCHAR(255) NOT NULL,`action` VARCHAR(8) NOT NULL,UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE);INSERT INTO users (username, PASSWORD, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

3.docker-compose 构建运行

[root@localhost nacos]# docker-compose up -d[+] Running 1/1 ⠿ Container nacosStarted 

4.检查nacos日志

docker logs -f nacos

需要在conf目录准备log文件:nacos-logback.xml

<configuration debug="false" scan="true" scanPeriod="1 seconds"><contextName>logback</contextName><property name="log.path" value="/home/nacos/logs/logback.log" /><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><!--  --><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>ERROR</level></filter><encoder><pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender> <appender name="file"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern></rollingPolicy> <encoder><pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n</pattern></encoder></appender> <root level="debug"><appender-ref ref="console" /><appender-ref ref="file" /></root> <logger name="com.example.logback" level="warn" /> </configuration>

继续查看nacos错误日志

如连接不上数据库,就是数据库账号密码没有配对。

6.测试访问:

地址:192.168.229.199:49155/nacos/#/login
账号:nacos
密码:nacos

TODO:

打包成新的镜像放在本地仓库,下次可以直接用

二、nacos为注册中心:项目测试

nacos与springcloud与springcloudalibaba版本对照

nacos版本:v2.1.0
springboot版本:

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.8.RELEASE</version><relativePath/> </parent>

springcloudalibaba与springcloud版本:

<properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.RELEASE</spring-cloud.version><com-alibaba-cloud.version>2.1.0.RELEASE</com-alibaba-cloud.version></properties>

1.新建maven项目:


父:spring-cloud-alibaba-nacos-register
子:consumer,provider

2.配置pom.xml

spring-cloud-alibaba-nacos-register

<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>cc.mrbird</groupId><artifactId>spring-cloud-alibaba-nacos-register</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>provider</module><module>consumer</module></modules><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.8.RELEASE</version><relativePath/> </parent><properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.RELEASE</spring-cloud.version><com-alibaba-cloud.version>2.1.0.RELEASE</com-alibaba-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-nacos-discovery</artifactId></dependency></dependencies><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>${com-alibaba-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement></project>

provider

<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.0</modelVersion><parent><groupId>cc.mrbird</groupId><artifactId>spring-cloud-alibaba-nacos-register</artifactId><version>1.0-SNAPSHOT</version><relativePath>../pom.xml</relativePath></parent><artifactId>provider</artifactId><name>provider</name><description>服务提供端</description><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

consumer

<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.0</modelVersion><parent><groupId>cc.mrbird</groupId><artifactId>spring-cloud-alibaba-nacos-register</artifactId><version>1.0-SNAPSHOT</version><relativePath>../pom.xml</relativePath></parent><artifactId>consumer</artifactId><name>consumer</name><description>服务消费端</description><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

3.配置application.properties

provider

server.port=8001spring.application.name=nacos-producerspring.cloud.nacos.discovery.server-addr=192.168.229.199:8848management.endpoints.web.exposure.include=*

comsumer

server.port=8002spring.application.name=nacos-consumerspring.cloud.nacos.discovery.server-addr=192.168.229.199:8848management.endpoints.web.exposure.include=*

4.激活服务发现客户端

启动类加注解@EnableDiscoveryClient

5.编写controller

provider

package cc.mrbird.provider.controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("provide")public class HelloController {@GetMapping("{message}")public String hello(@PathVariable String message) {return String.format("hello %s", message);}}

consumer

package cc.mrbird.consumer.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.cloud.client.ServiceInstance;import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate;@RestController@RequestMapping("consume")public class ConsumeController {@Autowiredprivate LoadBalancerClient loadBalancerClient;@Autowiredprivate RestTemplate restTemplate;@GetMapping("hello/{message}")public String hello(@PathVariable String message) {ServiceInstance serviceInstance = loadBalancerClient.choose("nacos-producer");String path = String.format("http://%s:%s/provide/%s", serviceInstance.getHost(), serviceInstance.getPort(), message);String result = restTemplate.getForObject(path, String.class);return String.format("%s from %s %s", result, serviceInstance.getHost(), serviceInstance.getPort());}}

6.增加远程调用配置

consumer

package cc.mrbird.consumer.configure;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.client.RestTemplate;@Configurationpublic class ConsumerConfigure {@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}}

7.启动后查看nacos网页端

http://192.168.229.199:8848/nacos/#/serviceManagement
如图:

8.访问地址

服务提供者:localhost:8001/provide/nacos
服务消费者:localhost:8002/consume/hello/nacos

9.测试消费端负载均衡

启动两个provider:
localhost:8001/provide/nacos
localhost:8009/provide/nacos


三.nacos配置中心和注册中心:项目测试

java项目如果启动了配置中心,在项目不重启的情况下,可以远程动态的修改配置信息

1.新建maven项目

在spring-cloud-alibaba-nacos-register项目下新建子项目config

2.配置子项目pom.xml

<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>spring-cloud-alibaba-nacos-register</artifactId><groupId>cc.mrbird</groupId><version>1.0-SNAPSHOT</version><relativePath>../pom.xml</relativePath></parent><modelVersion>4.0.0</modelVersion><artifactId>config</artifactId><description>配置服务</description><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-nacos-config</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

3.配置bootstrap.properties文件

必须是bootstrap.properties文件,不然加载不到

server.port=8102spring.cloud.nacos.config.server-addr=192.168.229.199:8848#spring.cloud.nacos.config.file-extension=propertiesspring.application.name=nacos-config-examplespring.cloud.nacos.discovery.server-addr=192.168.229.199:8848management.endpoints.web.exposure.include=*

4.激活服务发现客户端

package cc.mrbird.config;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.context.properties.EnableConfigurationProperties;@SpringBootApplication@EnableConfigurationPropertiespublic class ConfigApplication {public static void main(String[] args) {SpringApplication.run(ConfigApplication.class, args);}}

5.编写controller

package cc.mrbird.config.controller;import cc.mrbird.config.config.UserConfig;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("config")public class Controller {@Autowiredprivate UserConfig userConfig;@GetMapping("hello/{message}")public String sayHello(@PathVariable String message) {return this.userConfig.getUsername() + message + ";" + this.userConfig.getAge();}}

6.编写bean,获取远程配置

package cc.mrbird.config.config;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.context.properties.EnableConfigurationProperties;import org.springframework.context.annotation.Configuration;import org.springframework.stereotype.Component;@ConfigurationProperties(prefix = "user")//@Component@Configuration@Datapublic class UserConfig {private String username;private int age;}

7.在nacos服务端上增加配置

注意dataId的命名方式

8.启动config项目

没有报错,说明配置没有问题

9.访问controller

localhost:8102/config/hello/nacos

修改nacos服务端配置后再次访问:成功

四、整合gateway网关

1.添加依赖

注释web依赖<!----><!--org.springframework.boot--><!--spring-boot-starter-web--><!----><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></exclusion></exclusions></dependency>

2.编写配置文件

spring:gateway:routes:- id: gateway-test# 访问http://localhost:8801/gateway-test/test/index,会跳转到访问到 http://localhost:8802/gateway-test/test/index地址uri: lb://gateway-testorder: 0predicates:- Path=/gateway-test/**filters:- StripPrefix=1management:endpoints:web:exposure:include: '*'

3.启动项目

4.如何测试网关是否拦截了目标服务器请求