欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

spring-cloud配置文件随笔

程序员文章站 2022-03-26 11:41:22
在我多年工作经验中,接触到的很多分布式项目都将开发引入了无底的深渊,因为痛苦的经历太多,所以在我成为一名架构,搭建分布式架构时,我努力避开那些深渊,使团队中的业务开发人员不至于掐死我。从前年时,我开时接触微服务架构(主要是spring-cloud技术栈),综观网上流行的一些开源项目,或者有些开发者搭建微服务平台,感觉他们太过把微服务当微服务了,以至于根本就无法分模块开发。主要原因是搭建者不了解spring-cloud框架,或者经验不足,不明白开发环境与测试环境(或正式环境)解耦的重要性。我本人主张轻便开发...

在我多年工作经验中,接触到的很多分布式项目都将开发引入了无底的深渊,因为痛苦的经历太多,所以在我成为一名架构,搭建分布式架构时,我努力避开那些深渊,使团队中的业务开发人员不至于掐死我。
从前年时,我开时接触微服务架构(主要是spring-cloud技术栈),综观网上流行的一些开源项目,或者有些开发者搭建微服务平台,感觉他们太过把微服务当微服务了,以至于根本就无法分模块开发。主要原因是搭建者不了解spring-cloud框架,或者经验不足,不明白开发环境与测试环境(或正式环境)解耦的重要性。我本人主张轻便开发,我尽量让我的团队在开发时关注业务,而不要时时刻刻关注微服务中的其它组件。

运行时,我们的服务会连接配置中心以及注册中心。但在开发环境,如果开发人员共用注册中心或配置中心肯定会产生很多问题。而让业务开发人员在本地架设配置中心和注册中心会增加学习成本,浪费开发的硬件资源(同时在本地启动多个组件,会占用更多的cup和内存)。通过简单的配置,可暂停服务注册与配置读取。以下是我的配置文件列表:

application-dev.yml 
application-info.yml
application.yml     
bootstrap-dev.yml   
bootstrap-docker.yml
bootstrap-pro.yml    
bootstrap-test.yml  
bootstrap.yml

可以看出,我共用了四种开发环境,其中bootstrap-docker.yml是我运行在k8s中的测试配置。以下是我bootstrap-dev.yml(开发环境),以及bootstrap-test.yml(正式环境配置的内容)

开发环境:bootstrap-dev.yml


spring:
  profiles: dev
  cloud:
    config:
      enabled: false  
      allow-override: true
      discovery:
        enabled: false 
    bus:
      enabled: false 
    consul:
      discovery:
        enabled: false 
        register: false
      config:
        enabled: false 
      enabled: false


server:
  port: 8080
  servlet:
    context-path: /${spring.application.name}

注意上面enable我都设为false,这样就可以读取本地配置,以及取消服务发现功能。

测试环境 bootstrap-test.yml:

spring:
  profiles:
    include: info
  cloud:
    consul:
      discovery:
        instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
        tags: tms,pda,profiles=${spring.profiles.active},buildtime=${info.app.buildtime}
      config:
        format: YAML
        data-key: data

server:
  port: 8081
management:
  endpoint:
    health:
      show-details: always

测试环境没有那些enable配置,因为默认情况下都为true

配置中心,及注册中心用的是consul,如果instance-id按官网的配置,每次启动都会产生不一样的id,这样项目启动会造成多个无效的实例存在于注册列表中。因此我改用了服务名+ip+port的方案。关于配置,其实有很多细节可以说明的,以后可以慢慢聊

本文地址:https://blog.csdn.net/pingwangzhi/article/details/108865569

相关标签: spring-cloud java