本篇文章为快速部署体验,不支持添加环境,实际使用请转移分布式部署
实际使用请看分布式部署:
网络参考: https://blog.csdn.net/luhong327/article/details/81453001
官网文档: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

一、 Apollo 是什么?

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
Apollo阿波罗特点
用户在Apollo修改完配置并发布后,客户端能实时(1秒)接收到最新的配置,并通知到应用程序。
统一管理不同环境、不同集群的配置

所有的配置发布都有版本概念,从而可以方便的支持配置的回滚。
配置修改实时生效(热发布)
用户在Apollo修改完配置并发布后,客户端能实时(1秒)接收到最新的配置,并通知到应用程序
在这里插入图片描述

二、 Linux下 Apollo 环境搭建

1、搭建前环境

1、 jdk1.7上。建议1.8 (当前1.8)
2、 mysql 5.6.5上 (当前8.0)
Linux- jkd1.8安装及环境变量配置详情:https://editor.csdn.net/md/?articleId=99173682

2、下载源码

建议使用本文当前源码,github源码版本不一致,配置方法可以会不同
本文当前源码:https://pan.baidu.com/s/1MzlXlCzRcUBqqb56LwWseA 提取码:irpw
github源码地址:https://github.com/nobodyiam/apollo-build-scripts

在这里插入图片描述

3、上传源码包并解压

压缩前后文件展示
在这里插入图片描述
命令

yum install -y zip unzip2                # 安装解压命令工具
unzip apollo-build-scripts-master.zip    # 解压

4、数据库执行sql命令

在这里插入图片描述
执行sql 命令自动建表
在这里插入图片描述

5、修改demo.sh 脚本

在这里插入图片描述
修改数据库连接信息
在这里插入图片描述

6、启动

./demo.sh start              ##  启动

出现如下启动成功
在这里插入图片描述

7、访问admin平台

ip+8070 或者 域名+8070 访问,如我的:http://192.168.177.128:8070/
默认账号密码:用户名:apollo --> 密码:admin
如果无法访问请检查防火墙设置

systemctl stop firewalld     ##  暂时关闭防火墙
systemctl disable firewalld  ##  永久关闭防火墙

在这里插入图片描述
这样环境就搭建成功了
在这里插入图片描述

三、 springboot 整合 Apollo

1、核心依赖 jar 包导入本地maven 仓库

下载核心依赖 jar包
下载链接:https://pan.baidu.com/s/1MzlXlCzRcUBqqb56LwWseA 提取码:irpw
在这里插入图片描述
执行打入maven仓库脚本
在这里插入图片描述

2、springboot 中配置Apollo

核心maven 依赖

       <!-- apollo-client -->
        <dependency>
            <groupId>com.ctrip.framework.apollo</groupId>
            <artifactId>apollo-client</artifactId>
            <version>1.3.0</version>
        </dependency>
        <!-- 为了编码方便,并非apollo 必须的依赖 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.8.1</version>
        </dependency>

3、application.yml 添加配置

配置对比图,这里可以先使用默认命名空间 application,默认时namespaces可不配置
在这里插入图片描述
配置yml

server:
  port: 8001
  
app:
  ## AddId
  id: apollo-demo
apollo:
  ## configservice配置中心地址
  meta: http://192.168.177.128:8080
  bootstrap:
    # 需要加载的名字空间1,需要加载的名字空间2,...,默认 application可不配置
    namespaces: properties,redis
    enabled: true
    eagerLoad:
      enabled: true

4、添加获取配置代码

获取name,name2的值

@RestController
public class HelloController {

    private static Logger logger = LoggerFactory.getLogger( HelloController.class );

    @Value( "${name:null}" )
    String name;

    @Value( "${name2:null}" )
    String name2;

    @GetMapping("test")
    public String test() {
        return name+"-"+name2;
    }
}

5、启动类添加-@EnableApolloConfig

@SpringBootApplication
@EnableApolloConfig
public class SpringBootApolloApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootApolloApplication.class, args);
    }

}

6、访问

修改发布后可实时刷新
在这里插入图片描述

7、监听属性修改

当有属性发生修改,打印日志内容

@Component
@Slf4j
public class MyCommandLineRunner implements CommandLineRunner {
	@ApolloConfig
	private Config config;

	@Override
	public void run(String... args) throws Exception {
		config.addChangeListener(new ConfigChangeListener() {

			@Override
			public void onChange(ConfigChangeEvent changeEvent) {
				log.debug("####分布式配置中心监听#####" + changeEvent.changedKeys().toString());
			}
		});
	}
}

更多推荐