准备工作

本地运行时环境

  • JDK :1.8+
  • MySQL :5.6.5+
  • Maven :3.6.1
  • IDE :IntelliJ IDEA

Apollo的表结构对timestamp使用了多个default声明,所以需要5.6.5以上版本。

从官方仓库 https://github.com/ctripcorp/apollo Fork 出属于自己的仓库 https://github.com/wupeixuan/apollo

使用 IntelliJ IDEA 从 Fork 出来的仓库拉取代码。拉取完成后,Maven 会下载所需依赖包。

创建数据库

Apollo 服务端共有两个数据库:

  • ApolloPortalDB
  • ApolloConfigDB

ApolloPortalDB 只需要在生产环境部署一个即可,而 ApolloConfigDB 需要在每个环境部署一套,如 fat、uat 和 pro 分别部署3套 ApolloConfigDB。

可以根据实际情况选择通过手动导入SQL或是通过Flyway自动导入SQL创建。

在 Apollo 项目下的 scripts 目录,提供了对应的初始化脚本:

创建 ApolloPortalDB

根据实际情况修改 flyway-portaldb.properties 中的 flyway.user、flyway.password 和 flyway.url 配置。

在 apollo 项目根目录下执行mvn -N -Pportaldb flyway:migrate

导入成功后,表结构如下:

创建 ApolloConfigDB

根据实际情况修改 flyway-configdb.properties 中的 flyway.user、flyway.password 和 flyway.url 配置。

在 apollo 项目根目录下执行mvn -N -Pconfigdb flyway:migrate

导入成功后,表结构如下:

本地启动

启动 Apollo Config Service 和 Apollo Admin Service

同时启动 apollo-adminserviceapollo-configservice 项目,基于 apollo-assembly 项目来启动。

  1. 配置 IDEA Application

Main class:com.ctrip.framework.apollo.assembly.ApolloApplication

VM options:
-Dapollo_profile=github
-Dspring.datasource.url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
-Dspring.datasource.username=root
-Dspring.datasource.password=123456
-Dlogging.file=D:/logs/apollo-assembly.log Program arguments:--configservice --adminservice Use classpath of module:apollo-assembly
  • spring.datasource 配置连接 ApolloConfigDB 数据库
  • logging.file 配置日志输出文件
  1. 启动 IDEA Application

启动完成后,当打开 http://localhost:8080/ 看到 APOLLO-ADMINSERVICE 和 APOLLO-CONFIGSERVICE 注册到 Eureka 中,代表启动成功。

启动 Apollo-Portal

  1. 配置 IDEA Application

Main class:com.ctrip.framework.apollo.portal.PortalApplication

VM options:
-Dapollo_profile=github,auth
-Ddev_meta=http://localhost:8080/
-Dserver.port=8070
-Dspring.datasource.url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
-Dspring.datasource.username=root
-Dspring.datasource.password=123456
-Dlogging.file=D:/logsh/apollo-portal.log Use classpath of module:apollo-portal

内置账号

  • username :Apollo
  • password :admin
  1. 启动 IDEA Application

启动完成后,当打开 http://localhost:8070,出现如下时,表示启动成功。

Demo 应用接入

为了进行测试,需要创建测试的应用,Appid为 100004458 。如下图所示:

  1. 配置 IDEA Application

Main class:com.ctrip.framework.apollo.demo.api.SimpleApolloConfigDemo

VM options:
-Denv=dev
-Ddev_meta=http://localhost:8080 Use classpath of module:apollo-demo
  1. 启动 IDEA Application

成功后,输出日志如下:

Apollo Config Demo. Please input key to get the value. Input quit to exit.

输入 timeout ,回车,输出如下:

timeout
> [apollo-demo][main]2019-09-17 01:40:32,775 INFO [com.ctrip.framework.apollo.demo.api.SimpleApolloConfigDemo] Loading key : timeout with value: 100

客户端日志级别默认是DEBUG,如果需要调整,可以通过修改apollo-demo/src/main/resources/log4j2.xml中的level配置

<logger name="com.ctrip.framework.apollo" additivity="false" level="trace">
<AppenderRef ref="Async" level="DEBUG"/>
</logger>

