apollo修改配置刷新bean_基于Nacos的服务治理、配置中心

01311abb89716dd81e3ba7d9ca73337e.gif

4a7d767b278011dd31861292277a7542.png

Nacos集群环境的搭建

参看《基于Docker搭建Nacos集群》:https://lupf.cn/articles/2020/05/21/1590058654840.html ;亦或者通过官方提供的其他方式安装,详情参考:https://nacos.io/zh-cn/docs/quick-start.html

Nacos作为配置中心
  • apollo配置中心 整理Nacos的服务治理,顺带着整理一下Nacos的配置中心;目前实际的生产使用的是Apollo;个人相比较更加喜欢Apollo一点,如果想了解Apollo的使用可参考:《SpringBoot集成Apollo配置中心(5分钟集成系列)》https://lupf.cn/articles/2019/11/19/1574169822114.html

  • 创建一个基础的SpringCloud项目,并添加一下配置

    <properties>

    9a12dc895af17c405ad80b6ed9b8aff4.png

  • Nacos配置

    • dataId,用于匹配nacos中对应的配置文件 : 默认规则 ${spring.application.name}-${spring.profiles.active}.${file-extension} 如: nacos-provider-dev.yml ,如果没有环境区分就是nacos-provider.yml ;dataId允许根据自己的要求进行配置,具体如下

      # 规则: ${prefix}-${spring.profiles.active}-${spring.profiles.active}.${file-extension}
    • group: 用于对配置文件进行分组

    • Nacos配置文件的命名规则

    • 添加nacos-provider.yml

      server:

      04fe2e7672462835bed77f3933de94e8.png

    • 添加nacos-consumer.yml

      server:

      b8349af7f80a8b40e7f9055688e03d71.png999d175251e3a787dc93f9980866c189.png

    • 将启动文件application.yml修改为bootstrap.yml 并添加一下配置

      spring:
    • 启动项目

      // 
    • 添加配置文件获取的工具类 RemoteConfig // @RefreshScope 为自动刷新配置

      @Data
    • 添加测试使用的NacosConfigController

      @RestController
    • 测试获取及自动刷新

      127.0.

      8b531627ab3c0784b7fb7ef1445db497.png

      // 

      4f2cb357e5af9144f121c78a0bf83206.png

服务治理
RestFul API
  • provider就使用上面 echo/conf接口作为测试接口

    • 添加命名空间57da0004d526cc9191795a14931b97be.png

    • 配置将服务发布到指定命名空间

      spring:

      c5dd8e20e30958a165c9963b49239c48.png

    • provider和consumer添加配置文件

      spring:
    • provider和consumer启动类添加以下注解

      @EnableDiscoveryClient
    • consumer实例化RestTemplate

      @LoadBalanced
    • 测试RestFulController

      @RestController
    • 启动服务,nacos中可以看到如下的服务1a4846a20b42be2b51cd9b7f151ee2a8.png

    • 测试

      //127.0.0.1:9113/rest/conf

      4c549e9ee3380a616d11ac2c163603ec.png

    • 服务的命名空间 当不同的环境需要进行区分的时候,如开发环境、测试环境、正式环境;那么这些环境下的服务可能是有区别且不能穿插调用,因此我们就可以通过命名空间各个服务进行隔离;

整合feign的服务治理
  • nacos-api添加fiegn的请求及响应对象已经对应的service

    @Data
    • provider和consumer模块添加api模块

      <dependency>
    • provider和consumer添加以下注解,开启feign

      "com.lupf.*")
    • provider实现FeignService

      @Service
    • provider添加对外暴露的controller;注意,路径、参数需要和FeignService配置的路径一致

      @RestController
    • consumer的调用FeignController

      @RestController
    • 测试

      //127.0.0.1:9113/feign/hello

      3cbf4e3025dcb3147490e999b6bf6e87.png

dubbo服务的治理
  • 添加dubbo的引用

    <spring-cloud-starter-dubbo.version>2.1.1.RELEASE
  • nacos的nacos-provider.yml和nacos-consumer.yml添加一下配置

    dubbo:

    dubbo.scan.base-packages 为你的包路径

  • provider添加Dubbo的具体实现

    // 注意,这里的Service为:org.apache.dubbo.config.annotation.Service 不是Spring的service
  • consumer创建测试DubboController

    @RestController

    bb32181cf504667cfffe9d091e86b518.png

  • 测试

    //127.0.0.1:9113/dubbo/hello

    af59c835139105da41b2e835cb1093ca.png

sleuth链路追踪
  • 引入sleuth依赖

    <spring-cloud-starter-sleuth.version>2.1.0.RELEASE
  • 请求测试e5071fb94664fc7cb8cc16016fc93086.png51ec181ce7b74aec2f25964116d2f82b.png

dubbo的链路追踪
  • 添加一个dubbo zipkin的依赖

    • 2.7.0之前的版本

      <brave-instrumentation-dubbo-rpc.version>5.10.0
    • 大于等于 2.7.0之前的版本

      <brave-instrumentation-dubbo.version>5.10.0

      1b52db49f661d2475126fdfb4261358b.png

Nacos常见问题
导致log4j2不打印日志日志的问题
  • 错误描述

    default ERROR-level Root logger 
  • 解决方式,启动类添加配置

    public static void main(String[] args) {
Nacos频繁的心跳日志

服务频繁的心跳导致较多无效的日志输出

  • 提升nacos的日志级别,使其不输出

    logging.level.com.alibaba.nacos.client.naming=error

7044e309e15ba1cccadd162c4e8d065e.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值