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 定义 ...
随机推荐
- 大话 Spring Session 共享
javaweb中我们项目稍微正规点,都会用到单点登录这个技术.实现它的方法各家有各界的看法.这几天由于公司项目需求正在研究.下面整理一下最近整理的心得. 简介 在分布式项目中另我们头疼的是多项目之间的 ...
- 存在于文件名中的SQL手工注入
SQL注入已经在前一章为大家介绍了个大概,本文将讲述我遇到的本以为是文件上传漏洞,却是以文件名触发的SQL注入! 本文分享的内容同样来自于一道CTF题! 1. 直接进入正题 (1) 初步探测 先看一下 ...
- python 之os模块用法大全
Python的标准库中的os模块包含普遍的操作系统功能.这个模块的作用主要是提供与平台无关的功能.也就是说os模块能够处理平台间的差异问题,使得编写好的程序无需做任何改动就能在另外的平台上运行 这边给 ...
- SpringMVC源码分析2:SpringMVC设计理念与DispatcherServlet
转自:https://my.oschina.net/lichhao/blog SpringMVC简介 SpringMVC作为Struts2之后异军突起的一个表现层框架,正越来越流行,相信javaee的 ...
- python 32 操作系统与进程
目录 1. 操作系统 1.1 作用 1.2 操作系统的发展 2. 进程的理论 2.1 相关名词 2.2 进程的创建 2.3 进程的状态: 1. 操作系统 管理.控制.协调计算机硬件与软件资源的计算 ...
- Egret白鹭开发微信小游戏手机震动功能
最近一直在修改调整项目,没有接触新功能,今天终于有机会,去翻了微信API,发现手机震动的API,今天分享出来大家一起学习学习 对于震动,微信提供了两个API,分别是: wx.vibrateShort: ...
- Python之流程控制——while循环
Python之流程控制--while循环 一.语法 while 条件: 执行代码 while就是当的意思,它指当其后面的条件成立,就执行while下面的代码. 例:写一个从0打印到10的程序 coun ...
- 以股票RSI指标为例,学习Python发送邮件功能(含RSI指标确定卖点策略)
本人之前写过若干“给程序员加财商”的系列文,目的是通过股票案例讲述Python知识点,让大家在学习Python的同时还能掌握相关的股票知识,所谓一举两得. 在之前的系列文里,大家能看到K线,均线,成交 ...
- ResourceManager学习之Application,状态机管理
Application管理 YARN中,Application是指应用程序,他可能启动多个运行实例,每个运行实例由一个ApplicationMaster与一组该ApplicationMaster启动的 ...
- 深入理解 Handler 消息机制
记得很多年前的一次面试中,面试官问了这么一个问题,你在项目中一般如何实现线程切换? 他的本意应该是考察 RxJava 的使用,只是我的答案是 Handler,他也就没有再追问下去了.在早期 Andro ...