全栈工程师开发手册 (作者:栾鹏)
架构系列文章
github 官方地址
https://github.com/ctripcorp/apollo
分布式部署
https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97
kubernetes部署
https://github.com/ctripcorp/apollo/blob/master/scripts/apollo-on-kubernetes/README.md
部署,先将db下面的sql 在mysql中执行,创建了database
Apollo服务端共需要两个数据库:ApolloPortalDB和ApolloConfigDB,把数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可
部署configservice
部署admin
部署portal
注意:记得修改模块连接mysql的账号密码
模块说明
程序接口名称及功能说明
名称 | 功能说明 | 接口服务对象 |
Portal | 提供Web界面供用户管理配置 | 配置管理员 |
Admin Service | 提供配置管理接口 | Portal |
Config Service | 提供配置获取接口 | Apollo客户端程序 |
Eureka | Config Service和Admin Service会向Eureka注册服务,并保持心跳 | Config和Admin |
Meta Server | Meta Server从Eureka获取Config Service和Admin Service的服务信息 | Portal和Client |
Meta Server和Config Service是在一个JVM进程中
Eureka和Config Service是在一个JVM进程中
部署分布说明
Portal
单独使用ApolloPortalDB
库,可以独立部署Config Service
和Admin Service
共用ApolloConfigDB
库,建议部署至同一台服务器。Portal
部署在生产环境的机房,通过它来直接管理FAT、UAT、PRO等环境的配置Config Service
和Admin Service
在每个环境都独立部署,使用独立的数据库(提供给相对应环境的客户端程序调用配置接口)
默认支持环境说明
名称 | 说明 |
DEV | 开发环境 |
FAT | 测试环境,相当于alpha环境(功能测试) |
UAT | 集成环境,相当于beta环境(回归测试) |
PRO | 生产环境 |
web操作
打开 service-apollo-portal-server的service地址106.12.25.204:8070
账号/密码:apollo/admin
创建项目以后,新增配置,发布,就可以了
python 客户端接入
参考: github官方http接入地址
1.3.1 Http接口说明
URL: {config_server_url}/configs/{appId}/{clusterName}/{namespaceName}?releaseKey={releaseKey}&ip={clientIp}
Method: GET
1.3.2 Http接口返回格式
该Http接口返回的是JSON格式、UTF-8编码。
如果配置没有变化(传入的releaseKey和服务端的相等),则返回HttpStatus 304,response body为空。
如果配置有变化,则会返回HttpStatus 200,response body为对应namespace的meta信息以及其中所有的配置项。
返回内容Sample如下:
{
"appId": "100004458",
"cluster": "default",
"namespaceName": "application",
"configurations": {
"portal.elastic.document.type":"biz",
"portal.elastic.cluster.name":"hermes-es-fws"
},
"releaseKey": "20170430092936-dee2d58e74515ff3"
}