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

服务搭建:

Apollo 官方提供了一个方便学习使用的docker-quick-start 环境。我们只需要git clone 官方仓库,就可以在项目中的scripts目录下找到这个docker-quick-start文件夹。

git clone https://github.com/apolloconfig/apollo.git

cd apollo/scripts/docker-quick-start/

docker-quick-start目录下执行下面的命令启动容器。

docker-compose up

等镜像下载完,容器启动之后,就可以访问本地的http://localhost:8070查看Apollo管理后台了。

输入用户名apollo,密码admin后登录管理后台。

Apollo支持4个维度管理Key-Value格式的配置:

  • application (应用)
  • environment (环境)
  • cluster (集群)
  • namespace (命名空间)

十分推荐大家看一下官方的Apollo使用指南,文档读到位,必定事半功倍。

社区中有很多 Go语言Apollo客户端可供选择,本文以https://github.com/philchia/agollo为例讲解如何使用Go语言接入Apollo获取配置。此外,也可以使用https://github.com/shima-park/agollo支持搭配 Viper 来使用。

平台常用修改项:

1.添加环境, 默认只有一个dev环境

在 管理员工具 > 系统参数 , 搜索参数: configView.memberOnly.envs

2.

[golang]

go get -u github.com/philchia/agollo/v4
package main

import (
"fmt"
"log" "github.com/philchia/agollo/v4"
) func main() {
agollo.Start(&agollo.Conf{
AppID: "SampleApp",
Cluster: "dev",
NameSpaceNames: []string{"application.properties", "shopping_cart.yaml"},
MetaAddr: "http://localhost:8080",
AccesskeySecret: "b8ceb3ec62f34030b1b1fd9a431e420b", //1.6.0版本之后 增加了密钥机制, 只有应用开启访问密钥,必须配置该项
}) agollo.OnUpdate(func(event *agollo.ChangeEvent) {
// 监听配置变更
log.Printf("event:%#v\n", event)
})
log.Println("初始化Apollo配置成功") // 从默认的application.properties命名空间获取key的值
val := agollo.GetString("timeout")
log.Println(val)
// 获取命名空间下所有key
keys := agollo.GetAllKeys(agollo.WithNamespace("shopping_cart.yaml"))
fmt.Println(keys)
// 获取指定一个命令空间下key的值
other := agollo.GetString("content", agollo.WithNamespace("shopping_cart.yaml"))
log.Println(other)
// 获取指定命名空间下的所有内容
namespaceContent := agollo.GetContent(agollo.WithNamespace("shopping_cart.yaml"))
log.Println(namespaceContent)
}

注意:  如果这里使用yaml配置的话, 需要使用GetContent的方式获取内容, 不能使用GetString, 尤其配置的是int类型的key的话

[Python]

使用客户端:https://github.com/filamoon/pyapollo

安装:

1)下载包
2)python setup.py install

使用:

from pyapollo.apollo_client import ApolloClient

def main():
config = {
'app_id': 'tta',
'cluster': 'dev',
'config_server_url': 'http://192.168.136.241:8080',
}
client = ApolloClient(**config)
value = client.get_value('user.name')
print('Value:', value) if __name__ == '__main__':
main()

缺点: 不支持密钥参数, 可以自己将这块进行重写支持即可

