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

作者:chenshiying007 时间:2023-01-25 21:04:50 

开源配置中心 - 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 本地开发环境搭建过程网站的支持!

来源:http://blog.csdn.net/qq_27384769/article/details/79123193

标签:spring,cloud,apollo
0
投稿

猜你喜欢

  • Android 暂停和恢复Activity

    2021-07-09 06:33:18
  • Unity代码实现序列帧动画播放器

    2023-03-24 23:48:45
  • SpringBoot+Redis实现数据字典的方法

    2022-08-03 14:22:29
  • C#中的委托、事件学习笔记

    2023-01-21 18:03:49
  • C# 递归算法详解

    2021-09-10 19:08:44
  • 详解Android开发中Fragment的使用

    2023-05-02 20:32:25
  • java获取时间的方法总结

    2022-03-28 15:36:38
  • IP查询系统的异步回调案例

    2023-11-10 18:22:24
  • SpringBoot实现接口参数加密解密的示例代码

    2021-07-17 03:39:18
  • C#入门教程之集合ArrayList用法详解

    2022-04-30 06:32:13
  • 使用java反射将结果集封装成为对象和对象集合操作

    2022-03-11 18:30:26
  • 浅谈对Java双冒号::的理解

    2023-09-20 02:19:21
  • Android中判断网络连接是否可用及监控网络状态

    2022-09-07 05:24:25
  • Android实现界面左右滑动切换功能

    2022-08-30 02:00:58
  • SpringBoot搭配AOP实现自定义注解

    2022-04-07 01:21:59
  • 利用C#守护Python进程的方法

    2023-01-05 13:25:56
  • maven profile自动切换环境参数的2种方法详解

    2022-10-28 09:18:39
  • C#使用List类实现动态变长数组的方法

    2022-11-30 03:44:35
  • 简单掌握Linux系统中fork()函数创建子进程的用法

    2023-03-15 20:40:20
  • java selenium 常见web UI 元素操作及API使用

    2021-08-30 00:50:18
  • asp之家 软件编程 m.aspxhome.com