spring cloud 阿波罗 apollo 本地开发环境搭建过程

 更新时间:2018年01月22日 11:01:37   作者:chenshiying007  
Apollo(阿波罗)是携程框架部门研发的配置管理平台,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性

开源配置中心 - Apollo

Apollo(阿波罗)是携程框架部门研发的配置管理平台,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。

检出代码

apollo github

可以fork下然后本地使用idea打开

数据库脚本

执行以下脚本创建ApolloConifgDB、ApolloPortalDB

  • apollo.scripts.sql.apolloconfigdb.sql
  • apollo.scripts.sql.apolloportaldb.sql

启动configservice adminservice

Main class配置

com.ctrip.framework.apollo.assembly.ApolloApplication

VM opions

-Dapollo_profile=github 
-Dspring.datasource.url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8 
-Dspring.datasource.username=root 
-Dspring.datasource.password=
Program arguments
--configservice --adminservice

启动完后,打开 http://localhost:8080可以看到apollo-configservice和apollo-adminservice都已经启动完成并注册到Eureka

启动Apollo-Portal

Main class配置

com.ctrip.framework.apollo.portal.PortalApplication
-Dapollo_profile=github,auth 
-Ddev_meta=http://localhost:8080/ 
-Dserver.port=8070 
-Dspring.datasource.url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8 
-Dspring.datasource.username=root 
-Dspring.datasource.password=

如果启用了auth profile的话,默认的用户名是apollo,密码是admin

应用在SIT、UAT、生产环境机器上

1.新增目录/opt/data/目录,且有可读写权限;

2.新增文件:/opt/settings/server.properties 且加入配置:

env=DEV
sit: env=FAT
uat: env=UAT
生产:env=PRO

客户端例子

@Component 设置组件名称
@RefreshScope 指定配置改变可以刷新
@ConfigurationProperties(prefix = "redis.cache")
@Component("sampleRedisConfig")
@RefreshScope
public class SampleRedisConfig {
 private static final Logger logger = LoggerFactory.getLogger(SampleRedisConfig.class);
 private int expireSeconds;
 private String clusterNodes;
 private int commandTimeout;
 private Map<String, String> someMap = Maps.newLinkedHashMap();
 private List<String> someList = Lists.newLinkedList();
 @PostConstruct
 private void initialize() {
 logger.info(
  "SampleRedisConfig initialized - expireSeconds: {}, clusterNodes: {}, commandTimeout: {}, someMap: {}, someList: {}",
  expireSeconds, clusterNodes, commandTimeout, someMap, someList);
 }
 public void setExpireSeconds(int expireSeconds) {
 this.expireSeconds = expireSeconds;
 }
 public void setClusterNodes(String clusterNodes) {
 this.clusterNodes = clusterNodes;
 }
 public void setCommandTimeout(int commandTimeout) {
 this.commandTimeout = commandTimeout;
 }
 public Map<String, String> getSomeMap() {
 return someMap;
 }
 public List<String> getSomeList() {
 return someList;
 }
 @Override
 public String toString() {
 return String.format(
  "[SampleRedisConfig] expireSeconds: %d, clusterNodes: %s, commandTimeout: %d, someMap: %s, someList: %s",
   expireSeconds, clusterNodes, commandTimeout, someMap, someList);
 }
}

设置监听

@Component
public class SpringBootApolloRefreshConfig {
 private static final Logger logger = LoggerFactory.getLogger(SpringBootApolloRefreshConfig.class);
 @Autowired
 private ApolloRefreshConfig apolloRefreshConfig;
 @Autowired
 private SampleRedisConfig sampleRedisConfig;
 @Autowired
 private RefreshScope refreshScope;
 @ApolloConfigChangeListener
 public void onChange(ConfigChangeEvent changeEvent) {
 logger.info("before refresh {}", sampleRedisConfig.toString());
 refreshScope.refresh("sampleRedisConfig");
 logger.info("after refresh {}", sampleRedisConfig.toString());
 }
}

总结

以上所述是小编给大家介绍的spring cloud 阿波罗 apollo 本地开发环境搭建过程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Mybatis mapper配置文件xml存放位置

    Mybatis mapper配置文件xml存放位置

    这篇文章主要介绍了Mybatis mapper配置文件xml存放位置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-12-12
  • java 中Thread.join()的使用方法

    java 中Thread.join()的使用方法

    这篇文章主要介绍了java 中Thread.join()的使用方法的相关资料,需要的朋友可以参考下
    2017-04-04
  • Gradle修改本地仓库的位置方法实现

    Gradle修改本地仓库的位置方法实现

    这篇文章主要介绍了Gradle修改本地仓库的位置方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • JAVA中字符串如何与整型数字相加

    JAVA中字符串如何与整型数字相加

    这篇文章主要介绍了JAVA中字符串如何与整型数字相加,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 利用ssh实现服务器文件上传下载

    利用ssh实现服务器文件上传下载

    这篇文章主要为大家详细介绍了如何利用ssh实现服务器文件上传下载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • java接收文件流+response.body()调用两次问题(分别接收文件和对象)

    java接收文件流+response.body()调用两次问题(分别接收文件和对象)

    这篇文章主要介绍了java接收文件流+response.body()调用两次问题(分别接收文件和对象),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Linux下启动jar包的几种常见方式

    Linux下启动jar包的几种常见方式

    最近在linux上发布了一个SpringBoot项目,研究了一下jar包在Linux上的集中启动方式,这篇文章主要给大家介绍了Linux下启动jar包的几种常见方式,需要的朋友可以参考下
    2023-07-07
  • Java编写实现坦克大战小游戏

    Java编写实现坦克大战小游戏

    这篇文章主要为大家详细介绍了Java编写实现坦克大战小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • java实现客户信息管理系统

    java实现客户信息管理系统

    这篇文章主要为大家详细介绍了java实现客户信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • Java排序算法总结之归并排序

    Java排序算法总结之归并排序

    这篇文章主要介绍了Java排序算法总结之归并排序,较为详细的分析了归并排序的原理与java实现技巧,需要的朋友可以参考下
    2015-05-05

最新评论