服务端主流中间件之Apollo配置中心

6 篇文章 0 订阅
6 篇文章 0 订阅

配置对于程序而言是必不可少的,它提供我们可以动态修改程序运行能力。引用别人的一句话就是“系统运行时(runtime)飞行姿态的动态调整!”

配置分为静态配置和动态配置。静态配置是在程序启动前配好,启动时一次性生效,在程序运行期不会变化的配置。静态配置主要通过配置文件实现,比如.ini文件、.xml文件、.properties文件等。一般程序运行环境、性能参数等会采用静态配置。动态配置是在程序的运行期可以根据需要动态调整的配置,比如功能开关、业务参数、运行参数等。动态配置更新后,需要程序在不停止运行情况下,热加载新配置并及时生效。

服务端配置中心主要解决分布式服务的动态配置管理问题。常用中间件有Spring Cloud Config、百度的Disconf、携程的Apollo、奇虎360的QConf等。其中携程的Apollo目前在国内开发者社区比较热(Github上有超过20k颗星),并被国内众多互联网公司采用,成为目前配置中心领域首选的中间件。

除这些专业做配置中心的中间件外,有些项目可能会使用服务注册中心产品来做配置管理,比如zookeeper、etcd。服务注册中心和配置中心的核心架构都是订阅&发布通知模式,但是配置中心领域还是有其特有的功能要求,比如统一的配置管理界操作界面,分环境配置,权限和审核机制,灰度发布,版本控制等。所以专业的事还是应该选择专业的中间件。也有一些中间件会集成服务注册和配置中心的功能特性,比如阿里的nacos。可以根据实际业务场景择优选用。

 

Apollo配置中心

Apollo是携程框架部门研发的开源配置管理中心,能够集中管理应用在不同环境、不同集群的配置,配置修改后能够实时的推送到应用端,并且有关于权限管理、流程治理等功能。

Apollo为互联网服务端分布式应用量身打造,支持四个维度来管理key-value格式的配置:

  • application:应用级别。

  • environment:环境级别。统一应用在不同环境下可以有不同的配置,比如DEV(开发环境)、UAT(预发环境)、PRO(生产环境)。

  • cluster:集群级别。同一环境可以分不同集群进行配置。

  • namespace:命名空间。不同的配置文件,比如application的配置,ad的配置等等。

Apollo有四个核心模块:ConfigService、AdminService、Client、Portal。整体架构如下图所示。服务端模块应用时使用Client和ConfigService建立长连接,通过推拉结合(push & pull)的模式,实现配置实时更新的同时,保证配置更新不丢失。Portal提供配置管理界面,通过调用AdminService对配置进行修改和发布。

 

在部署时,不同环境(DEV/UAT/PRO等)需要分别部署一套ConfigService、AdminService和ApolloConfigDB。但是Portal可以只部署一套,Apollo支持用一套Portal集中管理不同环境中的配置。Portal和Client通过Eureka来发现ConfigService、AdminService的部署地址和端口。Eureka原生只支持Java客户端,MetaServer相对于是Eureka的Proxy,来支持其他语言。下图是一套完整的Apollo部署方案。

 

Apollo实操体验

可以参考这个链接 https://github.com/ctripcorp/apollo/wiki/Quick-Start 快速搭建本地Apollo环境,体验官方自带的客户端工具。下图是一个简单的Java客户端Demo代码。

 

更多demo可以查看Apollo源码:https://github.com/ctripcorp/apollo/tree/master/apollo-demo。

 

- 完 -

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值