分布式配置中心之Apollo的更多相关文章

  1. Apollo分布式配置中心部署以及使用

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

  2. 分布式配置中心 携程(apollo)

    1.传统配置文件与分布式配置文件区别 传统配置文件:如果修改了配置文件,需要重新打包发布,重新发布服务,而且每个环境的变更配置文件,比较繁琐. 分布式配置文件:将配置文件注册到配置中心上去,可以使用分 ...

  3. Apollo 分布式配置中心

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

  4. 分布式配置中心Apollo——QuickStart

    分布式配置中心 剥离配置文件,实现动态修改,自动更新. [假设没有分布式配置中心,修改配置文件后都需要重启服务,对于数量庞多的微服务开发来说,就会非常繁琐] 分布式配置中心有哪些 disconf(依赖 ...

  5. 实践分布式配置中心Apollo

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

  6. 分布式配置中心Apollo

    1,什么是分布式配置中心 项目中配置文件比较繁杂,而且不同环境的不同配置修改相对频繁,每次发布都需要对应修改配置,如果配置出现错误,需要重新打包发布,时间成本较高,因此需要做统一的分布式注册中心,能做 ...

  7. spring cloud 集成分布式配置中心 apollo(单机部署apollo)

    一.什么是apollo? Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用 ...

  8. Apollo系列(一):分布式配置中心Apollo安装(Linux、Docker)

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

  9. 从0开始用spring boot编写分布式配置中心-peppa

    欢迎大家一起来编写peppa github地址: github 交流群: 目前市面上比较流行的分布式配置中心有disconf.apollo,用起来还是比较方便的,然而由于在权限管理这块做得不够好,导致 ...

  10. 白话SpringCloud | 第七章:分布式配置中心的使用

    前言 介绍完服务的容错保护处理,接下来我们来了解下关于分布式配置中心的相关知识和使用.众所周知,随着项目的越来越多,日益庞大,每个子项目都会伴随着不同的配置项,于此也就多了很多的配置文件.倘若某些配置 ...

随机推荐

  1. 千牛hook 旺旺hook,旺旺发消息call,千牛发消息call,千牛机器人,破解旺旺发消息代码,破解千牛发消息代码,反汇编旺旺发消息,反汇编千牛发消息,旺旺发消息组件,千牛发消息组件

    由于工作需要,做了相关的编码,有demo,拿去后,直接按demo写代码即可实现千牛发消息,非常稳定.非反汇编找call,基本不怕千牛升级,原理是基于千牛架构做出来的,除非千牛改架构,已稳定使用2年,未 ...

  2. Round #2022/12/03

    问题 B: 约数个数 题目描述 有 \(t\) 次询问,每次给你一个数 \(n\) ,求在 \([1,n]\) 内约数个数最多的数的约数个数. 输入 第一行一个正整数 \(t\) . 之后 \(t\) ...

  3. JavaScript习题之算法设计题

    // 1.九九乘法表 for (var i = 1; i < 10; i++) { document.write("<span>"); for (var j = ...

  4. 1 月 25 日见|Flutter Forward 活动日程表正式发布!

    2023 年 1 月 25 日 (正月初四),我们将在肯尼亚首都内罗毕举办 Flutter Forward 大会,并同时开启线上直播.本次活动将展示最新的 Flutter 技术更新,包括一个主题演讲以 ...

  5. 实战合集 | I/O 2021 Flutter 研讨会

    2021 年的 Google I/O 大会已圆满闭幕,本次大会带来了诸多关于各项谷歌开发技术产品的最新更新.在此次 I/O,Flutter 发布了 2.2 版本,包括 Web 版的增强.更多 Mate ...

  6. UEFI原理与编程(四)(dec dsc inf文件)

    1 .inf文件 以下面 .inf文件为例 [Defines] # 块用于定义模块的属性和其他变量,块内定义的变量可被其他块引用 INF_VERSION = 0x00010006 #INF 标准的版本 ...

  7. 2023年2月中国数据库排行榜:OTO新格局持续三月,人大金仓、AnalyticDB排名创新高

    玉兔迎春至,榜单焕新颜. 2023年2月,兔年开年的 墨天轮中国数据库流行度排行 火热出炉,本月共有259个数据库参与排名,排行榜样式去掉了较上月和半年前得分差的数据显示,更加聚焦各产品之间的排名变化 ...

  8. 元素偏移量offset 与 style 区别 ?

    offset 可以得到任意样式表中的样式值offset 系列获得的数值是没有单位的数字offsetWidth 包含padding+border+width offsetWidth 等属性是只读属性,只 ...

  9. vue 的常用指令以及作用 ·

    1. v-model 多用于表单元素实现双向数据绑定(同 angular 中的 ng-model) 2. v-for 格式: v-for="字段名 in(of) 数组 json" ...

  10. Exchange2016中搜索和删除邮件

    Exchange2016中搜索和删除邮件 在以前版本的 Exchange 中,可以运行 Search-Mailbox -DeleteContent  命令搜索并删除电子邮件.你仍可以在 Exchang ...