查看: 3023|回复: 0

[Java语言] spring cloud 阿波罗 apollo 本地开发环境搭建过程

发表于 2018-2-24 08:00:02

开源配置中心 - 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配置

  1. com.ctrip.framework.apollo.assembly.ApolloApplication
复制代码

VM opions

  1. -Dapollo_profile=github
  2. -Dspring.datasource.url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
  3. -Dspring.datasource.username=root
  4. -Dspring.datasource.password=
  5. Program arguments
  6. --configservice --adminservice
复制代码

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

启动Apollo-Portal

Main class配置

  1. com.ctrip.framework.apollo.portal.PortalApplication
  2. -Dapollo_profile=github,auth
  3. -Ddev_meta=http://localhost:8080/
  4. -Dserver.port=8070
  5. -Dspring.datasource.url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
  6. -Dspring.datasource.username=root
  7. -Dspring.datasource.password=
复制代码

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

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

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

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

  1. env=DEV
  2. sit: env=FAT
  3. uat: env=UAT
  4. 生产:env=PRO
复制代码

客户端例子

  1. @Component 设置组件名称
  2. @RefreshScope 指定配置改变可以刷新
  3. @ConfigurationProperties(prefix = "redis.cache")
  4. @Component("sampleRedisConfig")
  5. @RefreshScope
  6. public class SampleRedisConfig {
  7. private static final Logger logger = LoggerFactory.getLogger(SampleRedisConfig.class);
  8. private int expireSeconds;
  9. private String clusterNodes;
  10. private int commandTimeout;
  11. private Map<String, String> someMap = Maps.newLinkedHashMap();
  12. private List<String> someList = Lists.newLinkedList();
  13. @PostConstruct
  14. private void initialize() {
  15. logger.info(
  16. "SampleRedisConfig initialized - expireSeconds: {}, clusterNodes: {}, commandTimeout: {}, someMap: {}, someList: {}",
  17. expireSeconds, clusterNodes, commandTimeout, someMap, someList);
  18. }
  19. public void setExpireSeconds(int expireSeconds) {
  20. this.expireSeconds = expireSeconds;
  21. }
  22. public void setClusterNodes(String clusterNodes) {
  23. this.clusterNodes = clusterNodes;
  24. }
  25. public void setCommandTimeout(int commandTimeout) {
  26. this.commandTimeout = commandTimeout;
  27. }
  28. public Map<String, String> getSomeMap() {
  29. return someMap;
  30. }
  31. public List<String> getSomeList() {
  32. return someList;
  33. }
  34. @Override
  35. public String toString() {
  36. return String.format(
  37. "[SampleRedisConfig] expireSeconds: %d, clusterNodes: %s, commandTimeout: %d, someMap: %s, someList: %s",
  38. expireSeconds, clusterNodes, commandTimeout, someMap, someList);
  39. }
  40. }
复制代码

设置监听

  1. @Component
  2. public class SpringBootApolloRefreshConfig {
  3. private static final Logger logger = LoggerFactory.getLogger(SpringBootApolloRefreshConfig.class);
  4. @Autowired
  5. private ApolloRefreshConfig apolloRefreshConfig;
  6. @Autowired
  7. private SampleRedisConfig sampleRedisConfig;
  8. @Autowired
  9. private RefreshScope refreshScope;
  10. @ApolloConfigChangeListener
  11. public void onChange(ConfigChangeEvent changeEvent) {
  12. logger.info("before refresh {}", sampleRedisConfig.toString());
  13. refreshScope.refresh("sampleRedisConfig");
  14. logger.info("after refresh {}", sampleRedisConfig.toString());
  15. }
  16. }
复制代码

总结

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



回复

使用道具 举报