微服务配置中心Apollo

 

  随着业务的发展,应用系统中的配置会越来越多,配置之间也有不同的业务特点,比如业务依赖的数据库配置、缓存信息配置、索引存储配置等。这类配置一般比较稳定,不会频繁更改,通常会放在工程中作为配置文件随应用一起发布。

  除了这些配置,还有一部分配置会经常发生修改,比如限流降级开关配置、业务中的白名单配置等。这些配置项除了变更频繁,还要求实时性,如果采取和应用一起发布的方式,那么每次变更都要重新发布服务,非常不方便。

  为了解决这类配置问题,出现了分布式配置管理平台。

 

配置管理的应用场景

  在项目开发中,数据库信息等配置管理,一般是随着工程一起上线的,比如 Java 的 Web 系统,习惯把数据库的配置信息放到 jdbc.properties 这个配置文件中。

  在分布式场景下,配置管理的应用范围更加广泛。比如上面说的限流和降级配置,电商网站在举行大型促销活动时,由于访问人数暴增,为了保证核心交易链路的稳定性,会把一些不太重要的业务做降级处理,那么如何关闭非核心服务呢?就需要分布式配置管理系统,能够实时管理被降级的业务,保证系统安全。

  在一些异步业务场景中,配置管理也广泛应用,比如工作中经常会有数据同步,需要控制同步的速度;在一些定时任务中,需要控制定时任务触发的时机,以及执行的时长等,这些都可以通过配置管理来实现。

 

配置管理如何实现

  分布式配置管理的本质就是一种推送-订阅模式的运用。配置的应用方是订阅者,配置管理服务则是推送方,客户端发布数据到配置中心,配置中心把配置数据推送到订阅者。

  配置管理服务往往会封装一个客户端,应用方则是基于该客户端与配置管理服务进行交互。在实际实现时,客户端可以主动拉取数据,也可以基于事件通知实现。

 

 

Apollo介绍     

  Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。 Apollo已经支持了多种语言,并且提供了open API。其他不支持的语言,Apollo的接入成本相对较低。

 

Apollo安装  

 

 内容如下

version: '2'

services:
  apollo-quick-start:
    image: nobodyiam/apollo-quick-start
    container_name: apollo-quick-start
    depends_on:
      - apollo-db
    ports:
      - "8080:8080"
      - "8070:8070"
    links:
      - apollo-db

  apollo-db:
    image: mysql:5.7
    container_name: apollo-db
    environment:
      TZ: Asia/Shanghai
      MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
    depends_on:
      - apollo-dbdata
    ports:
      - "13306:3306"
    volumes:
      - ./sql:/docker-entrypoint-initdb.d
    volumes_from:
      - apollo-dbdata

  apollo-dbdata:
    image: alpine:latest
    container_name: apollo-dbdata
    volumes:
      - /var/lib/mysql

 

 Apollo 服务需要两个数据库:ApolloPortalDB 和 ApolloConfigDB,相关脚本在 sql 文件夹下,自行导入 MySQL 即可:

 

 

 

进入docker-quick-start目录,并在当前目录执行命令  docker-compose up

成功后,在浏览器输入地址,登陆,用户名密码分别是 apollo  admin。

 

 

 

Apollo内置模块Eureka(下图是Eureka 提供的ui控制台)

  Eureka是spring cloud中的一个负责服务注册与发现的组件。

 

 

Apollo模块

  Apollo分为MySQL,Config Service,Admin Service,Portal四个模块:

    1. MySQL存储Apollo元数据和用户配置数据;

    2. Config Service提供配置的读取、推送等功能,客户端请求都是落到Config Service上;

    3. Admin Service提供配置的修改、发布等功能,Portal操作的服务就是Admin Service;

    4. Portal提供给用户配置管理界面;

   

 

                 Apollo的架构图

 Apollo配置推送是基于HTTP长轮询,客户端和配置中心建立HTTP长联接,当配置变更的的时候,配置中心把配置推送到客户端。

 

posted @ 2021-01-06 18:20  songguojun  阅读(569)  评论(0编辑  收藏  举报