前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Apollo | 可靠的分布式配置管理系统

Apollo | 可靠的分布式配置管理系统

作者头像
用户9897904
发布于 2022-07-14 10:25:30
发布于 2022-07-14 10:25:30
1.1K00
代码可运行
举报
文章被收录于专栏:PipelinePipeline
运行总次数:0
代码可运行

大家早上好啊

今天要跟大家聊聊工具配置相关的话题

我们以前大多数都是通过文件或者数据库去管理的

但是在我加入游戏行业的日子里

我经常能听到的诉求就是

你这些配置文件能不能在网页中修改

你这个配置能不能开放对应的权限的给项目组的人自己去修改等等

以前在影视行业的时候我以前公司的配置都是在gitlab中统一管理的

每次更新个配置我们都需要在gitlab上面创建新的issue

然后经过代码审查,一系列的操作之后才能更新配置

好处是稳定安全,坏处是不够敏捷

因为我们代码审查配置的时候还会受到到有时差影响

我们其他有权限合并的同事最近的在德国,其他的都在北美

今天我要向大家介绍的是携程开源的分布式的配置系统“Apollo”

对的就是那个我们经常用来买票订酒店的携程旅行

我们来看看有哪些公司或者产品用了这个系统

阿里有自研的nacos, 腾讯有自研的七彩石,百度有自研的disconf,

其他大厂应该也有诸如此类的系统我这边暂时不清楚其他的

如果有朋友知道欢迎留言~

Apollo介绍

Apollo(阿波罗)是携程框架部门研发的开源配置管理中心

能够集中化管理应用不同环境、不同集群的配置,

配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。

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

application (应用)

environment (环境)

cluster (集群)

namespace (命名空间)

Apollo的优势

正是基于配置的特殊性,所以Apollo从设计之初就立志于成为一个有治理能力的配置发布平台,目前提供了以下的特性:

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

Apollo提供了一个统一界面集中式管理不同环境(environment)、不同集群(cluster)、不同命名空间(namespace)的配置。

同一份代码部署在不同的集群,可以有不同的配置,比如zookeeper的地址等

通过命名空间(namespace)可以很方便地支持多个不同应用共享同一份配置,同时还允许应用对共享的配置进行覆盖

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

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

版本发布管理

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

灰度发布

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

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

应用和配置的管理都有完善的权限管理机制,对配置的管理还分为了编辑和发布两个环节,从而减少人为的错误。

所有的操作都有审计日志,可以方便地追踪问题

客户端配置信息监控

可以在界面上方便地看到配置在被哪些实例使用

提供Java和.Net原生客户端

提供了Java和.Net的原生客户端,方便应用集成

支持Spring Placeholder, Annotation和Spring Boot的ConfigurationProperties,方便应用使用(需要Spring 3.1.1+)

同时提供了Http接口,非Java和.Net应用也可以方便地使用

提供开放平台API

Apollo自身提供了比较完善的统一配置管理界面,支持多环境、多数据中心配置管理、权限、流程治理等特性。不过Apollo出于通用性考虑,不会对配置的修改做过多限制,只要符合基本的格式就能保存,不会针对不同的配置值进行针对性的校验,如数据库用户名、密码,Redis服务地址等

对于这类应用配置,Apollo支持应用方通过开放平台API在Apollo进行配置的修改和发布,并且具备完善的授权和权限控制

部署简单

配置中心作为基础服务,可用性要求非常高,这就要求Apollo对外部依赖尽可能地少

目前唯一的外部依赖是MySQL,所以部署非常简单,只要安装好Java和MySQL就可以让Apollo跑起来

Apollo还提供了打包脚本,一键就可以生成所有需要的安装包,并且支持自定义运行时参数

Apollo的优势还可以通过与Spring Cloud Config对比来体现出

安装Apollo

我这边是在windows机器上使用docker部署Apollo的服务

其他朋友可以选择Linux或者虚拟机都行

部署方法都差不多

通过git克隆Apollo的仓库

下面https://github.com.cnpmjs.org的前缀是一个镜像源用于克隆加速

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com.cnpmjs.org/ctripcorp/apollo.git

克隆完的结果如下

我们CD进入到apollo\scripts\docker-quick-start

执行下面docker-compose的命令,即可启动Apollo的服务了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker-compose up -d

打开浏览器并输入地址http://localhost:8070/

打开Apollo网页,输入账号apollo和密码admin登录后,您将进入以下页面。

点击创建项目去创建新的项目配置

项目创建好了后我们就能看到对应的配置面板了

在页面的右上角我们可以创建新的配置

左下角的namespace是可以创建新的属性的命名空间

比如我现在就创建一个新的命名空间

设置完成后就会跳转到权限的控制

