Apollo源码解析-搭建调试环境
准备工作
本地运行时环境
- 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-adminservice
和 apollo-configservice
项目,基于 apollo-assembly
项目来启动。
- 配置 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 配置日志输出文件
- 启动 IDEA Application
启动完成后,当打开 http://localhost:8080/ 看到 APOLLO-ADMINSERVICE 和 APOLLO-CONFIGSERVICE 注册到 Eureka 中,代表启动成功。
启动 Apollo-Portal
- 配置 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
- 启动 IDEA Application
启动完成后,当打开 http://localhost:8070,出现如下时,表示启动成功。
Demo 应用接入
为了进行测试,需要创建测试的应用,Appid为 100004458 。如下图所示:
- 配置 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
- 启动 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源码解析-搭建调试环境的更多相关文章
- [源码解析] TensorFlow 分布式环境(1) --- 总体架构
[源码解析] TensorFlow 分布式环境(1) --- 总体架构 目录 [源码解析] TensorFlow 分布式环境(1) --- 总体架构 1. 总体架构 1.1 集群角度 1.1.1 概念 ...
- 微服务配置中心 Apollo 源码解析——Admin 发送发布消息
内容参考:https://www.toutiao.com/a6643383570985386509/ 摘要: 原创出处http://www.iocoder.cn/Apollo/admin-server ...
- [源码解析] TensorFlow 分布式环境(2)---Master 静态逻辑
[源码解析] TensorFlow 分布式环境(2)---Master 静态逻辑 目录 [源码解析] TensorFlow 分布式环境(2)---Master 静态逻辑 1. 总述 2. 接口 2.1 ...
- [源码解析] TensorFlow 分布式环境(3)--- Worker 静态逻辑
[源码解析] TensorFlow 分布式环境(3)--- Worker 静态逻辑 目录 [源码解析] TensorFlow 分布式环境(3)--- Worker 静态逻辑 1. 继承关系 1.1 角 ...
- [源码解析] TensorFlow 分布式环境(4) --- WorkerCache
[源码解析] TensorFlow 分布式环境(4) --- WorkerCache 目录 [源码解析] TensorFlow 分布式环境(4) --- WorkerCache 1. WorkerCa ...
- [源码解析] TensorFlow 分布式环境(5) --- Session
[源码解析] TensorFlow 分布式环境(5) --- Session 目录 [源码解析] TensorFlow 分布式环境(5) --- Session 1. 概述 1.1 Session 分 ...
- [源码解析] TensorFlow 分布式环境(6) --- Master 动态逻辑
[源码解析] TensorFlow 分布式环境(6) --- Master 动态逻辑 目录 [源码解析] TensorFlow 分布式环境(6) --- Master 动态逻辑 1. GrpcSess ...
- [源码解析] TensorFlow 分布式环境(7) --- Worker 动态逻辑
[源码解析] TensorFlow 分布式环境(7) --- Worker 动态逻辑 目录 [源码解析] TensorFlow 分布式环境(7) --- Worker 动态逻辑 1. 概述 1.1 温 ...
- [源码解析] TensorFlow 分布式环境(8) --- 通信机制
[源码解析] TensorFlow 分布式环境(8) --- 通信机制 目录 [源码解析] TensorFlow 分布式环境(8) --- 通信机制 1. 机制 1.1 消息标识符 1.1.1 定义 ...
随机推荐
- Markdown的最常用标记符号
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. md就是markdown 如果你要把这段文字定义成标题,只需要在前面加上一个#号, ...
- Apex 获取真正的IP地址
代码如下 declare l_ip varchar2(15); begin if OWA_UTIL.GET_CGI_ENV('X-FORWARDED-FOR') is not null then l_ ...
- Kafka 系列(五)—— 深入理解 Kafka 副本机制
一.Kafka集群 Kafka 使用 Zookeeper 来维护集群成员 (brokers) 的信息.每个 broker 都有一个唯一标识 broker.id,用于标识自己在集群中的身份,可以在配置文 ...
- Flask框架(二)—— 反向解析、配置信息、路由系统、模板、请求响应、闪现、session
Flask框架(二)—— 反向解析.配置信息.路由系统.模板.请求响应.闪现.session 目录 反向解析.配置信息.路由系统.模板.请求响应.闪现.session 一.反向解析 1.什么是反向解析 ...
- python + selenium webdriver 通过python来模拟鼠标、键盘操作,来解决SWFFileUpload调用系统底层弹出框无法定位问题
Webdriver是基于浏览器操作的,当页面上传文件使用的是flash的控件SWFFileUpload调用的时候,调用的是系统底层的文件选择弹出框 这种情况,Webdriver暂时是不支持除页面外的其 ...
- SSH开发模式——Struts2(第三小节)
struts2框架的知识点,虽然分了几个小节,感觉内容还是挺多的,但是你仅仅是入门了而已,想要进一步地提升自己,你得有一颗持之以恒的学习的心,最后的内容我都将在这篇博客中讲到,所以篇幅可能会有点长,希 ...
- 八皇后非递归(仅使用一个数组且可扩展为N皇后问题)
</pre><pre name="code" class="cpp">/* Theme:八皇后(非递归) Coder:秒针的声音 Tim ...
- redux 源码阅读
目录 [目录结构] [utils] actionTypes.js isPlainObject.js warning.js [逻辑代码] index.js createStore.js compose. ...
- k8s西游记 - 切换网络插件IP池
前言 最近在另一个k8s集群中,搭建了kong网关,在配置OIDC插件时,希望使用Memcahe代替Cookie来存储会话信息,于是把部署在同一局域网Memcahe的内网IP,比如:192.168.1 ...
- Egret白鹭开发微信小游戏(使用皮肤搭建UI,代码调用组件功能)
(1)新建皮肤,并命名如下 (2)根据实际情况自定义皮肤,例如: (3)修改名字为如下: (4)运行游戏会自动生成以下代码: (5)在default.thm.json中添加如下代码:(具体路径名字根据 ...