├── LICENSE ├── README.md ├── lab01 └── README.md ├── lab02 └── README.md ├── lab03 └── README.md ├── lab04 └── README.md ├── lab05 └── README.md ├── lab06 └── README.md └── ppt └── 微服务配置中心Apollo架构和实践.pdf /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 spring2go.com 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # apollo_lab 2 | 微服务配置中心Apollo架构和实践的PPT+实验指导 3 | 4 | 5 | # 课程ppt 6 | 1. [微服务配置中心Apollo架构和实践](ppt/微服务配置中心Apollo架构和实践.pdf) 7 | 8 | # 实验软件需求 9 | 1. [JDK 1.8+](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) 10 | 2. [MySQL(5.6.5+)+Workbench](https://dev.mysql.com/downloads/) 11 | 3. [Git for Windows](https://gitforwindows.org/) 12 | 4. [Postman](https://www.getpostman.com/) 13 | 5. Eclipse STS 3.9.5下载1[网盘](https://pan.baidu.com/s/1xqy4G_r9N24WODBBuGlIog) 下载2[国外](https://spring.io/tools) 14 | 15 | # 实验目录 16 | 1. [lab01](lab01)~Apollo快速起步 17 | 2. [lab02](lab02)~Apollo Client API实操 18 | 3. [lab03](lab03)~Apollo Client和Spring集成(XML方式) 19 | 4. [lab04](lab04)~Apollo Client和Spring集成(代码方式) 20 | 5. [lab05](lab05)~Apollo Client和Spring Boot集成 21 | 6. [lab06](lab06)~Apollo开放平台接入实操 22 | 23 | # 注意 24 | 1. 所有实验仅供学习参考,不是生产级 25 | 2. 实验和ppt采用[Mit license](LICENSE) 26 | 27 | # 极客时间课程 28 | 29 | 《微服务架构实战160讲》 30 | 31 | ![微服务架构实战160讲](https://github.com/spring2go/oauth2lab/blob/master/image/course_ad.jpg) 32 | -------------------------------------------------------------------------------- /lab01/README.md: -------------------------------------------------------------------------------- 1 | 实验1:Apollo快速起步 2 | ====== 3 | 4 | ### 一、实验步骤 5 | 6 | #### 1. 下载Quick Start安装包 7 | 8 | 下载[apollo-build-scripts](https://github.com/nobodyiam/apollo-build-scripts)项目 9 | 10 | #### 2. 创建数据库 11 | 12 | 创建[ApolloPortalDB](https://github.com/nobodyiam/apollo-build-scripts/blob/master/sql/apolloportaldb.sql) 13 | 14 | 校验App表 15 | 16 | 创建[ApolloConfigDB](https://github.com/nobodyiam/apollo-build-scripts/blob/master/sql/apolloconfigdb.sql) 17 | 18 | 校验Item表 19 | 20 | #### 3. 更新数据库连接信息 21 | 22 | demo.sh里头用户名/密码 23 | 24 | #### 4. 启动Apollo配置中心 25 | 确保8070/8080/8090端口未被占用 26 | ``` 27 | ./demo.sh start 28 | ``` 29 | 30 | #### 5. 登录Apollo 31 | 32 | ``` 33 | 超级用户apollo/admin 34 | ``` 35 | 36 | #### 6. 测试客户代码 37 | 运行客户端 38 | ``` 39 | ./demo.sh client 40 | ``` 41 | 42 | #### 7. 修改和发布配置 43 | 44 | #### 8. 创建新用户和项目 45 | 46 | 用户管理 47 | ``` 48 | http://{portal地址}/user-manage.html 49 | ``` 50 | 应用配置 51 | ``` 52 | client/META-INF/app.properties 53 | ``` 54 | 55 | ### 二、参考 56 | 57 | 1. 代码[SimpleApolloConfigDemo](https://github.com/ctripcorp/apollo/blob/master/apollo-demo/src/main/java/com/ctrip/framework/apollo/demo/api/SimpleApolloConfigDemo.java) 58 | 2. 文档[Quick Start](https://github.com/ctripcorp/apollo/wiki/Quick-Start) 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /lab02/README.md: -------------------------------------------------------------------------------- 1 | 实验2:Apollo Client API实操 2 | ====== 3 | 4 | ### 一、实验步骤 5 | 6 | #### 1. 启动配置中心服务 7 | 参考[实验1](../lab01) 8 | 9 | #### 2. 环境和配置中心地址 10 | 11 | 环境变量方式 12 | 13 | ``` 14 | -Denv=dev 15 | -Ddev_meta=http://localhost:8080 16 | ``` 17 | 18 | #### 3. 缺省配置 19 | application 20 | 21 | #### 4. 配置更新事件 22 | #### 5. 创建公有名字空间 23 | 24 | TEST1.apollo 25 | 26 | #### 6. 创建私有名字空间 27 | 28 | datasources 29 | 30 | #### 7. XML配置格式 31 | #### 8. 本地配置缓存 32 | 33 | ``` 34 | C:\opt\data\appId\config-cache 35 | ``` 36 | 37 | ### 二、参考 38 | 39 | 1. 代码[ApolloConfigDemo](https://github.com/ctripcorp/apollo/blob/master/apollo-demo/src/main/java/com/ctrip/framework/apollo/demo/api/ApolloConfigDemo.java) 40 | 2. 文档[Java客户端使用指南](https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97) 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /lab03/README.md: -------------------------------------------------------------------------------- 1 | 实验3:Apollo Client和Spring集成(XML方式) 2 | ====== 3 | 4 | ### 一、实验步骤 5 | 6 | #### 1. 启动配置中心服务 7 | 参考[实验1](../lab01) 8 | 9 | **注意清理前面实验的本地缓存** 10 | 11 | #### 2. 环境和配置中心地址 12 | 环境变量方式 13 | 14 | ``` 15 | -Denv=dev 16 | -Ddev_meta=http://localhost:8080 17 | ``` 18 | 19 | #### 3. spring.xml配置 20 | 21 | 注意点: 22 | * xmlns:apollo声明 23 | * apollo:config顺序 24 | * 配置缺省值 25 | 26 | #### 4. 配置更新 27 | 28 | 缺省名字空间下的timeout 29 | 30 | #### 5. 配置重载 31 | 32 | TEST1.apollo名字空间下的batch配置 33 | 34 | 35 | ### 二、参考 36 | 37 | 1. 代码[XmlApplication](https://github.com/ctripcorp/apollo/blob/master/apollo-demo/src/main/java/com/ctrip/framework/apollo/demo/spring/xmlConfigDemo/XmlApplication.java) 38 | 2. 文档[Java客户端使用指南](https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97) 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /lab04/README.md: -------------------------------------------------------------------------------- 1 | 实验4:Apollo Client和Spring集成(代码方式) 2 | ====== 3 | 4 | ### 一、实验步骤 5 | 6 | #### 1. 启动配置中心服务 7 | 参考[实验1](../lab01) 8 | 9 | **注意清理前面实验的本地缓存** 10 | 11 | #### 2. 环境和配置中心地址 12 | 变量方式 13 | 14 | ``` 15 | -Denv=dev 16 | -Ddev_meta=http://localhost:8080 17 | ``` 18 | 19 | #### 3. 配置类 20 | 21 | 注意点: 22 | * `@EnableApolloConfig`和`@Configuration`一起使用 23 | * 名字空间顺序 24 | * 配置缺省值 25 | 26 | #### 4. 配置更新 27 | 28 | 缺省名字空间下的timeout 29 | 30 | #### 5. 配置重载 31 | 32 | TEST1.apollo名字空间下的batch配置 33 | 34 | #### 6. JSON值自动绑定 35 | 36 | `@ApolloJsonValue` 37 | 38 | ### 二、参考 39 | 40 | 1. 代码[AnnotationApplication](https://github.com/ctripcorp/apollo/blob/master/apollo-demo/src/main/java/com/ctrip/framework/apollo/demo/spring/javaConfigDemo/AnnotationApplication.java) 41 | 2. 文档[Java客户端使用指南](https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97) 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /lab05/README.md: -------------------------------------------------------------------------------- 1 | 实验5:Apollo Client和Spring Boot集成 2 | ====== 3 | 4 | ### 一、实验步骤 5 | 6 | #### 1~6. 同实验4 7 | 8 | Spring Boot有一些场景需要配置在更早的阶段注入 9 | 10 | * 使用@ConditionalOnProperty的场景 11 | * 是有一些spring-boot-starter在启动阶段就需要读取配置做一些事情(如spring-boot-starter-dubbo) 12 | 13 | 14 | 启动方式: 15 | ``` 16 | // 启动 17 | apollo.bootstrap.enabled=true 18 | // 注入多个名字空间 19 | apollo.bootstrap.namespaces = application,TEST1.apollo 20 | ``` 21 | 22 | #### 7. 条件属性(ConditionalOnProperty) 23 | 24 | @ConfigurationProperties如果需要在Apollo配置变化时自动更新注入的值,需要配合Spring Cloud的RefreshScope使用 25 | 26 | * Annotation 27 | ``` 28 | // 条件属性 29 | @ConditionalOnProperty 30 | // 自动刷新 31 | @RefreshScope 32 | // 监听Apollo事件 33 | @ApolloConfigChangeListener 34 | ``` 35 | 36 | 37 | ### 二、参考 38 | 39 | 1. 代码[SpringBootSampleApplication](https://github.com/ctripcorp/apollo/blob/master/apollo-demo/src/main/java/com/ctrip/framework/apollo/demo/spring/springBootDemo/SpringBootSampleApplication.java) 40 | 2. 文档[Java客户端使用指南](https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97) 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /lab06/README.md: -------------------------------------------------------------------------------- 1 | 实验6:Apollo开放平台接入实操(Lab6) 2 | ====== 3 | 4 | ### 一、实验步骤 5 | 6 | #### 1. 注册第三方应用 7 | 8 | ``` 9 | http://{portal_address}/open/manage.html 10 | ``` 11 | 12 | #### 2. 给第三方应用授权 13 | 14 | 绑定App或Namespace 15 | 16 | #### 3. 调用Http REST接口 17 | 18 | * Http Header 1 19 | * Authorization 20 | * token 21 | * Http Header 2 22 | * Content-Type 23 | * application/json;charset=UTF-8 24 | 25 | #### 4. 获取App环境,集群信息 26 | 27 | - URL : http://{portal_address}/openapi/v1/apps/{appId}/envclusters 28 | - Method : GET 29 | - Request Params : 无 30 | 31 | #### 5. 获取集群下所有Namespace信息接口 32 | 33 | - URL : http://{portal_address}/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces 34 | - Method: GET 35 | - Request Params: 无 36 | 37 | #### 6. 获取某个Namespace信息接口 38 | 39 | URL : http://{portal_address}/openapi/v1/envs/{env}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName} 40 | Method : GET 41 | Request Params :无 42 | 43 | #### 7. 其它操作结构 44 | 45 | 1. 创建Namespace 46 | 2. 获取某个Namespace当前编辑人接口 47 | 3. 新增配置接口 48 | 4. 修改配置接口 49 | 5. 删除配置接口 50 | 6. 发布配置接口 51 | 7. 获取某个Namespace当前生效的已发布配置接口 52 | 53 | ### 二、参考 54 | 55 | 1. 文档[Apollo开放平台](https://github.com/ctripcorp/apollo/wiki/Apollo%E5%BC%80%E6%94%BE%E5%B9%B3%E5%8F%B0) 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /ppt/微服务配置中心Apollo架构和实践.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektime-geekbang/apollo_lab/ace8186a7c00eb315af3d78ea1460aa701933651/ppt/微服务配置中心Apollo架构和实践.pdf --------------------------------------------------------------------------------