我们可以根据我们具体的需要去设置相关的权限管理

点击回到项目

我们就可以看到新添加的命名空间已经出现在页面中了

我们可以点击新增配置去添加新的配置参数

添加完成后

大家能看到页面上显示这配置未发布

我们可以点击发布按钮去发布我们的新配置

我们可以在comment中写上我们这次的相关描述

方便我们未来的数据回滚

安装和创建配置就介绍到这里了,

更加详细的使用需要大家去看看官方文档

因为是国内的开源项目而且使用的公司还挺多的

所有参考和学习资料很多,哔哩哔哩上面就有不少相关视频大家可以去看看

使用Apollo

下面我就通过一个简单的例子来演示apollo的用法

老规矩,先通过pipz安装Apollo的客户端

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rez env pipz -- install apollo_client

安装好了之后

通过 rez env maya-2022 apollo_client -- maya

打开maya去测试我们的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pyapollo.apollo_client import ApolloClient
import pymel.core as pm

client = ApolloClient(app_id="project_a-cfg")
resolution = client.get_value("resolution",  namespace="TEST1.render")
width, height = resolution.split("x")
pm.SCENE.defaultResolution.width.set(int(width))
pm.SCENE.defaultResolution.height.set(int(height))
print(f"Set width >> {width}; height >> {height}")

这Apollo的配置服务除了用到我们制作环节的工具链中

其实也可以运行到游戏的配置热更新中,响应速度很快

好了今天的分享就到这里

希望对你们未来的工具配置有一些启发

欢迎大佬们帮忙点赞转发,感谢~

我们下次再见

