前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >新一代开源配置中心携程Apollo详解

新一代开源配置中心携程Apollo详解

作者头像
后场技术
发布2020-09-03 15:22:05
1.2K0
发布2020-09-03 15:22:05
举报
文章被收录于专栏:后场技术

出于针对线上基于配置文件做配置管理太过于老派和不便于现在自动化管理和微服务化管理,运维部门需要根据不同产品统一使用配置管理中心软件,来达到统一配置中心化的目的,来加速自动化的进程,现基于开源产品调研了携程的Apollo分析如下。

总体感觉 Apollo 不是一个成熟的开源(单指没有开源经验,Server 端配置文件、Server 端部署、文档完善度有待改善),但社区活跃,可用性、稳定性不用担心。

源码地址: https://github.com/ctripcorp/apollo

基本概念

模块
  1. Config Service
    • 提供配置获取接口
    • 提供配置更新推送接口
  2. Admin Service
    • 提供配置管理接口
    • 提供配置修改、发布等接口
  3. Meta Server
    • Meta Server 只是一个逻辑角色,可以理解为 Meta Server = Eureka
  4. Eureka
    • Eureka 实现服务发现
    • Config Service 和 Admin Service 会向 Eureka 注册服务,并保持心跳
    • Eureka 和 Config Service 在一个 JVM
  5. Portal
    • 提供 Web 界面供用户管理配置
    • 通过 Meta Server(Eureka)获取 Admin Service 列表
    • 在 Portal 侧做负载均衡、错误重试
  6. Client
    • 集成在应用中
    • 配置获取
    • 内存缓存
    • 文件缓存

模块 官方详细介绍

Namespace
  1. Namespace 是配置项的集合,可以理解为一个配置文件。
  2. application Namespace 是每个应用的默认 Namespace
  3. Namespace 分 public、private 两种权限,private 仅当前应用可读,public 无限制
  4. Namespace 类型分三种:私有类型、公共类型、关联类型(继承类型)

Namespace 官方详细介绍

Apollo 架构

配置

  1. config/app.properties 不需要修改
  2. config/application-github.properties 中设置数据库连接
  3. scripts/startup.sh 中设置 日志、环境、端口、JVM 内存
  4. 日志路径需要设置 *.conf 和 scripts/startup.sh 两个文件,并保持一致
  5. config/apollo-env.properties 中指定各环境 apollo-configservice,仅 apollo-portal 需要配置
  6. apollo-configservice 和 apollo-adminservice 连接 Eureka 需要在 ApolloConfigDB 库的 serverconfig 表设置 eureka.service.url 指定 apollo-configservice
  7. 管理员指定需要修改 ApolloPortalDB 库中的 ServerConfig 表
  8. 部门增删改需要修改 ApolloPortalDB 库中的 ServerConfig 表

问题

  1. 启动后需要一分钟左右才能工作
  2. 无用户管理
  3. 无部门管理
  4. 无产品概念
  5. 相互通讯无严格认证机制(官方建议加密存储,客户端解密,对 API 调用不友好)
  6. apollo-configservice 和 apollo-adminservice 的环境需要设置 -Denv=BETA 启动参数
  7. 日志路径需要设置 *.conf 和 scripts/startup.sh
  8. Eureka > apollo-configservice 和 apollo-adminservice 连接 Eureka 需要在 apolloconfigdb 库的 serverconfig 表设置 eureka.service.url 指定一个 apollo-configservice

无关紧要

  1. apollo-env.properties 从 apollo-core 中获得
  2. 只有 apollo-portal 需要 apollo-env.properties
  3. application-github.properties 从 apollo-common 中获得
  4. apollo-configservice 与 apollo-portal 中的 application-github.properties 不一样
  5. 所有 properties 格式配置放到 config 载入
  6. apollo-configservice 端口有 Eureka 状态页
  7. *-sources.jar 文件是源码,运行并不需要
  8. jar 包中嵌入了 shell 脚本,最终启动是运行 jar 包,head -242 apollo-portal.jar 完整脚本

高可用

  1. apollo-portal 和 apollo-configservice 通过 Nginx 或其它方式负载均衡
  2. apollo-adminservice 会注册在 Eureka 中,通过 apollo-configservice 获取节点信息。所以 apollo-adminservice 直接运行多个实例即可。

生产架构

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

本文分享自 后场技术 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本概念
    • 模块
      • Namespace
      • Apollo 架构
      • 配置
      • 问题
      • 无关紧要
      • 高可用
      • 生产架构
      相关产品与服务
      负载均衡
      负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档