简介

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

实践分布式配置中心Apollo的更多相关文章

  1. 分布式配置中心Apollo——QuickStart

    分布式配置中心 剥离配置文件,实现动态修改,自动更新. [假设没有分布式配置中心,修改配置文件后都需要重启服务,对于数量庞多的微服务开发来说,就会非常繁琐] 分布式配置中心有哪些 disconf(依赖 ...

  2. 分布式配置中心Apollo

    1,什么是分布式配置中心 项目中配置文件比较繁杂,而且不同环境的不同配置修改相对频繁,每次发布都需要对应修改配置,如果配置出现错误,需要重新打包发布,时间成本较高,因此需要做统一的分布式注册中心,能做 ...

  3. spring cloud 集成分布式配置中心 apollo(单机部署apollo)

    一.什么是apollo? Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用 ...

  4. Apollo系列(一):分布式配置中心Apollo安装(Linux、Docker)

    一.介绍 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理 ...

  5. 携程开源分布式配置系统Apollo服务端是如何实时更新配置的?

    引言 前面有写过一篇<分布式配置中心apollo是如何实时感知配置被修改>,也就是客户端client是如何知道配置被修改了,有不少读者私信我你既然说了client端是如何感知的,那服务端又 ...

  6. SpringCloud系列之分布式配置中心极速入门与实践

    SpringCloud系列之分布式配置中心极速入门与实践 @ 目录 1.分布式配置中心简介 2.什么是SpringCloud Config? 3.例子实验环境准备 4.Config Server代码实 ...

  7. Apollo分布式配置中心部署以及使用

    一.简介Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理场 ...

  8. 分布式配置中心 携程(apollo)

    1.传统配置文件与分布式配置文件区别 传统配置文件:如果修改了配置文件,需要重新打包发布,重新发布服务,而且每个环境的变更配置文件,比较繁琐. 分布式配置文件:将配置文件注册到配置中心上去,可以使用分 ...

  9. Apollo 分布式配置中心

    1.  介绍 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置 ...

随机推荐

  1. linux学习 - 基本命令篇

    关机重启命令 基本操作之修改用户名(Ubuntu) 查看系统版本号 查看系统是32位还是64位 系统进程信息查看 查看某个端口被占用的情况 查看磁盘分区使用情况 df 命令 fdisk 关机重启命令 ...

  2. .NET中的异步编程——动机和单元测试

    背景 自.NET 4.5发布以来已经有很长一段时间了.留在了我们的记忆里,其发布在2012年8月15日.是的,六年前.感觉老了吗?好吧,我不打算让你做出改变,而是提醒你一些.NET发布的亮点.此版本带 ...

  3. Java之路---Day13

    2019-10-28-22:40:14 目录 1.Instanceof关键字 2.Final关键字 2.1Final关键字修饰类 2.2Final关键字修饰成员方法 2.3Final关键字修饰局部变量 ...

  4. Matlab桥接模式

    桥接模式(Bridge)是一种结构型设计模式.它是用组合关系代替继承关系来实现,可以处理多维度变化的场景(https://blog.csdn.net/qq_31156277/article/detai ...

  5. 【转载】C#通过Clone方法快速创建相同架构的DataTable

    在C#中的Datatable数据变量的操作过程中,如果需要克隆当前DataTable变量的结构,包括所有 DataTable 架构和约束等信息,可以使用DataTable中的Clone方法来实现,Cl ...

  6. 【转】Webpack 快速上手(上)

    嫌啰嗦想直接看最终的配置请戳这里 webpack-workbench (https://github.com/onlymisaky/webpack-workbench) 由于文章篇幅较长,为了更好的阅 ...

  7. Django:RestFramework之-------分页

    9.分页操作 分页,看第n页,每页显示n条数据 分页,在n个位置,向后查看n条数据. 加密分页,上一页和下一页 1.基于PageNumberPagination分页 1.路由: url(r'^(?P& ...

  8. 全面了解Cookie

    一.Cookie的出现 浏览器和服务器之间的通信少不了HTTP协议,但是因为HTTP协议是无状态的,所以服务器并不知道上一次浏览器做了什么样的操作,这样严重阻碍了交互式Web应用程序的实现. 针对上述 ...

  9. Asp.Net Core 生成二维码(NuGet使用QRCoder)

    前言 功能:调用web api 接口 1.获取 jpeg 格式的二维码 2.获取中间带有logo 的二维码 3. 下载 jpeg,svg 格式的二维码 需要的NuGet 包: > QRCoder ...

  10. Web架构之路:MongoDB集群及高可用实践

    MongoDB集群有副本集及主从复制两种模式,不过主从模式在MongoDB 3.6已经彻底废弃,今天主要探讨副本集的搭建和使用,以及分片. 副本集介绍 副本集(Replica Set)即副本的集合,在 ...