欢迎留言与我们分享你们公司用过的工具配置的相关解决方案

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Pipeline 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于Linux搭建开源配置管理中心apollo
Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
星哥玩云
2022/05/28
1.1K0
基于Linux搭建开源配置管理中心apollo
springcloud学习手册-市面主流分布式配置中心框架汇总
导读 | 本节主要是汇总一下,目前市面上主流应用的一些分布式配置中心框架。重点介绍下这4个框架,它们分别是: Apollo(携程 阿波罗) 、Spingcloud Config (springcloud)、Disconf (百度)、Diamod (阿里) 1 Apollo(阿波罗) https://github.com/ctripcorp/apollo Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并
程序源代码
2018/03/09
1.3K0
springcloud学习手册-市面主流分布式配置中心框架汇总
分布式配置中心选型,为什么选择Apollo?
关于配置的常规方案是将配置信息抽离写入 xml、properties文件中,然后随着应用一块打包发布。如果有开发、测试、预发、生产等多套环境,则通过配置各自独立的文件以区分不同的环境。具备一定的扩展性,但每次配置参数变更都要重新发布应用,灵活性较差。
微观技术
2021/04/30
1.3K1
分布式配置中心选型,为什么选择Apollo?
初探Apollo远程服务配置中心
Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
闫同学
2023/10/14
4210
开源 | 携程Apollo配置中心
作者简介 宋顺,携程框架研发部技术专家。2016年初加入携程,主要负责中间件产品的相关研发工作。毕业于复旦大学软件工程系,曾就职于大众点评,担任后台系统技术负责人。 随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址…… 对程序配置的期望值也越来越高:配置修改后实时生效,分环境、分集群管理配置,完善的权限、审核机制…… 在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。 Apollo配置中心应运而生! Apollo(阿波罗)是携
携程技术
2018/03/16
1.4K0
开源 | 携程Apollo配置中心
干货 | 携程开源配置中心Apollo的设计与实现
作者简介 宋顺,携程框架研发部技术专家。2016年初加入携程,主要负责中间件产品的相关研发工作。毕业于复旦大学软件工程系,曾就职于大众点评,担任后台系统技术负责人。 1、What is Apollo 1.1 背景 随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址…… 对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制…… 在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。 A
携程技术
2018/03/16
3.4K0
干货 | 携程开源配置中心Apollo的设计与实现
Apollo中间件技术:从入门到精通
在Java开发的微服务架构中,配置管理是一个不可或缺的重要环节。随着服务数量的增加和部署环境的复杂化,传统的手动配置管理方式已难以满足需求。Apollo作为一款开源的分布式配置中心,凭借其强大的功能和灵活的架构,成为了众多Java开发者的首选。本文将带你全面了解Apollo中间件技术,从入门到精通,让你轻松掌握Apollo的使用。
小马哥学JAVA
2024/12/28
3580
开源配置中心Apollo + SpringCloud生产环境搭建
本人的linux 已经装好了mysql 并且允许远程配置(linux MySQL与 windows 远程通信连接! )
Java_慈祥
2024/08/06
2230
开源配置中心Apollo + SpringCloud生产环境搭建
分布式配置中心之Apollo实战
微服务架构下,服务的数量视项目的规模大小而定,但数量肯定最少有十几二十个,这些微服务有时候共用一些配置,修改一个配置,这诸多服务都要跟着一起改。任务繁多,而且容易出错。
行百里er
2021/07/14
1.6K0
Apollo 配置中心详解
Apollo 配置中心产生背景 大多情况下程序随着功能的复杂,程序的配置也会增多:包括各种功能的开关、参数的配置、服务器的地址配置等等,同时开发人员对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制…… 在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。Apollo 配置中心应运而生! Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送
CSDN技术头条
2018/04/18
6.9K0
Apollo 配置中心详解
分布式配置中心apollo是什么?分布式配置中心apollo有什么特点?
随着程序技术的日益提高和程序功能的日益复杂,目前程序的配置也在逐步提高,出现了各种功能的开关和参数配置等,但还需要不断对程序进行更高的配置,这样才能够适应飞速发展的经济和网络技术,也因而出现了分布式配置中心,分布式配置中心作为一种全新的配置,拥有很多全新的功能,下面为大家简单介绍分布式配置中心apollo是什么以及分布式配置中心apollo有什么特点。
用户8715145
2021/10/15
1.8K0
快速学习-Apollo配置中心搭建
Apollo (阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
cwl_java
2020/07/16
3.2K0
微服务架构中配置中心的选择,Apollo值得拥有
目前公司内部微服务架构基础设施建设中,技术选型以Spring Cloud技术为主,也被大家俗称作“全家桶”。
肉眼品世界
2021/01/25
1.6K0
微服务架构中配置中心的选择,Apollo值得拥有
携程开源项目——Apollo的设计与实现
内容来源:2017 年 7 月 22 日,携程框架研发部技术专家宋顺在“携程技术沙龙 | 海量互联网基础架构”进行《携程开源配置中心Apollo的设计与实现》演讲分享。IT 大咖说作为独家视频合作方,经主办方和讲者审阅授权发布。 阅读字数:2580 | 7分钟阅读 摘要 随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址。对程序配置的期望值也越来越高:配置修改后实时生效,分环境、分集群管理配置,完善的权限、审核机制。在这样的大环境下,传统的通过配置文件、数据库等方式已
IT大咖说
2018/04/24
1.7K0
携程开源项目——Apollo的设计与实现
微服务中集成分布式配置中心 Apollo
随着业务的发展、微服务架构的升级,服务的数量、程序的配置日益增多(各种微服务、各种服务器地址、各种参数),传统的配置文件方式和数据库的方式已无法满足开发人员对配置管理的要求:配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制。分布式环境下,这些配置更加复杂。
aoho求索
2019/06/02
8750
快速学习-Apollo从入门到精通
Apollo (阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
cwl_java
2020/08/04
1.6K0
快速学习-Apollo从入门到精通
(很全面)SpringBoot 集成 Apollo 配置中心
. 六、Kubernetes 的 SpringBoot 应用使用 Apollo 配置中心
JAVA葵花宝典
2020/03/31
18.3K0
(很全面)SpringBoot 集成 Apollo 配置中心
Apollo,真香!
今天深入聊一聊携程开源的一款分布式配置中心Apollo,在功能上和Nacos不相上下。
码猿技术专栏
2024/01/09
4020
Apollo,真香!
携程一面分布式配置系统Apollo是如何实时更新配置的?
记得我们那时候刚开始学习Java的时候都只是一个单体项目,项目里面的配置基本都是写在项目里面的properties文件中,比如数据库配置啥的,各种逻辑开关,一旦这些配置修改了,还需要重启项目这修改才会生效。随着各种微服务的诞生,服务的拆分也越来越细,可能涉及的服务成千上百,服务基本也是集群部署,这样再去一个一个项目修改配置,然后重启这显然是行不通的。所以分布式配置中心就诞生了,现在开源的分布式配置中心也挺多的比如:开源分布式配置中心有很多,比如spring-cloud/spring-cloud-config、淘宝/diamond、百度/disconf、携程/apollo、netflix/archaius、Qconf、XDiamond、nacos等等。我们是不是很好奇配置中心如何做到实时更新并且通知到客户端的这也是一个面试中经常会问到的题目。下面我们就以apollo为例吧去分析分析它是如何实现的。为什么选择Apollo来分析列?因为现在的公司就在使用它作为配置中心。虽然Apollo是携程开源的,但是携程内部也不用它。
java金融
2021/11/19
9670
携程一面分布式配置系统Apollo是如何实时更新配置的?
开源配置管理中心apollo使用方法
Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
星哥玩云
2022/05/28
2.3K0
开源配置管理中心apollo使用方法
相关推荐
基于Linux搭建开源配置管理中心apollo
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验