Apollo安装与配置使用

news2024/12/22 12:20:30
  • 介绍

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

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

  • 安装

准备工作:

1、java版本

        Apollo服务端:1.8+

        Apollo客户端:1.8+

        如需运行在 Java 1.7 运行时环境,请使用 1.x 版本的 apollo 客户端,如 1.9.1。

2、Mysql版本

        版本要求:5.6.5+

3、下载 Quick Start安装包

        GitHub - apolloconfig/apollo-quick-start: Apollo Quick Start

        通过网盘链接下载,提取码: 9wwe

        手动打包:Quick Start只针对本地测试使用,所以一般用户不需要自己下载源码打包,只需要下载已经打好的包即可。手动打包以参考如下步骤:

  1. 修改apollo-configservice, apollo-adminservice和apollo-portal的pom.xml,注释掉spring-boot-maven-plugin和maven-assembly-plugin
  2. 在根目录下执行mvn clean package -pl apollo-assembly -am -DskipTests=true
  3. 复制apollo-assembly/target下的jar包,rename为apollo-all-in-one.jar

4、创建数据库

        Apollo服务端共需要两个数据库:ApolloPortalDBApolloConfigDB,我们把数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可。

        Apollo服务端需要知道如何连接到你前面创建的数据库,所以需要编辑demo.sh,修改ApolloPortalDB和ApolloConfigDB相关的数据库连接串信息。

#apollo config db info
apollo_config_db_url="jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai"
apollo_config_db_username=用户名
apollo_config_db_password=密码(如果没有密码,留空即可)

# apollo portal db info
apollo_portal_db_url="jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai"
apollo_portal_db_username=用户名
apollo_portal_db_password=密码(如果没有密码,留空即可)

启动脚本:./demo.sh start。

另外需要注意的是Quick Start不支持增加环境,只有通过分布式部署才可以新增环境。

  • 使用

打开

首页

 点击SampleApp进入配置界面,可以看到当前有一个配置timeout=100。

1、我们可以使用Demo客户端来演示从Apollo配置中心获取配置。程序很简单,就是用户输入一个key的名字,程序会输出这个key对应的值。运行./demo.sh client启动Demo客户端:

> timeout
> [SimpleApolloConfigDemo] Loading key : timeout with value: 100

 2、如果是maven项目,需要依赖apollo客户端的依赖。

 运行命令,必需加入参数:

// id 是apollo 项目的appid,Denv是环境,dev_meta是dev环境的访问路径
// VM options: 
-Dapp.id=apollo-quickstart -Denv=DEV -Ddev_meta=http://localhost:8080

然后可以在main方法中直接获取apollo的配置信息。

import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.ConfigService


public static void main(String[] args){
    Config appConfig = ConfigService.getAppConfig();

    String value = appConfig.getProperty("timeout",null);
} 

 3、结合springboot项目

需要在application.properties中配置apollo

app.id = 项目appid
#启动apollo
apollo.bootstrap.enabled = true
#namespace,多个以“,”分隔
apollo.bootstrap.namespace = application,micro_service,

 配置 apollo meta server

可以在 运行命令中,加上参数:-Dapollo.meta=http://localhost:8080

第二种可以在resources目录下新建apollo-env.properties文件种配置:

dev.meta=http://localhost:8080

 在启动类中配置apollo注解,@EnableApolloConfig

 通过@Value注解获取apollo上面发布的配置信息:通过${名称}的方式获取

  • 总结

统一管理不同环境、不同集群的配置

  • Apollo提供了一个统一界面集中式管理不同环境(environment)、不同集群(cluster)、不同命名空间(namespace)的配置。
  • 同一份代码部署在不同的集群,可以有不同的配置,比如zk的地址等
  • 通过命名空间(namespace)可以很方便的支持多个不同应用共享同一份配置,同时还允许应用对共享的配置进行覆盖
  • 配置界面支持多语言(中文,English)

配置修改实时生效(热发布)

  • 用户在Apollo修改完配置并发布后,客户端能实时(1秒)接收到最新的配置,并通知到应用程序。
  • 版本发布管理

    • 所有的配置发布都有版本概念,从而可以方便的支持配置的回滚。
  • 灰度发布

    • 支持配置的灰度发布,比如点了发布后,只对部分应用实例生效,等观察一段时间没问题后再推给所有应用实例。

