2018-10-09
Apollo基础(一)
[TOC]
1.概念
配置中心,实时监听最新配置列表,动态添加配置
实时生效/灰度发布/分环境/分集群管理配置/完善权限/本地离线等
本地离线
- Mac/Linux: /opt/data/{appId}/config-cache
- Windows: C:\opt\data{appId}\config-cache
本地配置文件会以下面的文件名格式放置于本地缓存路径下:
{appId}+{cluster}+{namespace}.properties
支持四个维度管理的kv配置:
- application(应用)
- env(环境)
- cluster(集群)
- namespace(命名空间)
1-2.配置的基本概念
独立于程序的只读变量
配置伴随应用的整个生命周期
配置可以有多种加载方式:
- hard code
- 配置文件
- 环境变量
- 启动参数
- 基于数据库等
配置治理:
- 权限控制
- 不同的环境/集群配置管理
- 框架类组件配置管理
2.组成
四个核心模块(功能相关),三个辅助模块(辅助服务发现的模块)
———————————-[核心功能模块]————————————
2-1.ConfigService
提供配置获取接口
提供配置推送接口
服务于Apollo客户端
2-2.AdminService
提供配置管理接口
提供配置修改发布接口
服务于管理界面Portal
2-3.Client
为应用获取配置,支持实时更新
通过MetaServer获取ConfigService的服务列表
使用客户端软负载SLB方式调用ConfigService
2-4.Portal
配置管理界面
通过MetServer获取AdminService列表
使用客户端软辅在SLB方式调用AdminSerivce
———————————–[辅助服务发现模块]————————————
2-5.Eureka
用于服务注册和发现,
ConfigService/AdminService注册实例并定期报心跳
和ConfigService在一起部署
2-6.MetaServer
Portal通过域名访问MetaServer获取AdminService服务列表
Client通过域名访问MetaServer获取ConfigService服务地址
相当于Eureka Proxy
2-7.NginxLB
和域名系统配合,协助Portal访问MetaServer,获取AdminService列表
和域名系统配合,协助client访问MetaServer,获取ConfigService列表
架构图
3.Apollo使用指南
https://github.com/ctripcorp/apollo/wiki/Apollo%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97
4.API接入管理(Protal)
5.接入使用(Client)
5-1.常用方案:
引入依赖
1 | maven |
在properties中配置命名空间等即可使用(当做在线properties即可)
1 | app.id=apollo-id |
5-2.方案二
Bean的形式注入到Spring中(该场景使用不多)(支持注解/XML等形式)
配置类
1 | public class RedissonSingleConfig { |
Bean注入类
1 |
|
通过上面的拉取和注入即可将Apollo的配置注入到Spring中使用,更多内容可参考官网java接入指南
5-3.方案三
动态切换数据库
Hikaricp官网(动态切换jar包)
http://brettwooldridge.github.io/HikariCP/
6.Apollo使用
创建项目
创建配置空间(private/public)
私有空间是本项目使用,
公共空间是通用空间,其他项目都可以使用
注意:
公共空间使用时建议关联一个新副本,该副本改动的配置属性为覆盖效果,可覆盖公共空间的部分配置
优秀分析传送门:
https://mp.weixin.qq.com/s/-hUaQPzfsl9Lm3IqQW3VDQ