开源配置中心
spring-cloud/spring-cloud-config
spring出品,可以和spring cloud无缝配合淘宝 diamond
已经不维护disconf
java开发,蚂蚁金服技术专家发起,业界使用广泛ctrip apollo
Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,具备规范的权限、流程治理等特性。
配置中心对别
功能特性
我们先从功能层面来对别
技术路线兼容性
引入配置中心,需要考虑和现有项目的兼容性,以及是否引入额外的第三方组件。我们的java项目以SpringBoot为主,需要重点关注springboot支持性。
可用性与易用性
引入配置中心后,所有的应用都需要依赖配置中心,因此可用性需要重点关注,另外管理的易用性也需要关注。
最终选择
- 支持不同环境(开发、测试、生产)、不同集群
- 完善的管理系统,权限管理、发布审核、操作审计
- SpringBoot集成友好 ,较小的迁移成本
- 配置修改实时生效(热发布)
- 版本发布管理
综上,ctrip applo是较好的选择方案,最终选择applo。
1、Apollo简介
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。
Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。
具体参见git:https://github.com/ctripcorp/apollo
2、Apollo编译适配自己的注册中心
Apollo项目中内置了Eureka注册中心,如果我们想使用自己外部独立的注册中心,就要把Apollo项目中的Eureka剥离。
1、下载源代码,地址https://github.com/ctripcorp/apollo,下载后导入到编辑工具中。
2、导入数据库文件,数据库文件在源码srcripts/sql
下,两个SQL文件,apolloconfigdb.sql
和apolloportaldb.sql
。MySQL版本需要在5.7以上。
3、修改源代码。
(1)、apollo-configservice工程修改
1.ConfigServiceApplication类的@EnableEurekaServer注解改成@EnableEurekaClient
2.bootstrap.yml中的eureka.client.serviceUrl.defaultZone配置为独立的Eureka Server的地址
(2)、apollo-adminservice工程修改
1.bootstrap.yml中的eureka.client.serviceUrl.defaultZone配置为独立的Eureka Server的地址
(3)、eureka-server工程修改
1.把apollo-configservice工程中com.ctrip.framework.apollo.metaservice下的相关类移到
eureka-server工程下面,并解决相关的编译问题。
2.pom.xml引入apollo-core依赖,如:
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-core</artifactId>
<version>RELEASE/version>
</dependency>
3.application.yml中的eureka.client.fetchRegistry要设为true
4.将apollo-portal
模块下的apollo-env.properties
中dev.meta
或其他环境地址修改为configservice
对应地址
local.meta=http://localhost:8080
dev.meta=http://localhost:8080
fat.meta=http://localhost:8080
uat.meta=http://localhost:8080
lpt.meta=http://localhost:8080
pro.meta=http://localhost:8080
dev.meta=hhttp://localhost:8080
5.打包
运行项目根目录scripts
下 build.bat
或build.sh
,执行maven打包命令,打好的jar包在相应模块target目录下。
6.修改数据库
将apolloconfigdb
serverconfig
表的eureka.service.url
的value
值改为自己的eureka服务地址,如http://localhost:8761/eureka/
将apolloportaldb serverconifg
表的apollo.portal.envs
的value
指改为第三步的对应的地址,如:dev
,如果有多个环境用逗号分隔。
7.运行
分别将Apollo-configservice、Apollo-adminservice、Apollo-Portal模块下target中的zip包拷贝出来,解压后,修改里面配置文件的信息application-github.properties、apollo-env.properties,包括数据库连接信息、环境信息。如:
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = root
local.meta=http://localhost:8080
dev.meta=http://localhost:8080
fat.meta=http://localhost:8080
uat.meta=http://localhost:8080
lpt.meta=http://localhost:8080
pro.meta=http://localhost:8080
然后依次在configservice、adminservice、portal下的scripts目录中运行startup.sh。启动无误后,查看注册中心eureka:
说明已经注册到我们自己的eureka中。
再次访问配置中心Apollohttp://localhost:8070/,输入用户名密码apollo/admin,进入potrtal管理页面:
至此,配置中心服务端改造以及搭建基本完成,下一篇介绍配置中心客户端的使用,包括配置获取、配置同步、更新、以及配置管理等。