0


SpringCloud alibaba Nacos【服务配置中心】

文章目录

前置内容
1、SpringCloud Alibaba简介和Nacos【注册中心】

1、Nacos(下)

1.1、服务配置中心演示

1.1.1、基础配置

1. 建Module

  • Module的名称为cloudalibaba-config-nacos-client3377

2. 改POM

<dependencies><!--nacos-config--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--nacos-discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--web + actuator--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--一般基础配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>

3. 改YML

(1)、application.yaml

spring:profiles:active: dev

(2)、bootstrap.yaml

server:port:3377spring:application:name: nacos-config-client
  cloud:nacos:discovery:server-addr: localhost:8848#服务注册中心地址config:server-addr: localhost:8848#配置中心地址file-extension: yaml #指定yaml格式的配置
  • 配置bootstrap.yaml的原因:NacosSpringCloud-config一样,在项目初始化时候,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动,springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application

4. 主启动

importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication@EnableDiscoveryClientpublicclassNacosConfigClientMain3377{publicstaticvoidmain(String[] args){SpringApplication.run(NacosConfigClientMain3377.class,args);}}

5. 业务类

importorg.springframework.beans.factory.annotation.Value;importorg.springframework.cloud.context.config.annotation.RefreshScope;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;@RestController@RefreshScopepublicclassConfigClientController{@Value("${config.info}")privateString configInfo;@GetMapping("/config/info")publicStringgetConfigInfo(){return configInfo;}}
  • @RefreshScope实现动态刷新

6. 再Nacos添加配置信息

  • 配置信息中的DataId = ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
  1. prefix默认为spring.application.name的值
  2. spring.profile.active既为当前环境对应的profile,可以通过配置项spring.profile.active
  3. file-exetension为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension配置

在这里插入图片描述

7. 测试结果

(1)、直接测试

在这里插入图片描述


(2)、修改version后测试

在这里插入图片描述

8. 最后的包结构

在这里插入图片描述

1.1.2、分类配置

(1)、面临的问题

  • 实际的开发环境下,一个大型的分布式服务系统会有很多微服务子项目,每个微服务项目会有相应的开发环境、测试环境、预发环境、正式环境。我们需要对这些微服务配置进行有效的管理。

(2)、图形化管理界面

在这里插入图片描述

(3)、Namespace、Group和DataId三者的关系

在这里插入图片描述

  • 三者的关系类似于Java里面的package和类名。
  • 最外层的namespace是可以用于区分部署环境的,GroupDataId逻辑上区分两个目标对象。
  • Namespace的命名空间是publicNamespace主要用来实现隔离。
  • Group默认是DEFAULT_GROUPGroup可以把不同的微服务划分到同一个分组里面去。
  • Service就是微服务,一个Service可以包含多个Cluster(集群),Nacos默认ClusterDEFAULTCluster是对指定微服务的一个虚拟划分。
  • 最后的Instance,就是微服务的实例。

(4)、DataId方案

1. 添加配置信息

在这里插入图片描述

2. 在上面案例前提下修改application.yaml

spring:profiles:active: test
  #active: dev

3. 测试结果

在这里插入图片描述

(5)、Group方案

1. 添加新的配置信息

在这里插入图片描述


在这里插入图片描述

2. 修改两个yaml文件

在这里插入图片描述

(1)、bootstrap.yaml

server:port:3377spring:application:name: nacos-config-client
  cloud:nacos:discovery:server-addr: localhost:8848#服务注册中心地址config:server-addr: localhost:8848#配置中心地址file-extension: yaml #指定yaml格式的配置group: TEST_GROUP

# nacos-config-client-dev.yaml

(2)、application.yaml

spring:profiles:active: info
  #active: dev

3. 测试结果

在这里插入图片描述

(6)、Namespace方案

1. 添加新的配置信息

在这里插入图片描述

  • 配置内容
config:info: 0b13fe62-4a9c-4b8b-929a-168ff189a149,DEFAULT_GROUP,nacos-config-client-dev.yaml

2. 修改两个yaml文件

(1)、application.yaml

