Apollo分布式配置中心(一)

目录

什么是配置?

什么是配置中心?

配置中心需要满足条件

什么是Apollo?

Apollo特性

 Apollo执行流程

 Apollo安装

Git地址:

用户手册:

环境准备: 

 使用idea 的git clone 拉取源码

 修改Apollo\scripts\下的build.bat


什么是配置?

         应用程序在启动和运行的时候需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如启动时需要读取服务的端口号、系统在运行过程中需要读取定时策略执行定时任务等.配置文件,环境变量,启动参数,数据库连接参数等。

什么是配置中心?

        传统单体应用存在一些潜在缺陷,如随着规模的扩大,部署效率降低,团队协作效率差,系统可靠性变差,维护困难,新功能上线周期长等,所以迫切需要一种新的架构去解决这些问题,而微服务( microservices )架构正是当下一种流行的解法。但是使用微服务解决问题的同时也会出现一些问题,当把一个单体应用拆分成多个服务时,配置文件也会跟着分散了。如下图:

Apollo分布式配置中心(一)_第1张图片

        配置中心就是一种统一管理各种应用配置的基础服务组件。 它将配置从应用中剥离出来,统一管理,优雅的解决了配置的动态变更、持久化、运维成本等问题。

配置中心需要满足条件

  • 配置项容易读取和修改
  • 添加新配置简单直接
  • 支持对配置的修改的检视,可以查看配置修改的历史记录
  • 不同部署环境支持隔离

什么是Apollo?

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

Apollo特性

统一管理不同环境、不同集群的配置
  • Apollo提供了一个统一界面集中式管理不同环境(environment)、不同集群(cluster)、不同命名空(namespace)的配置。
  • 同一份代码部署在不同的集群,可以有不同的配置,比如数据库的地址等。
  • 通过命名空间( namespace ) 可以很方便地支持多个不同应用共享同一份配置,同时还允许应用对共享的配置进行覆盖。
配置修改实时生效( 热发布)
  • 用户在Apollo修改完配置并发布后,客户端能实时(1秒)接收到最新的配置,并通知到应用程序。
版本发布管理
  • 所有的配置发布都有版本概念,从而可以方便地支持配置的回滚
灰度发布
  • 支持配置的灰度发布,即可以让一部分服务先使用某个配置,等用一段时间发现这个配置没问题再全部批量更新。
权限管理、发布审核、操作审计
  • 应用和配置的管理都有完善的权限管理机制,对配置的管理还分为了编辑和发布两个环节,从而减少人为的错误。
  • 所有的操作都有审计日志,可以方便地追踪问题。
配置信息监控
  • 在客户端界面上方便地看到配置在被哪些实例使用
提供开放平台API
  • Apollo自身提供了比较完善的统一配置管理界面,支持多环境、多数据中心配置管理、权限、流程治理等特性。
  • Apollo支持应用方通过开放平台API在Apollo进行配置的修改和发布,并目具备完善0的授权和权限控制。

提供丰富的软件开发工具包

  • 提供 Java 和 .Net 的原生 sdk,方便应用集成
  • 支持 Spring 占位符、注释和 Spring 引导配置属性,便于应用程序使用(需要 Spring 3.1.1+)
  • 提供了 Http API,因此非 Java 和 .Net 应用程序可以方便地集成
  • 丰富的第三方SDK也可用,例如Golang,Python,NodeJS,PHP,C等
部署简单
  • 作为基础设施服务,配置中心对可用性的要求非常高,这迫使Apollo尽可能少地依赖外部依赖。
  • 目前,唯一的外部依赖项是MySQL,因此部署非常简单。只要安装了Java和MySQL,Apollo就可以运行。
  • Apollo 还提供了打包脚本,一键即可生成所有需要的安装包,并支持自定义运行时参数

 Apollo执行流程

大致流程就是用户在Apollo配置中心修改配置,应用程序通过Apollo客户端从配置中心拉取配置信息。

本地文件缓存用于Apollo服务宕机后不影响应用程序获取配置。

Apollo分布式配置中心(一)_第2张图片

 Apollo安装

Git地址:

GitHub - apolloconfig/apollo:Apollo 是一个可靠的配置管理系统,适用于微服务配置管理场景。

https://github.com/apolloconfig/apollo.git

用户手册:

Apollo

环境准备: 

java: JDK 1.8.+ 

maven: 3.3.9 

mysql: 版本要求(5.6.5+)

创建数据库:Git拉取下的源码包的以下路径,执行sql(apolloconfigdb.sql与
apolloportaldb.sql)

Apollo分布式配置中心(一)_第3张图片

 验证导入是否成功

Apollo分布式配置中心(一)_第4张图片

Apollo分布式配置中心(一)_第5张图片  

 使用idea 的git clone 拉取源码

Apollo分布式配置中心(一)_第6张图片

 修改Apollo\scripts\下的build.bat

注:build.sh是linux的

 Apollo分布式配置中心(一)_第7张图片

 修改内容:

rem apollo config db info 
set apollo_config_db_url="jdbc:mysql://localhost:3306/ApolloConfigDB?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true"
set apollo_config_db_username="root"
set apollo_config_db_password="root"

rem apollo portal db info
set apollo_portal_db_url="jdbc:mysql://localhost:3306/ApolloPortalDB?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true"
set apollo_portal_db_username="root"
set apollo_portal_db_password="root"

 修改好后在以下路径找到build.bat并双击执行,执行成功后再项目的apollo-configservice、apollo-adminservice、apollo-portal包下的target找到已经打好的三个jar包并copy 出来(路径按自己喜好来)

Apollo分布式配置中心(一)_第8张图片

编写启动脚本

@echo off
start cmd /c"java -jar apollo-configservice-2.2.0-SNAPSHOT.jar"
start cmd /c"java -jar apollo-adminservice-2.2.0-SNAPSHOT.jar"
start cmd /c"java -jar apollo-portal-2.2.0-SNAPSHOT.jar"
spause // 防止运行完毕后直接关闭界面

双击 

全部启动成功之后,打开浏览器输入:http://localhost:8070/,看到 Apollo 登录页面说明启动成功

用户名密码: apollo/admin

  打开浏览器输入:http://localhost:8080 ,如果出现eureka 的管理界面,说明服务启动正常。

Apollo分布式配置中心(一)_第9张图片

你可能感兴趣的:(分布式)