栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springcloud alibaba实战(一)----整合nacos(注册中心、配置中心)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springcloud alibaba实战(一)----整合nacos(注册中心、配置中心)

一、注册中心

注册中心请求原理图:

说明: 看上图就知道注册中心其实还是依赖于第三者nacos-server来进行各大服务的注册及负载均衡的,那实战中,那肯定是需要在微服务中集成nacos配置,并且启动nacos-server服务。

1、启动nacos-server
本次启动nacos-server采用docker启动,偷点懒哈。
找一下docker镜像: `

docker search nacos-server` 


下载镜像:

`docker pull nacos/nacos-server`

启动服务:

docker run --name nacos -d -p 8848:8848 --privileged=true -e MODE=standalone -e PREFER_HOST_MODE=hostname -v /home/nacos/logs:/home/nacos/logs  nacos/nacos-server:latest 


注意: 服务端口记得开,这里就省略。

登录nacos-server管理页面
http://xx.xx.xx.xx:8848/nacos
默认用户账号密码: nacos/nacos

2、集成nacos
本次在springboot、maven环境下引入nacos的依赖jar
在父模块pom.xml中引入以下:


    
        UTF-8
        1.7
        1.7
        2.2.6.RELEASE
        2.2.6.RELEASE
        1.2.58
    

    
    
        org.springframework.boot
        spring-boot-starter-parent
        2.2.6.RELEASE
    


    
    
        
            
            
            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring.cloud.alibaba.version}
                pom
                import
            

            
                org.springframework.boot
                spring-boot-starter
                ${spring-boot.version}
                
                    
                        org.springframework.boot
                        spring-boot-starter-logging
                    
                
            
            
                junit
                junit
                4.11
                test
            

        
    

子模块atom-user的pom.xml文件中加入


        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        

        
        
            org.springframework.boot
            spring-boot-dependencies
            2.2.6.RELEASE
            pom
            import
        

        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter
        

        
        
            org.springframework.boot
            spring-boot-starter-log4j2
            
                
                    org.slf4j
                    slf4j-log4j12
                
            
        
        
            com.lmax
            disruptor
            ${disruptor.version}
        
        
            org.slf4j
            log4j-over-slf4j
            ${log4j-over-slf4j.version}
        

        
        
            com.alibaba
            fastjson
            ${fastjson.version}
        

        
        
            org.apache.httpcomponents
            httpclient
            ${httpclient.version}
        
        
            org.apache.httpcomponents
            httpcore
            ${httpcore.version}
        

        
            junit
            junit
            4.11
            test
        
    

在application.yml中加入项目应用名和注册中心地址就可以了

注册服务名:spring.application.name
注册中心地址:spring.cloud.nacos.discovery.server-addr

server:
  port: 8081
  servlet:
    context-path: /atom-user
  tomcat:
    uri-encoding: UTF-8

spring:
  application:
    name: nacos-provider-atom-user
  jackson:
    time-zone: GMT+8
    date-format:  yyyy-MM-dd HH:mm:ss
    http:
      encoding:
        force: true
        charset: UTF-8
        enabled: true
    #出现错误时, 直接抛出异常
    mvc:
      throw-exception-if-no-handler-found:  true
    resources:
      add-mappings: false
  cloud:
    nacos:
      discovery:
        server-addr: 8.129.236.49:8848

通过 Spring Cloud 原生注解 @EnableDiscoveryClient 开启服务注册发现功能:

启动该服务

已经成功注册进来了

二、配置中心

说明: 配置中心的原理其实就是把公共配置进行集中缓存处理,集中管理更新等。本次在atom-api服务中引入配置中心。

要使用nacos的配置中心需要引入


    com.alibaba.cloud
    spring-cloud-starter-alibaba-nacos-config
    ${latest.version}

在 bootstrap.properties 中配置 Nacos server 的地址和应用名

spring.cloud.nacos.config.server-addr=127.0.0.1:8848

spring.application.name=example

**说明:**之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId字段的一部分。

在 Nacos Spring Cloud 中,dataId 的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}

prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 p r e f i x . {prefix}. prefix.{file-extension}
file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

注意了,接下来有个坑
一定要在bootstrap.yml或bootstrap.properties中添加配置, 不能配置在application.yml中,不然会加载不到配置

原因为:springboot的加载顺序为bootstrap.properties>bootstrap.yml>application.properties>application.yml

通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新:

然后再nacos-server后台系统中添加配置:

注意:nacos配置中心默认加载的是spring.application.name.properties , 如果需要改变则指定后缀

启动atom-api服务

说明配置中心已集成。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/336514.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号