• SpringBoot使用配置中心Apollo启动很慢两分钟解决


    背景

    SpringBoot引用Apollo(阿波罗)分布式配置管理中心后,Docker中服务启动速度变慢,刚开始启动只需要20s,加入配置后启动需要两分钟。每次部署服务都需要多浪费时间,这是为什么?要怎么解决呢?

    在这里插入图片描述

    原因

    通过分析日志, 每次启动服务,都需要从Apollo服务拉取配置然后处理一分多时间导致总体时间很长

    日志如下

    [main] INFO  c.c.f.f.i.p.DefaultServerProvider -Environment is set to null. Because it is not available in either (1) JVM system property 'env', (2) OS env variable 'ENV' nor (3) property 'env' from the properties InputStream.
    [main] WARN  c.c.f.a.i.DefaultMetaServerProvider -Could not find meta server address, because it is not available in neither (1) JVM system property 'apollo.meta', (2) OS env variable 'APOLLO_META' (3) property 'apollo.meta' from server.properties nor (4) property 'apollo.meta' from app.properties
    [main] WARN  c.c.f.apollo.core.MetaDomainConsts -Meta server address fallback to http://apollo.meta for env UNKNOWN, because it is not available in all MetaServerProviders
    Started App in 114.872 seconds (JVM running for 118.52)
    
    • 1
    • 2
    • 3
    • 4

    拉取流程:
    在这里插入图片描述

    解决

    启动本地模式,使用挂载让容器内服务访问的配置文件存在。

    步骤1、加入启动参数-Denv=local

    示例

    java -Denv=local -jar xxx.jar
    
    • 1

    步骤2、保证配置文件已被拉取且是最新

    配置默认路径

    Mac/Linux: /opt/data/{appId}/config-cache

    Windows: C:\opt\data{appId}\config-cache

    本地模式启动日志:

    [main] INFO  c.c.f.f.i.p.DefaultServerProvider -Loading opt\settings\server.properties
    [main] INFO  c.c.f.f.i.p.DefaultServerProvider -Environment is set to [local] by JVM system property 'env'.
    [TID: N/A] [main] WARN  c.c.f.a.spi.DefaultConfigFactory -==== Apollo is in local mode! Won't pull configs from remote server for namespace ! ====
    
    • 1
    • 2
    • 3

    官网地址:
    https://www.apolloconfig.com/#/zh/usage/java-sdk-user-guide

    小拓展

    Apollo

    Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

    服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。

    Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。

    .Net客户端不依赖任何框架,能够运行于所有.Net运行时环境。

    Spring Cloud Config

    在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。

    在spring cloud config 组件中,分两个角色,一是config server,二是config client。

    Config Server是一个可横向扩展、集中式的配置服务器,它用于集中管理应用程序各个环境下的配置,默认使用Git存储配置文件内容,也可以使用SVN存储,或者是本地文件存储。

    Config Client是Config Server的客户端,用于操作存储在Config Server中的配置内容。

    微服务在启动时会请求Config Server获取配置文件的内容,请求到后再启动容器。

    Nacos

    官网地址:
    https://nacos.io/zh-cn/docs/v2/what-is-nacos.html
    Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
    在这里插入图片描述

    服务注册发现和服务健康检测

    动态配置服务

    动态DNS服务

    服务及元数据管理

    通过以上流行配置中心介绍,推荐使用nacos。
    你们配置中心使用的是什么呢?

    在这里插入图片描述

    点赞 收藏 关注
    读经以研寻义理为本,考据名物为末

  • 相关阅读:
    react hooks编程规范(内部使用)
    AI日报:欧盟人工智能法案通过后行业面临合规障碍
    python二分查找
    200mb的sql文件导入到MySQL出问题了
    共享台球室小程序系统的数据统计与分析功能
    牛客网刷题(四)
    Games104现代游戏引擎入门-lecture12游戏引擎的粒子和声效系统
    【数学】阶乘函数后 K 个零
    godot正确设置2d像素游戏
    《网页设计与制作-初级》
  • 原文地址:https://blog.csdn.net/qq_35764295/article/details/127616988