在分布式系统中,要改个配置涉及到不少个系统,一个一个改效率低下,吃力不讨好。用配置中心能够解决这个问题。固然配置中心有很多,如下对比的表格是照搬Apollo Wiki的。mysql
功能点 | Apollo | Spring Cloud Config | 备注 |
---|---|---|---|
配置界面 | 一个界面管理不一样环境、不一样集群配置 | 无,须要经过git操做 | |
配置生效时间 | 实时 | 重启生效,或手动refresh生效 | Spring Cloud Config须要经过Git webhook,加上额外的消息队列才能支持实时生效 |
版本管理 | 界面上直接提供发布历史和回滚按钮 | 无,须要经过git操做 | |
灰度发布 | 支持 | 不支持 | |
受权、审核、审计 | 界面上直接支持,并且支持修改、发布权限分离 | 须要经过git仓库设置,且不支持修改、发布权限分离 | |
实例配置监控 | 能够方便的看到当前哪些客户端在使用哪些配置 | 不支持 | |
配置获取性能 | 快,经过数据库访问,还有缓存支持 | 较慢,须要从git clone repository,而后从文件系统读取 | |
客户端支持 | 原生支持全部Java和.Net应用,提供API支持其它语言应用,同时也支持Spring annotation获取配置 | 支持Spring应用,提供annotation获取配置 | Apollo的适用范围更广一些 |
本文采用了Apollo,然而Apollo的没有爽一点的docker镜像,因此本身写了一个docker hub、githubgit
docker run chenchuxin/apollo adminservice.jar
docker run \ -e spring_datasource_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8 \ -e spring_datasource_username=ccx \ chenchuxin/apollo
docker run \ -e spring_datasource_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8 \ -e spring_datasource_username=root \ -e spring_datasource_password=xxx \ -e server.port=8080 \ -e logging.file=/opt/logs/configservice.log \ -v /opt/logs:/var/log/apollo \ --network host \ --restart always \ --name apollo_configservice \ chenchuxin/apollo \ configservice.jar
docker-compose up -d
portal设置meta_server的时候,不要用环境变量设置,在运行参数用-D
设置,如github
docker run chenchuxin/apollo -Ddev_meta=http://localhost:8080 portal.jar