权限管理、发布审核、操作审计

  • 应用和配置的管理都有完善的权限管理机制,对配置的管理还分为了编辑和发布两个环节,从而减少人为的错误。
  • 所有的操作都有审计日志,可以方便的追踪问题。

客户端配置信息监控

  • 可以方便的看到配置在被哪些实例使用

提供Java和.Net原生客户端

  • 提供了Java和.Net的原生客户端,方便应用集成
  • 支持Spring Placeholder,Annotation和Spring Boot的ConfigurationProperties,方便应用使用(需要Spring 3.1.1+)
  • 同时提供了Http接口,非Java和.Net应用也可以方便的使用

提供开放平台API

  • Apollo自身提供了比较完善的统一配置管理界面,支持多环境、多数据中心配置管理、权限、流程治理等特性。
  • 不过Apollo出于通用性考虑,对配置的修改不会做过多限制,只要符合基本的格式就能够保存。
  • 在我们的调研中发现,对于有些使用方,它们的配置可能会有比较复杂的格式,如xml, json,需要对格式做校验。
  • 还有一些使用方如DAL,不仅有特定的格式,而且对输入的值也需要进行校验后方可保存,如检查数据库、用户名和密码是否匹配。
  • 对于这类应用,Apollo支持应用方通过开放接口在Apollo进行配置的修改和发布,并且具备完善的授权和权限控制

部署简单

  • 配置中心作为基础服务,可用性要求非常高,这就要求Apollo对外部依赖尽可能地少
  • 目前唯一的外部依赖是MySQL,所以部署非常简单,只要安装好Java和MySQL就可以让Apollo跑起来
  • Apollo还提供了打包脚本,一键就可以生成所有需要的安装包,并且支持自定义运行时参数

   

代码:https://gitee.com/robots2/apollo

参考文档:https://www.apolloconfig.com/#/zh/README 

入门视频: Apollo分布式配置实战课程

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

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

相关文章

外贸新手必看的寄样品攻略!别再盲目踩雷了!

样品,被看做是订单前的一个敲门砖,寄样品这一步如果处理的不好,同样会对最终谈判结果产生较大影响。因此外贸新手在寄样品前,也需要对具体流程和注意事项做一个了解,以避免在这个过程中,造成无法挽回的后果…

西北大学计算机考研844经验分享(初试科目844-笔记课件整理)

西北大学计算机考研844经验分享 个人介绍 ​ 本人是西北大学22级软件工程研究生,考研专业课129分,过去一年里在各大辅导机构任职,辅导考研学生专业课844,辅导总时长达288小时,帮助多名学生专业课高分上岸。 前情回顾…

23款奔驰GLS450豪华型升级原厂电动吸合门,体验绅士的关门状态

电吸门的工作原理是在门框(或门板边缘)上安装一个电磁线圈。当门打开时,电流会流过线圈,形成电磁场。这样,由于磁力的作用,当门靠近门框关闭时,门会自动关闭。 另外,电吸门也有有用的一面。如果下车&#…

【考研数学】概率论与数理统计 —— 第二章 | 一维随机变量及其分布(1,基本概念与随机变量常见类型)

文章目录 引言一、一维随机变量及其分布1.1 随机变量1.2 分布函数 二、随机变量常见类型及分布2.1 离散型随机变量2.2 连续型随机变量及概率密度函数 写在最后 引言 暑假接近尾声了,争取赶一点概率论部分的进度。 一、一维随机变量及其分布 1.1 随机变量 设随机试…

Linux查看目录下文件及其大小

ls -lh在Linux下,"ls -lh"是一个用于显示文件和目录详细信息的命令。它会列出当前目录中的文件和目录,并显示它们的文件大小和权限等详细信息。 其中,参数"-l"是用来显示详细信息的选项,"h"表示以…

gif怎么转换成mp4格式视频

gif怎么转换成mp4格式视频?GIF格式是一种广泛应用的公用图像文件格式标准,具有许多优势。它占用的内存较小,可以实现自动循环播放,并且兼容多个平台。然而,GIF格式也存在一些缺点。例如,它无法处理复杂的图…

恒运资本:三大指数震荡走低,地产股大幅回撤,光刻胶概念逆市上涨

周四(8月31日),到上午收盘,A股三大指数震动走低。其间,上证指数跌0.53%,报3120.39点;深证成指和创业板指别离跌0.55%、0.54%;沪深两市算计成交额5290.51亿元,总体来看&am…

