配置中心化

配置中心化

现实场景

传统应用打包部署, 会在不同的环境配置不同的包, 如Local环境, Dev环境, 测试环境, UAT环境, 生产环境分别制作不同的发布包,

每个包里环境特定配置.每一次部署都要修改配置文件, 提交审核代码, 才能打包, 非常的不方便. 相信很多朋友和我一样碰到过这种问题. 如果是共用环境, 由于环境问题, 经常会导致一个甚至多个team成员处于pending状态.

痛点:

1.配置散乱格式不统一

有的用properties, 有的用xml 或 yml 等, 还有存在DB里, 团队倾向自己造轮子, 反正是五花八门

2.主要采用本地静态文件, 配置修改麻烦

配置修改一般需要经过一个较长的测试发布周期, 在分布式环境下, 当服务实例很多的时候, 修改配置费时费力

3.容易引发生产事故

在发布的时候将测试环境配置带到生产上,这种示例屡见不鲜.

4.配置缺乏安全审计和版本控制

谁改的配置? 改了什么? 什么时候改的? 天哪谁知道改了配置影响别人的什么服务? 出了问题及时回滚吧.

由此分布式配置中心应运而生, 现在市面上开源的配置中心有

1.Spring出品: Spring-cloud/Spring-cloud-config

https://github.com/spring-cloud/spring-cloud-config

2.蚂蚁金服专家发起:Disconf https://github.com/knightliao/disconf

3.携程出品: Apollo https://github.com/ctripcorp/apollo/

今天和大家聊的是第三个由上海携程出品的开源分布式配置中心Apollo, 名字非常的高大上叫阿波罗(让人联想起了美国登月计划)

从github的Star上可以判断,受用户关注度远超前两个, 达到了1.7W+颗星, 并且还在快速的增长. https://starcharts.herokuapp.com/ctripcorp/apollo

随着应用程序配置日益增多复杂, 各种功能开关, 参数配置, 服务器地址等对于应用配置的期望也越来越高, 配置修改后实施生效, 灰度发布, 分环境, 分集群管理, 完善权限机制, 审核机制等.在这样的大背景下,传统的静态配置文件,数据库等方式已经越来越无法满足配置管理的需求.

Apollo的亮点

1. configService

提供配置获取接口

提供配置推送接口

服务于Apollo客户端

2.AdminService

提供配置管理接口

提供配置修改发布接口

无语管理界面Portal

3.Client

为应用获取配置,支持实时更新

通过MetaServer获取ConfigService服务列表

使用客户端软负载 SLB方式调用ConfigService

4.Portal

配置管理界面

通过MetaServer获取AdminService的服务列表

使用客户端软负载SLB方式调用AdminService

三个辅助服务模块

1.Eureka

用于服务发现和注册

Config/AdminService注册实例并定期汇报心跳

和ConfigService住在一起部署

2.MetaServer

Portal通过域名访问MetaServer获取AdminService的地址列表

Client通过域名访问MeT啊Server获取ConfigService地址列表

逻辑角色和ConfigService在一起部署

3.NginxLB

和域名系统配合,协助Portal访问MetaServer获取AdminService地址列表

和域名系统配合,协助Client访问MetaServer获取ConfigService地址列表

和域名系统配合,协助用户访问Portal进行配置管理

有些概念不是一下子就能明白的, 需要在实际项目中遇见后才会思考这类问题如何去解决, Apollo给了我们一个很好的方案

功能特性:

1. 静态配置管理

2. 动态配置管理

3. 统一管理,不同环境不同配置

4. 配置缓存

5. 配置校验

6. 配置生效时效

7. 配置更新推送

8.配置定时拉取

9.用户权限管理

10. 授权, 审计,审核

11. 配置版本管理

12. 配置合规检测

13. 实例配置监控

14. 灰度发布

15. 告警通知

16. 依赖关系

Demo环境:

http://106.12.25.204:8070/ 账号/密码:apollo/admin

参考文献:

https://blog.csdn.net/z960339491/article/details/80667559

本文分享自微信公众号 - 测试工程师成长之道(louiezhou001),作者:Louiezhou

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 实用的Mac命令行工具

    iTerm2 - 免费的终端工具,直接替代自带的 Terminal,有非常多惊人的特性。

    louiezhou001
  • Postman使用技巧3

    在用postman接口测试过程中,如何判断一个接口是正确的呢,是返回不报错就是正确的?

    louiezhou001
  • 统计代码测试覆盖率-Python

    衡量Unit Test(单元测试)是否充分, 覆盖率是一个必要指标, 是检验单元测试的重要依据, 这里针对python unittest 的单元测试覆盖率cov...

    louiezhou001
  • 自己写分布式配置中心(上篇)- 单机模式

    来源:http://wuwenliang.net/2018/12/05/%E8%87%AA%E5%B7%B1%E5%86%99%E5%88%86%E5%B8%8...

    程序猿DD
  • springcloud学习手册-Config 分布式配置中心

    导读 | Config分布式配置中心 ? 一、为什么需要使用配置中心来统一管理配置呢? 通常在一个分布式环境中,同类型的、不同类型的服务往往多达几个...

    程序源代码
  • 5.16.2-如何在CDH中安装ElasticSearch

    1.将csd文件ELK-YX-20200617-1.0-SNAPSHOT.jar放置在cloudera-scm-server服务的csd目录下

    Fayson
  • 如何利用配置中心规范构建PaaS服务配置

    在上一篇文章中,我们以MQ和ACM为例,讨论了如何借助配置中心对消息进行限流管理的场景。在本文中,我们继续以该场景为例,讲述如何以规范的配置命名格式来进行限流设...

    用户1263954
  • 如何干掉开发人员——0代码开发

    视察也就罢了,你察你的,我干我的,只要不搞幺蛾子咱还是好朋友。然鹅,临下班了,业务小姐姐来了,她目光炯炯深情款款地向我走来了。

    yuanyi928
  • Apollo 配置中心详解

    Apollo 配置中心产生背景 大多情况下程序随着功能的复杂,程序的配置也会增多:包括各种功能的开关、参数的配置、服务器的地址配置等等,同时开发人员对程序配置的...

    CSDN技术头条
  • 玩转OpenFeign-续集

    上一篇《玩转OpenFeign》介绍了OpenFeign的一些常用配置,不过还漏了点内容。

    Java艺术

扫码关注云+社区

领取腾讯云代金券