SpringBoot整合Apollo配置中心快速入门

Apollo简介:
Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

Apollo支持4个维度管理Key-Value格式的配置:
1.application (应用)
2.environment (环境)
3.cluster (集群)
4.namespace (命名空间)

同时,Apollo基于开源模式开发,开源地址:https://github.com/ctripcorp/apollo

Apollo下载:
方式一:
clone源码:git clone https://github.com/ctripcorp/apollo
方式二:
下载安装包:https://github.com/ctripcorp/apollo/releases

创建数据库:
数据库版本要求:5.6.5+;
查看数据库版本:

SHOW VARIABLES WHERE Variable_name = 'version';

Apollo源码中自带sql脚本:
ApolloConfigDB 所在目录:\apollo\scripts\db\migration\configdb
ApolloPortalDB 所在目录:\apollo\scripts\db\migration\portaldb
创建以上2个数据库并初始化;

Apollo配置修改:
找到 scripts/build.bat文件,修改数据库密码(默认为空):

rem apollo config db info
set apollo_config_db_url="jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8"
set apollo_config_db_username="root"
set apollo_config_db_password=""

rem apollo portal db info
set apollo_portal_db_url="jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8"
set apollo_portal_db_username="root"
set apollo_portal_db_password=""

打包运行:
修改完上面的配置信息后,双击scripts/build.bat进行批量打包(等同于maven的package)
打完包以后依次启动:apollo-configservice(配置服务)、apollo-adminservice(客户端服务)、apollo-portal(Apollo UI界面)

java -jar apollo-configservice-2.0.0-SNAPSHOT.jar
java -jar apollo-adminservice-2.0.0-SNAPSHOT.jar
java -jar apollo-portal-2.0.0-SNAPSHOT.jar

启动成功后访问:
http://localhost:8090/ admin客户端
http://localhost:8080/ 如果出现eureka 的管理界面,说明服务启动正常。
SpringBoot整合Apollo配置中心快速入门_第1张图片

Apollo UI 界面:http://localhost:8070/
用户名/密码:apollo/admin; 在这里边配置namespace和property
SpringBoot整合Apollo配置中心快速入门_第2张图片
SpringBoot整合Apollo:
引入依赖:

 <dependency>
	<groupId>com.ctrip.framework.apollo</groupId>
	<artifactId>apollo-client</artifactId>
	<version>1.9.0</version>
 </dependency>

配置文件:
application.properties

app.id=12345  #对应的Apollo中配置的appid
apollo.cluster=default  #对应的Apollo中的那套集群环境
apollo.meta=http://localhost:8080  #对应的Apollo Config 地址

Demo:

@SpringBootApplication
@Slf4j
@EnableApolloConfig //启动apollo配置注解
public class SpringBootStart {

    @ApolloConfig("appnamespace") //指定具体的namespace
    private static Config configSwitch;

    public static void main(String[] args) {
        SpringApplication.run(SpringBootStart.class, args);
        log.info("======启动=======");
        //获取方式一
        Config appConfig = ConfigService.getAppConfig(); //默认的namespace是application
        String password = appConfig.getProperty("password", "");
        log.info("{}==:" + password, "密码");
        //获取方式二  直接指定namespace
        Config appnamespace = ConfigService.getConfig("appnamespace");
        String unionpayflag1 = appnamespace.getProperty("unionpayflag", "");
        log.info("{}==:" + unionpayflag1, "开关1");
        //获取方式三
        String unionpayflag = getPassword("unionpayflag", "开关");
        log.info("{}==:" + unionpayflag, "开关2");

    }

    public static String getPassword(String key, String param){
        //获取指定namespace下的key对应的值value
        String property = configSwitch.getProperty(key, "");
        //为空默认值
        if (!StringUtils.hasLength(property)){
            property = "0";
        }
//        log.info("{}====:" + property, param);
        return property;
    }

}

结果:
SpringBoot整合Apollo配置中心快速入门_第3张图片
通过上述Demo可以成功获取结果:

======启动=======
 密码==123456
 开关1==1
 开关2==1

到此简单的Quick Start就结束了,总得来说,Apollo还是挺方便易用的,并且参数还可以实时生效(用户在Apollo修改完配置并发布后,客户端能实时(1秒)接收到最新的配置,并通知到应用程序
)。除此之外,Apollo提供了一个统一界面集中式管理不同环境(environment)、不同集群(cluster)、不同命名空间(namespace)的配置。

具体可参考官方文档:
https://www.apolloconfig.com/#/zh/design/apollo-introduction

你可能感兴趣的:(tool,java,idea,spring,boot,中间件)