博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring cloud- 阿波罗 apllo 本地开发环境
阅读量:3727 次
发布时间:2019-05-22

本文共 3167 字,大约阅读时间需要 10 分钟。

开源配置中心 - Apollo

更多干货

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

检出代码

  • 可以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

启动完后,打开

启动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=DEVsit: env=FATuat: env=UAT生产:env=PRO

客户端例子

  • @Component 设置组件名称
  • @RefreshScope 指定配置改变可以刷新
@ConfigurationProperties(prefix = "redis.cache")@Component("sampleRedisConfig")@RefreshScopepublic class SampleRedisConfig {  private static final Logger logger = LoggerFactory.getLogger(SampleRedisConfig.class);  private int expireSeconds;  private String clusterNodes;  private int commandTimeout;  private Map
someMap = Maps.newLinkedHashMap(); private List
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
getSomeMap() { return someMap; } public List
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); }}

设置监听

@Componentpublic 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());  }}
 

更多干货

转载地址:http://jaonn.baihongyu.com/

你可能感兴趣的文章
006Java基础之类与对象
查看>>
007Java基础之包、访问修饰符、面向对象的 三大特性
查看>>
008Java基础之Object及其一些方法
查看>>
009Java基础之静态成员、代码块及final关键字
查看>>
010Java基础之单例设计模式
查看>>
eclispe下springboot、与jsp的整合
查看>>
Kali Linux防攻系统
查看>>
Linux相关配置及hadoop基本配置
查看>>
Hadpood之JDK
查看>>
Hadoop之zookeeper
查看>>
javaUI自动化+selenium+testNG环境配置
查看>>
python+selenium自动化环境搭建
查看>>
Linux shell编程
查看>>
线程--线程池
查看>>
内存存储 -- 大小端问题
查看>>
线程池C++面向对象封装
查看>>
opencv -- 基础
查看>>
opencv--简小开发
查看>>
vs2019使用呢数据库远程连接Linux(完成版)
查看>>
01-Linux内核编程-设备和文件IO
查看>>