如何在小红书进行学习直播

诸神缄默不语-个人CSDN博文目录 因为我是从B站开始的,所以一些直播常识型的东西请见我之前写的如何在B站进行学习直播这一篇。 本篇主要介绍一些小红书之与B站不同之处。 小红书在手机端是可以直接点击“”选择直播的。 文章目录 1. 电脑直播-小红书直播软件2. 电…

【LeetCode算法系列题解】第11~15题

CONTENTS LeetCode 11. 盛最多水的容器(中等)LeetCode 12. 整数转罗马数字(中等)LeetCode 13. 罗马数字转整数(简单)LeetCode 14. 最长公共前缀(简单)LeetCode 15. 三数之和&#xf…

Unity碰撞检测(3D和2D)

Unity碰撞检测3D和2D 前言准备材料3D2D 代码3D使用OnCollisionEnter()进行碰撞Collider状态代码 使用OnTriggerEnter()进行碰撞Collider状态代码 2D使用OnCollisionEnter2D()进行碰撞Collider2D状态代码 使用OnTriggerEnter2D()进行碰撞Collider2D状态代码 区别3D代码OnCollisi…

Python中*(星号)传可变长的元组

在Python中,*(星号)可以用来传递变长元组参数,通常在函数定义和函数调用中使用。这是一种用于处理不定数量的参数的方式,使得函数能够接受任意数量的位置参数。 在函数定义中使用 *: 在函数定义时&#xff…

Jupyter lab 配置

切换jupyterlab的默认工作目录 在终端中输入以下命令 PS C:\Users\Administrator> jupyter-lab --generate-config Writing default config to: C:\Users\Administrator\.jupyter\jupyter_lab_config.py它就会生成JupyterLab的配置文件(如果之前有这个文件的话…

奥威BI数据可视化工具一出马,财务数据分析不再烧脑

数据可视化工具可以使财务数据分析更加直观和易于理解。这些工具可以将大量的财务数据简化为易于阅读和理解的图表、图形和表格,帮助财务人员更快地分析和发现问题。例如,通过将财务数据转化为柱状图、折线图、饼图等图形,可以更加清晰地展示…

《向量数据库指南》——腾讯云向量数据库(Tencent Cloud VectorDB) SDK 正式开源

腾讯云向量数据库 SDK 宣布正式开源。根据介绍,腾讯云向量数据库(Tencent Cloud VectorDB)的 Python SDK 与 Java SDK 是基于数据库设计模型,遵循 HTTP 协议,将 API 封装成易于使用的 Python 与 Java 函数或类,为开发者提供了更加友好、更加便捷的数据库使用和管理方式。…

刚来的00后进来就有18K,我三年工作经验就是个笑话

00后带来的压力 公司一位工作3年的老油条工资还没有刚来的00后高,她心中不平,对这件事情有不小的怨气,她觉得自己来公司三年了,三年内迟到次数都不超过5次,每天勤勤恳恳,要加班的时候也愿意加班&#xff0…

vue自定义事件 div 拖拽方法缩小

在main.js 引用 // 引入拖动js import dragMove from "./utils/dragMove.js" 创建 drawmove.js export default (app) > {app.directive(dragMove, (el, binding) > {const DragVindow el.querySelector(binding.value.DragVindow)// 按下鼠标处理事件con…

修改yum下载文件的位置,指定安装位置

yum update 的软件包,可以放在别的地方。即可。 修改/etc/yum.conf 指定安装位置 yum -c /etc/yum.conf --installroot/usr/local --releasever/ install 你需要安装的软件

六、抽象工厂模式

一、什么是抽象工厂模式 抽象工厂(AbstractFactory)模式的定义:是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。 抽象工厂模式的主要角色如下…

共享办公室的7S管理

共享办公室的7S管理是一个全面且详细的过程,它涵盖了整理(Sort)、整顿(Straighten)、清扫(Sweep)、清洁(Sanitize)、素养(Sustain)、安全&#xf…

报错:Cannot read properties of undefined (reading ‘$message‘)

报错 一、问题二、分析三、解决 一、问题 Cannot read properties of undefined (reading ‘$message’) 二、分析 是因为在 main.js 文件中,此时还未有 this,我们可以打印一下,是 null 三、解决 如果想要使用 this.$message(这是一条消息…