清晰易懂的 Apollo 配置中心安装与使用教程

Apollo 是携程开源的分布式配置管理平台,支持配置实时推送、版本管理、权限控制等功能。本教程将手把手教你完成 Apollo 核心组件安装基础配置管理避坑指南,助你快速掌握企业级配置管理能力。


一、环境准备(关键依赖)

1. 基础组件

组件版本要求作用说明
JavaJDK 1.8+Apollo 服务端运行环境
MySQL5.6.5+存储配置元数据
Eureka内嵌或独立部署服务注册与发现(可选)

2. 推荐部署架构

用户访问 → Apollo Portal (管理端)↓
Apollo Config Service (配置服务)↓
Apollo Admin Service (配置管理)↓
MySQL 数据库

二、快速安装部署(Docker 版)

1. 一键启动(开发环境)

git clone https://github.com/ctripcorp/apollo.git
cd apollo/scripts/docker-quick-start
docker-compose up -d  # 自动启动 MySQL + Eureka + Apollo

2. 访问控制台

  • Portal 管理端http://localhost:8070
    默认账号:apollo/admin
  • Eureka 注册中心http://localhost:8080

三、生产环境手动安装(Linux)

1. 数据库初始化

  1. 创建数据库并执行初始化脚本:
    mysql -u root -p
    > CREATE DATABASE apolloconfigdb DEFAULT CHARSET utf8mb4;
    > USE apolloconfigdb;
    > source apollo/scripts/sql/apolloconfigdb.sql
    

2. 配置服务端

  1. 下载 Release 包
    https://github.com/apolloconfig/apollo/releases

    • apollo-configservice-2.1.0.jar
    • apollo-adminservice-2.1.0.jar
    • apollo-portal-2.1.0.jar
  2. 启动 Config Service

    java -jar apollo-configservice.jar \--spring.datasource.url=jdbc:mysql://localhost:3306/apolloconfigdb?useSSL=false \--spring.datasource.username=root \--spring.datasource.password=123456
    
  3. 启动 Admin Service

    java -jar apollo-adminservice.jar \--spring.datasource.url=jdbc:mysql://localhost:3306/apolloconfigdb?useSSL=false \--spring.datasource.username=root \--spring.datasource.password=123456
    
  4. 启动 Portal

    java -jar apollo-portal.jar \--spring.datasource.url=jdbc:mysql://localhost:3306/apolloconfigdb?useSSL=false \--spring.datasource.username=root \--spring.datasource.password=123456
    

四、必学核心操作

