简介

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring环境也有较好的支持。

官网:https://github.com/ctripcorp/apollo

Wiki:https://github.com/ctripcorp/apollo/wiki

说明:本次仅介绍官方提供的Quick Start方案,用于本地体验测试。生产环境一般采用分布式部署方案。

安装 Apollo 配置中心

搭建教程

参照 https://github.com/ctripcorp/apollo/wiki/Quick-Start 搭建 Apollo 配置中心,文档写的很清楚,这里就赘述了。

搭建完成并启动后,访问 http://localhost:8070 ,界面如下。

输入用户名 apollo,密码 admin 后登录后,点击SampleApp进入配置界面。

这里可以进入新建项目,并进入具体的项目设置相关的配置项。

点击新建项目

填入对应的配置项后提交

项目信息即会在左侧显示

 点击右侧的新增配置按钮

这里可以设置对应的配置项,类似我们本地配置application.properties。假如你配置了环境的话,配置时也可以选择对应的环境。

配置后我们可以发现,这时候应用依旧是读不到的,这时候我们需要点击发布后才会发布到线上。

 这里有个小功能,不知道同学们有没有注意到。在列表的顶部有个文本的选项。

点击后我们可以看到这里面的设置是和application.properties完全相同的,更方便了我们项目初始化的迁移工作。

当然apollo还有很多其他的功能项,这里就不一一介绍了,有兴趣的话,可以看下官方的wiki。像项目的namespace,灰度发布,历史记录,以及权限等的设置都是很强大的功能。

项目整合

这里以springboot项目为例

首先添加apollo客户端依赖。

    <!-- apollo -->
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>1.3.0</version>
</dependency>

application.yml配置

server:
port: 8010
apollo:
bootstrap:
enabled: true
namespaces: application
meta: http://localhost:8080

Resources文件夹下新建META-INF文件夹

添加app.properties文件

app.id=test

test对应apollo创建的对应的项目,如下图

配置说明:

  • app.id:AppId是应用的身份信息,是配置中心获取配置的一个重要信息。
  • apollo.bootstrap.enabled:启用apollo配置。

更多配置可参考:官方文档

启动类

/**
* @author laoyeye.net
* @Description: 启动入口
* @date 2019/3/25 21:56
*/
@EnableApolloConfig
@SpringBootApplication
public class AppStart { public static void main(String[] args) throws Exception {
SpringApplication.run(AppStart.class, args);
}
}

Controller

/**
* Description :
*
* @author : laoyeye.net
* @date : Created in 2019/9/2 15:50
*/
@RestController
@RequestMapping("/apollo")
public class ApolloTestController {
@Value( "${test:test}" )
String test; @RequestMapping("/test")
public String test(){
return test;
} }

最后启动springboot项目,我们来看下效果:

在不停机的情况下,我们修改apollo的配置。

 发布生效后,我们在刷新刚才的链接

可以看到页面的值立即更新成我们新设置的值了,这样是不是就解决了我们修改配置停机重启的尴尬了。

环境的配置

本地缓存

Apollo客户端会把从服务端获取到的配置在本地文件系统缓存一份,用于在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置,不影响应用正常运行。

本地缓存路径默认位于以下路径,所以请确保/opt/dataC:\opt\data\目录存在,且应用有读写权限。

  • Mac/Linux: /opt/data/{appId}/config-cache
  • Windows: C:\opt\data\{appId}\config-cache

本地配置文件会以下面的文件名格式放置于本地缓存路径下:

{appId}+{cluster}+{namespace}.properties

  • appId就是应用自己的appId,如100004458
  • cluster就是应用使用的集群,一般在本地模式下没有做过配置的话,就是default
  • namespace就是应用使用的配置namespace,一般是application

meta地址和env环境的指定

对比于网上其他文章喜欢将这两个配置写在项目代码配置中到方法,我个人更推荐将meta地址和env都通过配置文件配置到不同环境的服务器上,这样就避免了我们在应用中添加多余的配置,也减少了修改配置而造成的失误的情况。

具体配置的方法如下:

通过server.properties配置文件

  • 可以在server.properties配置文件中指定apollo.meta=http://config-service-url
  • 对于Mac/Linux,文件位置为/opt/settings/server.properties
  • 对于Windows,文件位置为C:\opt\settings\server.properties

另外,这个配置文件也是可以指定当前的环境到,当然这是个可选项,如果我们只有一个默认的meta就不需要在指定环境了。

  • 通过上面到配置文件来指定env=YOUR-ENVIRONMENT
  • 对于Mac/Linux,文件位置为/opt/settings/server.properties
  • 对于Windows,文件位置为C:\opt\settings\server.properties

目前,env支持以下几个值(大小写不敏感):

  • DEV

    Development environment

  • FAT

    Feature Acceptance Test environment

  • UAT

    User Acceptance Test environment

  • PRO

    Production environment

当然了,meta和env的指定还有很多方法,大家可以参考:apollo使用指南 1.2中的相关介绍。

更多配置信息请参考官方wiki:https://github.com/ctripcorp/apollo/wiki

最新文章

  1. Java注解基础概念总结
  2. TCP/IP、Http、Socket、XMPP-从入门到深入
  3. C#双链表
  4. 【AngularJS】—— 13 服务Service
  5. HtmlAgilityPack解析器在WP8.1下报错,不仅如此,社交化分享也报错。
  6. 【C语言入门教程】2.6 运算符
  7. Xamarin如何生成Android项目的APK
  8. iPhone开发常问的十个问题
  9. virtualbox下 ubuntu 14.04设置外网独立IP
  10. r语言之生成规则序列,规则序列函数及用法
  11. 深入浅出 JSTL
  12. 如何将一个div水平垂直居中?4种方法做推荐
  13. node.js之第一天
  14. hdu5601 BestCoder Round #67 (div.2)
  15. 【入门】Spring-Boot项目配置Mysql数据库
  16. 【DWM1000】 code 解密10 一 TAG 发送最后一个消息
  17. apache配置报错:Unrecognized LogFormat directive %I
  18. Apache cxf暴露接口以及客户端调用之WebService初步理解
  19. 【BZOJ2724】【Violet 6】蒲公英
  20. Spring Boot 菜鸟入门(持续更新)

热门文章

  1. C#多线程解决程序卡顿问题
  2. altermanager使用报错
  3. Java IO---缓冲流和转换流
  4. 2019 京东java面试笔试总结 (含面试题解析)
  5. MAC电脑下Appium + python3 + robotframework ios的真机测试环境搭建
  6. vue中自定义指令
  7. C# 后台服务器端 Get 请求函数封装
  8. vue.js 实现粒子特效之插件( vue-particles )
  9. Linux中Nginx中添加自签证书TLS
  10. python之路第三天