Apollo源码解析-搭建调试环境的更多相关文章

  1. [源码解析] TensorFlow 分布式环境(1) --- 总体架构

    [源码解析] TensorFlow 分布式环境(1) --- 总体架构 目录 [源码解析] TensorFlow 分布式环境(1) --- 总体架构 1. 总体架构 1.1 集群角度 1.1.1 概念 ...

  2. 微服务配置中心 Apollo 源码解析——Admin 发送发布消息

    内容参考:https://www.toutiao.com/a6643383570985386509/ 摘要: 原创出处http://www.iocoder.cn/Apollo/admin-server ...

  3. [源码解析] TensorFlow 分布式环境(2)---Master 静态逻辑

    [源码解析] TensorFlow 分布式环境(2)---Master 静态逻辑 目录 [源码解析] TensorFlow 分布式环境(2)---Master 静态逻辑 1. 总述 2. 接口 2.1 ...

  4. [源码解析] TensorFlow 分布式环境(3)--- Worker 静态逻辑

    [源码解析] TensorFlow 分布式环境(3)--- Worker 静态逻辑 目录 [源码解析] TensorFlow 分布式环境(3)--- Worker 静态逻辑 1. 继承关系 1.1 角 ...

  5. [源码解析] TensorFlow 分布式环境(4) --- WorkerCache

    [源码解析] TensorFlow 分布式环境(4) --- WorkerCache 目录 [源码解析] TensorFlow 分布式环境(4) --- WorkerCache 1. WorkerCa ...

  6. [源码解析] TensorFlow 分布式环境(5) --- Session

    [源码解析] TensorFlow 分布式环境(5) --- Session 目录 [源码解析] TensorFlow 分布式环境(5) --- Session 1. 概述 1.1 Session 分 ...

  7. [源码解析] TensorFlow 分布式环境(6) --- Master 动态逻辑

    [源码解析] TensorFlow 分布式环境(6) --- Master 动态逻辑 目录 [源码解析] TensorFlow 分布式环境(6) --- Master 动态逻辑 1. GrpcSess ...

  8. [源码解析] TensorFlow 分布式环境(7) --- Worker 动态逻辑

    [源码解析] TensorFlow 分布式环境(7) --- Worker 动态逻辑 目录 [源码解析] TensorFlow 分布式环境(7) --- Worker 动态逻辑 1. 概述 1.1 温 ...

  9. [源码解析] TensorFlow 分布式环境(8) --- 通信机制

    [源码解析] TensorFlow 分布式环境(8) --- 通信机制 目录 [源码解析] TensorFlow 分布式环境(8) --- 通信机制 1. 机制 1.1 消息标识符 1.1.1 定义 ...

随机推荐

  1. Linux文件及目录管理

    1.Linux文件目录树 /:根目录,linux文件系统的最顶端和入口 bin:存放用户二进制文件(如:ls,cd,mv等),实则/user/bin的硬链接(相当于Windows系统的快捷方式) bo ...

  2. H5 Handlebars的简单使用

    扫码关注公众号,不定期更新干活 web 开发中,js 解析JSON 是经常的事情.非常繁琐.handlebars 使用了模版,只要你定义一个模版,提供一个json对象,handlebars 就能吧js ...

  3. DT-06 For AT

    乐鑫官方AT指令固件- 最新1.5.4版本 此固件仅支持AT指令对模块进行操作. 1.DT-06固件的烧录 1.1打开ESP模块下载工具ESPFlashDownloadTool,选择需要下载的固件,填 ...

  4. (十二)c#Winform自定义控件-分页控件

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...

  5. Django2.2中间件详解

    中间件是 Django 用来处理请求和响应的钩子框架.它是一个轻量级的.底层级的"插件"系统,用于全局性地控制Django 的输入或输出,可以理解为内置的app或者小框架. 在dj ...

  6. python代码规范整理

    规范参考源: 1.pep8(python代码样式规范):中文文档      https://blog.csdn.net/ratsniper/article/details/78954852 2.pep ...

  7. 快速了解Python并发编程的工程实现(下)

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  8. Nginx安装之源码安装

    nginx部署 1. 安装依赖 yum install gcc gccc++ pcre pcre-devel zlib zlib-devel openssl openssl-devel-y 2. 下载 ...

  9. slice splice(数组) 和 slice substr substring split (字符串)的区别

    array.slice(start,end)slice()如果不传入参数二,那么将从参数一的索引位置开始截取,一直到数组尾如果两个参数中的任何一个是负数,array.length会和它们相加 stri ...

  10. js遍历API总结

    1.for 循环 普通遍历方法,可优化,存下数组的length,避免每次都去获取数组的length,性能提升 2.for-in 可遍历数组和对象, (for key in obj){} 该方法既可以读 ...