分布式配置中心之Apollo
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的更多相关文章
- Apollo分布式配置中心部署以及使用
一.简介Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理场 ...
- 分布式配置中心 携程(apollo)
1.传统配置文件与分布式配置文件区别 传统配置文件:如果修改了配置文件,需要重新打包发布,重新发布服务,而且每个环境的变更配置文件,比较繁琐. 分布式配置文件:将配置文件注册到配置中心上去,可以使用分 ...
- Apollo 分布式配置中心
1. 介绍 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置 ...
- 分布式配置中心Apollo——QuickStart
分布式配置中心 剥离配置文件,实现动态修改,自动更新. [假设没有分布式配置中心,修改配置文件后都需要重启服务,对于数量庞多的微服务开发来说,就会非常繁琐] 分布式配置中心有哪些 disconf(依赖 ...
- 实践分布式配置中心Apollo
简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理场景 ...
- 分布式配置中心Apollo
1,什么是分布式配置中心 项目中配置文件比较繁杂,而且不同环境的不同配置修改相对频繁,每次发布都需要对应修改配置,如果配置出现错误,需要重新打包发布,时间成本较高,因此需要做统一的分布式注册中心,能做 ...
- spring cloud 集成分布式配置中心 apollo(单机部署apollo)
一.什么是apollo? Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用 ...
- Apollo系列(一):分布式配置中心Apollo安装(Linux、Docker)
一.介绍 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理 ...
- 从0开始用spring boot编写分布式配置中心-peppa
欢迎大家一起来编写peppa github地址: github 交流群: 目前市面上比较流行的分布式配置中心有disconf.apollo,用起来还是比较方便的,然而由于在权限管理这块做得不够好,导致 ...
- 白话SpringCloud | 第七章:分布式配置中心的使用
前言 介绍完服务的容错保护处理,接下来我们来了解下关于分布式配置中心的相关知识和使用.众所周知,随着项目的越来越多,日益庞大,每个子项目都会伴随着不同的配置项,于此也就多了很多的配置文件.倘若某些配置 ...
随机推荐
- 公有云-实验一 实践腾讯云部署Web应用
实验一 实践腾讯云部署Web应用 概述 企业A需要搭建一套在互联网上发布的论坛平台,但是企业内部并没有完善的基础架构设施,难以保证论坛平台的高可用性和高安全性.经过IT部门相关专家分析讨论,决定在腾讯 ...
- TreeMap源码详解—彻底搞懂红黑树的平衡操作
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说TreeSet里面有一个TreeMap(适配器模式). Java TreeMap实现了Sorted ...
- ASP.NET Core – Partial View
前言 之前写过一篇 ASP.NET Core – View Component 里面有提到, View Component 是 Partial View 的加强版. 多了一个 .cs 可以写逻辑. 那 ...
- SpringMVC —— 入门案例执行流程
启动服务器初始化过程 1.服务器启动,执行ServletContainersInitConfig类,初始化web容器 2.执行createServletApplicationContext方法, ...
- 一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
前言 最近有不少小伙伴在问:.NET有什么值得推荐的网络通信框架?今天大姚给大家分享一个.NET开源.免费(MIT License).快速.低延迟的异步套接字服务器和客户端库:NetCoreServe ...
- ftrace的trace_options
ftrace 中的 trace_options 选项用于控制追踪数据的收集和显示方式.你可以通过 /sys/kernel/debug/tracing/trace_options 文件来设置这些选项.每 ...
- 【PyTorch】state_dict详解
这篇博客来自csdn,完全用于学习. Introduce 在pytorch中,torch.nn.Module模块中的state_dict变量存放训练过程中需要学习的权重和偏执系数,state_dict ...
- 2024年2月中国数据库排行榜:PolarDB夺魁首登顶,TiDB攀升回探花
银装素裹覆大地,春意初醒待来临.2024年2月墨天轮中国数据库流行度榜单出炉,表现最亮眼的无疑是PolarDB,其自23年7月以来一路高歌猛进,此次更是一举夺魁,彰显了云原生数据库的蓬勃发展态势,Oc ...
- iOS关于屏蔽暗黑模式小结
不想适配暗黑模式可以关闭暗黑模式:在xcode12之前的版本Info.plist文件中添加Key:User Interface Style,值类型设置为String,值为Light,就可以不管在什么模 ...
- yarn serve 开启项目服务失败 assets emit different content to the same filename
error: answer: 删除public的文件,重新 yarn serve :