spring:profiles:# active: infoactive: dev

(2)、bootstrap.yaml

server:port:3377spring:application:name: nacos-config-client
  cloud:nacos:discovery:server-addr: localhost:8848#服务注册中心地址config:server-addr: localhost:8848#配置中心地址file-extension: yaml #指定yaml格式的配置group: DEFAULT_GROUP
        namespace: 0b13fe62-4a9c-4b8b-929a-168ff189a149

3. 测试结果

(1)、Group为DEV_GROUP时

在这里插入图片描述

(2)、Group为DEFAULT_GROUP时

在这里插入图片描述

1.2、集群和持久化配置

1.2.1、简介

1. 官网架构图

在这里插入图片描述

访问地址

2. 对官网架构图的说明

在这里插入图片描述

  • 官网架构图中的VIP是虚拟IP的集群,也就是所谓的NGINX集群。

1.2.2、持久化配置解释

  • 每一个Nacos都有一个默认的数据库derby。但是如果我们搭建Nacos集群的话,那么这样会导致数据不一致的问题。所以我们需要将数据库从derby转换为MySQL

配置步骤

1. 找到如图所示目录的sql文件

在这里插入图片描述

  • 将其放置到我们对应的MySQL的数据库中执行。

2. 修改application.properties文件

在这里插入图片描述

  • 添加的内容
spring.datasource.platform=mysql
 
db.num=1
db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos_devtest
db.password=youdontknow
  • 到这一步那么就配置完成了。

1.2.3、Linux版Nacos + MySQL生产环境配置

(1)、配置前说明

下载地址

  • 预计需要,1nginx+3nacos注册中心+1mysql
  • 下载nacos-server-1.1.4.tar.gz解压并安装

(2)、配置步骤

1. Linux服务器上mysql数据库配置

nacos.mysql.sql

文件在

mysql

上执行。

  • 执行后结果

在这里插入图片描述

2. 修改application.properties文件

  • 我们首先需要对application.properties.example拷贝一份重命名为application.properties。然后对application.properties进行修改。
spring.datasource.platform=mysql
 
db.num=1
db.url.0=jdbc:mysql://192.168.123.129:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

3. Linux服务器上nacos的集群配置cluster.conf

  • 我们首先需要对cluster.conf.example拷贝一份重命名为cluster.conf。然后对cluster.conf进行修改。
192.168.123.129: 3333
192.168.123.129: 4444
192.168.123.129: 5555
  • 这个IP不能写127.0.0.1,必须是Linux命令hostname -i能够识别的IP

4.编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端

while getopts ":m:f:s:" opt
do
    case $opt in
        m)
            MODE=$OPTARG;;
        f)
            FUNCTION_MODE=$OPTARG;;
        s)
            SERVER=$OPTARG;;
        p)
            PORT=$OPTARG;;
        ?)echo"Unknown parameter"exit 1;;
    esac
done
# startecho"$JAVA ${JAVA_OPT}" > ${BASE_DIR}/logs/start.out 2>&1 &
nohup $JAVA Dserver.port=${port} ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 &
echo"nacos is starting,you can check the ${BASE_DIR}/logs/start.out"

启动方式

./startup.sh -p 端口号

5.Nginx的配置,由它作为负载均衡器

  • 修改nginx.conf
upstream cluster{                                                        
 
    server 127.0.0.1:3333;
    server 127.0.0.1:4444;
    server 127.0.0.1:5555;}

server{
                          
    listen 1111;
     server_name localhost;
     location /{
          proxy_pass http://cluster;}}
# 启动nginx./nginx -c /usr/local/nginx/conf/nginx.conf

6. 修改服务提供者的yaml文件及测试

server-addr:  写你自己的虚拟机ip:1111
  • 启动后

在这里插入图片描述

7. 小结

在这里插入图片描述


本文转载自: https://blog.csdn.net/weixin_56727438/article/details/122571753
版权归原作者 崇尚学技术的科班人 所有, 如有侵权,请联系我们删除。

“SpringCloud alibaba Nacos【服务配置中心】”的评论:

还没有评论