新一代开源配置中心携程Apollo详解
时间:2022-07-24
本文章向大家介绍新一代开源配置中心携程Apollo详解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
出于针对线上基于配置文件做配置管理太过于老派和不便于现在自动化管理和微服务化管理,运维部门需要根据不同产品统一使用配置管理中心软件,来达到统一配置中心化的目的,来加速自动化的进程,现基于开源产品调研了携程的Apollo分析如下。
总体感觉 Apollo 不是一个成熟的开源(单指没有开源经验,Server 端配置文件、Server 端部署、文档完善度有待改善),但社区活跃,可用性、稳定性不用担心。
源码地址: https://github.com/ctripcorp/apollo
基本概念
模块
- Config Service
- 提供配置获取接口
- 提供配置更新推送接口
- Admin Service
- 提供配置管理接口
- 提供配置修改、发布等接口
- Meta Server
- Meta Server 只是一个逻辑角色,可以理解为 Meta Server = Eureka
- Eureka
- Eureka 实现服务发现
- Config Service 和 Admin Service 会向 Eureka 注册服务,并保持心跳
- Eureka 和 Config Service 在一个 JVM
- Portal
- 提供 Web 界面供用户管理配置
- 通过 Meta Server(Eureka)获取 Admin Service 列表
- 在 Portal 侧做负载均衡、错误重试
- Client
- 集成在应用中
- 配置获取
- 内存缓存
- 文件缓存
模块 官方详细介绍
Namespace
- Namespace 是配置项的集合,可以理解为一个配置文件。
- application Namespace 是每个应用的默认 Namespace
- Namespace 分 public、private 两种权限,private 仅当前应用可读,public 无限制
- Namespace 类型分三种:私有类型、公共类型、关联类型(继承类型)
Namespace 官方详细介绍
Apollo 架构
配置
-
config/app.properties
不需要修改 -
config/application-github.properties
中设置数据库连接 -
scripts/startup.sh
中设置 日志、环境、端口、JVM 内存 - 日志路径需要设置
*.conf
和scripts/startup.sh
两个文件,并保持一致 -
config/apollo-env.properties
中指定各环境 apollo-configservice,仅 apollo-portal 需要配置 - apollo-configservice 和 apollo-adminservice 连接 Eureka 需要在 ApolloConfigDB 库的 serverconfig 表设置
eureka.service.url
指定 apollo-configservice - 管理员指定需要修改 ApolloPortalDB 库中的 ServerConfig 表
- 部门增删改需要修改 ApolloPortalDB 库中的 ServerConfig 表
问题
- 启动后需要一分钟左右才能工作
- 无用户管理
- 无部门管理
- 无产品概念
- 相互通讯无严格认证机制(官方建议加密存储,客户端解密,对 API 调用不友好)
- apollo-configservice 和 apollo-adminservice 的环境需要设置
-Denv=BETA
启动参数 - 日志路径需要设置
*.conf
和scripts/startup.sh
- Eureka > apollo-configservice 和 apollo-adminservice 连接 Eureka 需要在 apolloconfigdb 库的 serverconfig 表设置
eureka.service.url
指定一个 apollo-configservice
无关紧要
-
apollo-env.properties
从 apollo-core 中获得 - 只有 apollo-portal 需要
apollo-env.properties
-
application-github.properties
从 apollo-common 中获得 - apollo-configservice 与 apollo-portal 中的
application-github.properties
不一样 - 所有 properties 格式配置放到 config 载入
- apollo-configservice 端口有 Eureka 状态页
-
*-sources.jar
文件是源码,运行并不需要 - jar 包中嵌入了 shell 脚本,最终启动是运行 jar 包,
head -242 apollo-portal.jar
完整脚本
高可用
- apollo-portal 和 apollo-configservice 通过 Nginx 或其它方式负载均衡
- apollo-adminservice 会注册在 Eureka 中,通过 apollo-configservice 获取节点信息。所以 apollo-adminservice 直接运行多个实例即可。
生产架构
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 下下下一代防火墙关键技术漫谈
- Mysql事务隔离级别
- ent orm笔记1---快速尝鲜
- UsoDllLoader:一款功能强大的武器化特权文件写入工具
- 宇智波程序笔记10-为什么你使用的 Spring Security OAuth 过期了
- 无线电侧信道攻击利用复现:监听显示器显示内容
- typeScript 配置文件该怎么写?
- 内网渗透:不出网渗透技巧
- Python自学成才之路 生成器的使用
- ent orm笔记2---schema使用(上)
- 力扣1514——概率最大的路径
- Pytest之自定义mark
- 全网首发 | 通达OA多枚0day漏洞分享
- ubuntu 解压rar文件
- 基于Hive进行数仓建设的资源元数据信息统计