1. 创建项目与命名空间

  1. 登录 Portal → 创建项目 → 输入应用ID(如 order-service
  2. 进入项目 → 添加命名空间(如 application 公共配置)
  3. 配置格式:支持 Properties、YAML、JSON 等

2. 配置发布与回滚

  1. 在命名空间页面点击 新增配置
    # Key-Value 示例
    order.timeout = 5000
    payment.url = http://payment-service/api
    
  2. 点击 发布 → 填写发布备注
  3. 历史版本 → 可一键回滚到任意版本

3. 客户端集成(Spring Boot 示例)

  1. 添加 Maven 依赖:

    <dependency><groupId>com.ctrip.framework.apollo</groupId><artifactId>apollo-client</artifactId><version>2.1.0</version>
    </dependency>
    
  2. 配置 application.yml

    app:id: order-service  # 与 Portal 中的应用ID一致
    apollo:meta: http://config-service-url:8080  # Apollo Config Service 地址bootstrap:enabled: truenamespaces: application  # 命名空间
    
  3. 动态获取配置:

    @Value("${order.timeout:3000}")  // 默认值 3000
    private int orderTimeout;
    

五、避坑指南(新手必看)

1. 配置未实时生效

  • 现象:客户端未收到配置更新
  • 解决
    • 检查客户端长轮询是否开启(默认开启)
    • 确认客户端与 Config Service 网络连通性

2. 数据库连接池耗尽

  • 现象:日志报错 Too many connections
  • 解决
    1. 优化 MySQL 连接数:
      SET GLOBAL max_connections = 1000;
      
    2. 调整 Apollo 数据源配置:
      spring.datasource.hikari.maximum-pool-size=20
      

3. 权限管理缺失

  • 风险:未经授权用户修改配置
  • 解决
    1. Portal → 管理员工具用户管理 → 创建角色
    2. 权限管理 → 按项目分配权限(如开发只读、运维可发布)

4. 未配置监控告警

  • 现象:配置异常未能及时发现
  • 解决
    1. 集成 Prometheus 监控 JVM 指标
    2. 配置邮件/钉钉通知:
      apollo.portal.notification.enabled = true
      apollo.portal.notification.template = 配置【{key}】已变更,操作人:{operator}
      

六、企业级最佳实践

1. 多环境管理

  • 创建不同环境(DEV/TEST/PROD)→ 通过 Cluster 隔离配置
  • 使用 灰度发布 功能逐步验证配置

2. 配置加密

  1. 启用 Apollo 内置加密功能:
    @ApolloJsonValue("${encrypted.password}")
    private String password;
    
  2. 通过 密钥管理 界面加密敏感数据

3. 灾备与高可用

  • 部署多节点 Config Service 和 Admin Service
  • 定期备份 MySQL 数据库(apolloconfigdbapolloportaldb

七、总结

通过本教程,你已掌握:
Apollo 多环境部署方法
配置全生命周期管理(增删改查 + 版本控制)
客户端集成与实时推送机制
企业级安全与稳定性方案

下一步建议

  1. 学习 Apollo OpenAPI 实现自动化运维
  2. 结合 Spring Cloud Config 构建混合配置中心
  3. 探索 Kubernetes 环境下的 Apollo 最佳实践

立即访问 Apollo 官方文档 开启你的配置管理之旅! 🚀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/76241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyTorch池化层详解:原理、实现与示例

池化层&#xff08;Pooling Layer&#xff09;是卷积神经网络中的重要组成部分&#xff0c;主要用于降低特征图的空间维度、减少计算量并增强模型的平移不变性。本文将通过PyTorch代码演示池化层的实现原理&#xff0c;并详细讲解最大池化、平均池化、填充&#xff08;Padding&…

如何构建并优化提示词?

提示词是一个小白最容易上手大模型的方式&#xff0c;提示词就是你告诉大模型应该如何去完成一项工作的系统性的命令&#xff0c;所以写一个好的提示词是比较关键的&#xff0c;那么如何写好一个提示词呢&#xff1f; 要写好提示词&#xff0c;其实就像我们要把一些命令清晰地传…

面向大模型的开发框架LangChain

这篇文章会带给你 如何使用 LangChain&#xff1a;一套在大模型能力上封装的工具框架如何用几行代码实现一个复杂的 AI 应用面向大模型的流程开发的过程抽象 文章目录 这篇文章会带给你写在前面LangChain 的核心组件文档&#xff08;以 Python 版为例&#xff09;模型 I/O 封装…

【蓝桥杯】动态规划:线性动态规划

1. 最长上升子序列(LIS) 1.1. 题目 想象你有一排数字,比如:3, 1, 2, 1, 8, 5, 6 你要从中挑出一些数字,这些数字要满足两个条件: 你挑的数字的顺序要和原来序列中的顺序一致(不能打乱顺序) 你挑的数字要一个比一个大(严格递增) 问:最多能挑出多少个这样的数字? …

vue2和vue3的主要区别

一、性能优化与响应式系统 性能优化&#xff1a; Vue2&#xff1a;性能较好&#xff0c;但在大型应用中&#xff0c;当数据变化频繁时可能出现性能瓶颈。它使用虚拟DOM来高效地进行DOM操作&#xff0c;并通过多种技术手段如懒加载、异步组件、树形抖动等优化性能。 Vue3&…

Python: 实现数据可视化分析系统

后端基于Python 开源的 Web 框架 Flask&#xff0c;前端页面采用 LayUI 框架以及 Echarts 图表&#xff0c;数据库为sqlite。系统的功能模块分为数据采集和存储模块、数据处理和分析模块、可视化展示模块和系统管理模块。情感分析方面使用LDA等主题建模技术&#xff0c;结合领域…

深度学习总结(3)

数据批量的概念 通常来说&#xff0c;深度学习中所有数据张量的第一个轴&#xff08;也就是轴0&#xff0c;因为索引从0开始&#xff09;都是样本轴[samples axis&#xff0c;有时也叫样本维度&#xff08;samples dimension&#xff09;​]​。深度学习模型不会一次性处理整个…

微软庆祝它成立整整50周年

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

【操作系统(Linux)】——通过案例学习父子进程的线程异步性

本篇旨在通过几个案例来学习父子进程的线程异步性 一、父进程与子进程 我们将要做的&#xff1a; 创建父子进程&#xff0c;观察父子进程执行的顺序&#xff0c;了解进程执行的异步行为 源代码&#xff1a; #include <stdio.h> #include <sys/types.h> #include…

系统性能核心指标:QPS、TPS、RT、并发量详解

系统性能核心指标&#xff1a;QPS、TPS、RT、并发量详解 1. 引言 在分布式系统、高并发架构设计中&#xff0c;QPS、TPS、RT、并发量 等指标是衡量系统性能的关键。本文深入解析这些术语的定义、计算方法、关联性及优化策略&#xff0c;帮助开发者更好地进行系统性能评估与调…

PortswiggerLab:Exploiting a mass assignment vulnerability

实验目标 To solve the lab, find and exploit a mass assignment vulnerability to buy a Lightweight l33t Leather Jacket. You can log in to your own account using the following credentials: wiener:peter. 官方WP In Burps browser, log in to the application using…

卡尔曼滤波器的工作原理

原文: https://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/ 1 概述 你可以对某个动态系统有不确定信息的任何地方使用卡尔曼滤波器&#xff0c;并且对系统下一步的状态做出有根据的猜测。即使出现混乱的现实状态&#xff0c;卡尔曼滤波器都会给出一个合理的结果。…

PDFtk

如果下载的pdf文件有秘钥的话&#xff0c;使用下面linux命令去掉秘钥&#xff1a; pdftk 纳税记录.pdf input_pw 261021 output 纳税记录_output.pdf将多个单页pdf合并为一个pdf的linux命令: pdftk 自然人电子税务局1.pdf 自然人电子税务局2.pdf 自然人电子税务局3.pdf 自然人…

Openlayers:海量图形渲染之WebGL渲染

最近由于在工作中涉及到了海量图形渲染的问题&#xff0c;因此我开始研究相关的解决方案。我在网络上寻找相关的解决方案时发现许多的文章都提到利用Openlayers中的WebGLPointsLayer类&#xff0c;可以实现渲染海量的点&#xff0c;之后我又了解到利用WebGLVectorLayer类可以渲…

替换jeecg图标

替换jeecg图标 ant-design-vue-jeecg/src/components/tools/Logo.vue <!-- <img v-else src"~/assets/logo.svg" alt"logo">-->

Codeforces Round 970 (Div. 3)题解

题目地址 https://codeforces.com/contest/2008 锐评 本次D3的前四题还是比较简单的&#xff0c;没啥难度区分&#xff0c;基本上差不多&#xff0c;属于手速题。E的码量比F大一些&#xff0c;实现略显复杂一些。G的数学思维较明显&#xff0c;如果很久没有训练这个知识点&a…

操作系统:线程间同步之事件集

事件集是线程间同步的机制之一&#xff0c;一个事件集可以包含多个事件&#xff0c;利用事件集可以完成一对多、多对多的线程间同步。 目录 一、事件集举例说明 二、事件集工作机制 三、RT-Thread为实例说明 四、事件集的应用场合 一、事件集举例说明 以坐公交车为例&…

基于springboot钻孔数据管理系统的设计与实现(源码+lw+部署文档+讲解),源码可白嫖!

摘要 本钻孔数据管理系统采用B/S架构&#xff0c;数据库是MySQL&#xff0c;网站的搭建与开发采用了先进的Java语言、Hadoop、数据可视化技术进行编写&#xff0c;使用了Spring Boot框架。该系统从两个对象&#xff1a;由管理员和用户来对系统进行设计构建。用户主要功能包括&…

全双工分轨语音数据集:让AI实现无缝对话

清晨&#xff0c;智能音箱根据指令-播放音乐&#xff1b;驾驶途中&#xff0c;车载助手同步处理导航与来电&#xff1b;智能会议工具无缝切换多语种对话……语音交互技术正快速融入生活。然而&#xff0c;用户对于对话体验追求更自然、更流畅&#xff0c;实时理解&#xff0c;动…

Python 网络请求利器:requests 包详解与实战

诸神缄默不语-个人技术博文与视频目录 文章目录 一、前言二、安装方式三、基本使用1. 发起 GET 请求2. 发起 POST 请求 四、requests请求调用常用参数1. URL2. 数据data3. 请求头 headers4. 参数 params5. 超时时间 timeout6. 文件上传 file&#xff1a;上传纯文本文件流7. jso…