Apollo和分布式配置

摘要:
Apollo用户可以实时(1秒)接收最新配置,并在Apollo修改并发布配置后通知应用程序。不过,为了通用性,阿波罗不会对配置的修改做出太多限制,只要符合基本格式,就可以保存。

传统配置文件有什么缺点

如果修改了配置文件,需要重新打包发布,而且每个环境变量配置文件复杂。

分布式配置中心

将配置文件注册到配置中心平台上,可以使用分布式配置中心实时更新配置文件,统一管理,不需要重新打包发布

 后面定义的所有相关配置文件信息:除了 server port  其他的不写在本地哦

什么是分布式配置中心

项目中配置文件比较繁杂,而且不同环境的不同配置修改相对频繁,每次发布都需要对应修改配置,如果配置出现错误,需要重新打包发布,时间成本较高,因此需要做统一的分布式注册中心,能做到自动更新配置文件信息,解决以上问题

常用分布式配置中心框架

市面上常见的:

Disconf(依赖于zookpeer)、Zookpeer、diamond(阿里巴巴)、Apollo(携程)、Redis、xxl-conf

ZK的原理:保证配置文件信息实时更新(事件通知) 

大型互联网公司自己内部都有自己独立分布式配置中心

独立RPC、独立分布式各种解决方案

注册中心解决 rpc服务治理

分布式配置中心 解决分布式配置文件管理

Apollo阿波罗简介

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

Apollo阿波罗特点

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

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

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

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

用户在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还提供了打包脚本,一键就可以生成所有需要的安装包,并且支持自定义运行时参数

Apollo整体架构原理

Apollo和分布式配置第1张

官网: https://github.com/nobodyiam/apollo

原理解读:

分布式中心管理平台

  作用: 增删改查 配置

项目启动时候 连接阿波罗配置中心平台 

 项目进项扫包 获取当前包下的类 只要属性加上 @value注解  

  如果属性上加上了@Value注解 使用key(value的值)在远程服务器上面获取对应value信息

  缓存到对应的jvm

Apollo和分布式配置第2张

应用端向阿波罗服务器获取配置文件信息

阿波罗平台提供key查询配置文件信息接口

免责声明:文章转载自《Apollo和分布式配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Excel VBA语句集300127.0.0.1与host文件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

分布式锁学习一(zookeeper实现)

1.在高并发的情况下,如何高效的只允许一个线程修改一条记录 2.分布式情况下,怎么解决订单号生成不重复 为了保证一个方法或属性在高并发情况下的同一时间只能被同一个线程执行,在传统单体应用单机部署的情况下,可以使用synchronized+lock实现加锁,解决高并发问题。synchronized+lock只能锁定单机对单个jvm加锁。   成员变量 A...

php windows环境 安装 Apache-apollo + phpMQTT 实现发送 MQTT

首先安装Apache-apollo 原文链接:http://blog.csdn.net/marrn/article/details/71141122?utm_source=itdadao&utm_medium=referral 1.首先从http://activemq.apache.org/apollo/download.html官网上下载wind...

编译apollo实践

前面主要参考 手把手教你运行apollo,但这个文章里的apollo版本太低。后面主要看官方文档,在官方的apollo/docs目录下,通过typora去看。 sudo snap install typora 以前在别的公司可以通过sublime的插件去看,但这次安装了sublieme件,却没有效果。 准备工作 安装 Ubuntu 18.04.5 LTS...

一文带你了解微服务架构和设计(多图)

最近几年微服务很火,大家都在建设微服务,如果不懂点微服务相关的技术,都不好意思跟同行打招呼了,也见过身边很多人在微服务踩过很多坑,我从 16 年开始接触微服务,有多家大型企业的微服务分布式系统的架构经验,所以就打算跟大家做一期关于微服务的分享,不过微服务和涉及的分布式计算非常的复杂,绝非是一篇文章就可以讲清楚的,本文只是从最简单的概念的基本使用带你入门,...

分布式存储ShardingSphere 分布式治理 (based on zookeeper)

分布式存储-ShardingSphere 分布式治理 (based on zookeeper) 其实前面几篇,关于shardingSphere的我知道的功能点已经聊得差不多了,但是现在多节点集群部署的方式已经成为了一种趋势,而如果每个节点中的配置文件都需要手动一个个修改的话,那将为运维工作带来了很大的不愉快,所有ShardingShere内部整合了Zk,...

第十章 百度Apollo实战

1. Apollo简介 不同版本的Apollo: 1.0版本:有一个GPS和一个线控的车辆,可以有封闭场景的循迹能力 1.5版本:加入了激光雷达,软件和云服务上加入了高精地图、仿真和地图引擎 2.0版本:加入了更多感知,如毫米波雷达,黑匣子,加入了安全OTA能力,城市道路 2.5版本:加入了新的摄像头,可以做高速场景的自动驾驶 3.0版本:量产的解决方案...