Amazing Arch中间件解决方案

Apollo 简介

2019-03-18  本文已影响131人  索伦x

分布式配置中心有很多,springcloud的config、百度的disconfig、携程的apollo、淘宝的diamond。由于携程的apollo极少的侵入性,以及面对微服务开发,所以项目技术选型一般为apollo。

什么是 Apollo

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

GitHub:https://github.com/ctripcorp/apollo

为什么使用 Apollo

因为如今程序功能越来越复杂,程序的配置日益增多:各种功能的开关、参数配置、服务器地址、数据库链接等。对于配置的期望值越来越高:配置修改后实时生效、灰度发布、分环境、分集群管理配置、完善的权限、审核机制等。所以传统的配置文件越来越无法满足开发人员的需求。于是就有了 Apollo。

配置的基本概念

Apollo 支持 4 个维度管理 KV 格式的配置:

既然 Apollo 定位于配置中心,首先了解一下什么是配置

配置是独立于程序的只读变量

配置伴随应用的整个生命周期

配置可有多种加载方式

配置需要治理

Apollo 的特性

统一管理不同环境、不同集群的配置

配置修改实时生效(热发布)

版本发布管理

灰度发布

权限管理、发布审核、操作审计

客户端配置信息监控

提供 Java 和 .Net 原生客户端

提供开放平台 API

部署简单

Apollo 的基础模型

image

基于 Docker 安装 Apollo

下载 Docker Quick Start 配置文件

下载地址:https://github.com/ctripcorp/apollo/tree/master/scripts/docker-quick-start

启动 Apollo 配置中心

docker-quick-start目录下执行docker-compose up -d,第一次执行会触发下载镜像等操作,需要耐心等待一些时间。

搜索所有apollo-quick-start开头的日志,看到以下日志说明启动成功:

apollo-quick-start    | ==== starting service ====
apollo-quick-start    | Service logging file is ./service/apollo-service.log
apollo-quick-start    | Started [45]
apollo-quick-start    | Waiting for config service startup.......
apollo-quick-start    | Config service started. You may visit http://localhost:8080 for service status now!
apollo-quick-start    | Waiting for admin service startup......
apollo-quick-start    | Admin service started
apollo-quick-start    | ==== starting portal ====
apollo-quick-start    | Portal logging file is ./portal/apollo-portal.log
apollo-quick-start    | Started [254]
apollo-quick-start    | Waiting for portal startup.......
apollo-quick-start    | Portal started. You can visit http://localhost:8070 now!

运行成功效果图

通过 http://192.168.10.131:8070/signin 访问 Apollo 配置中心

image IntelliJ访问配置 测试配置

SpringBoot配置整合

POM

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

MyApplication.java 中 @EnableApolloConfig //开启apollo配置

app:
  id: testapp
apollo:
  meta: http://10.3.50.160:8080

测试

@Controller
@EnableApolloConfig
public class TestController {
    @Resource
    private UserService userService;

    @Value("${server.portx:8090}")
    private String port;
   ...
}
上一篇 下一篇

猜你喜欢

热点阅读