Apollo 配置中心搭建与简单说明


文章目录

  • Apollo 配置中心搭建与简单说明
  • 从git拉取Apollo源码
  • 创建所需数据库
  • 配置项目
  • apollo-configservice 服务配置
  • apollo-adminservice 服务配置
  • apollo-portal 服务配置
  • SpringBoot项目对接Apollo
  • Apollo 原理简单总结


从git拉取Apollo源码

github地址:https://github.com/ctripcorp/apollo
# 由于github上下载太慢,我从码云上进行下载(码云的代码比官方git仓库要老几个版本)
码云地址:https://gitee.com/lepdou/apollo

创建所需数据库

  1. Quick Start 中获取所需库表(库表不要从码云获取,直接从github上找)

配置项目

apollo 项目主要分为三大块,详细设计请参考(Apollo配置中心设计):

  1. apollo-adminservice
  2. apollo-configservice
  3. apollo-portal

apollo-configservice 服务配置

提供配置的读取、推送等功能,服务对象是Apollo客户端

需要注意的是:该服务与Eureka和Meta Server 部署在同一个JVM进程中,故该服务相当于一个服务注册中心,提供服务注册与发现功能

Meta Server:是携程对注册中心的一层封装,相当于Eureka;client和Portal在进行服务的注册与发现的时候,会先对Meta Server进行请求,再由Meta Server进行转发;

项目中在application.yml中添加数据源的配置文件即可:

datasource:
    url: jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
    username: root
    password: 123456

apollo-adminservice 服务配置

提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)

项目中在application.yml中添加数据源的配置文件即可:

datasource:
    url: jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
    username: root
    password: 123456

由于注册中心是配置在 apollo-configservice 中,故配置的时候需要查看 bootstrap.yml 对注册中心地址进行配置,由于默认是localhost,故,本地启动不需要设置

apollo-portal 服务配置

提供Web界面供用户管理配置

项目中修改端口号、数据源和注册中心地址,修改的文件为:

application.yml

spring:
  application:
    name: apollo-portal
  profiles:
    active: ${apollo_profile} # 可以在apollo-env.properties选择环境进行激活
  datasource:
    url: jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
    username: root
    password: 123456

server:
  port: 8011
  compression:
    enabled: true
  
logging:
  file: /opt/logs/100003173/apollo-portal.log

management:
  health:
    status:
      order: DOWN, OUT_OF_SERVICE, UNKNOWN, UP

apollo-env.properties:

这里只需要修改fat.meta、uat.meta、pro.meta,具体可以查看PortalConfig#portalSupportedEnvs()

local.meta=http://localhost:8080
dev.meta=${dev_meta}
fat.meta=http://localhost:8080
uat.meta=http://localhost:8080
lpt.meta=${lpt_meta}
pro.meta=http://localhost:8080

SpringBoot项目对接Apollo

参考Java客户端使用指南

  1. 导入Apollo Client依赖
<dependency>
    <groupId>com.ctrip.framework.apollo</groupId>
    <artifactId>apollo-client</artifactId>
    <version>1.4.0</version>
</dependency>
  1. 注入默认application namespace的配置示例
# will inject 'application' namespace in bootstrap phase
     apollo.bootstrap.enabled = true
  1. 设置appid,这appid是你在已经搭好的apollo平台上创建时的id
app.id=apollo-demo
  1. 申明Meta Server地址,需要这个地址进行服务发现,获取远程服务地址然后进行rpc请求获取拉取配置。配置Meta Server 有以下方式:
# 1.启动项进行配置
-Dapollo.meta=http://config-service-url

# 2.Spring Boot的配置文件中进行配置
apollo.meta=http://config-service-url

# 其他方式后面在研究
  1. \opt\data{appid}\config-cache\ 下创建你的配置{appid}+default+application.properties

Apollo 原理简单总结

Admin 和 Config 提供配置服务,将配置存储到数据库中

Client 和 Portal 从 Meta Server(服务注册中心与Config、Eureka同一进程) 拉取服务地址进行RPC请求获取数据