apollo阿波罗锯片图片,apollo阿波罗公链

  

  配置中心   

  

  在实际的编码工作中,我们会遇到这样的问题吗?一组配置参数和配置文件将用于我们的本地开发环境,另一组配置参数和配置文件将用于测试环境。但是,在打包和发布项目时,将使用另一组配置参数和配置文件。考虑到信息安全的重要性,生产环境中使用的配置参数,如数据库IP、用户名和密码以及第三方帐户信息,理想情况下仅限于有限数量的人使用。我们如何保护这些敏感数据?比如我们每次发布生产环境的时候,不希望因为配置参数的错误或遗漏给我们的发布带来发布失败或灾难?这时,我们可以考虑使用一个统一的配置中心来管理我们项目中使用的配置参数,并有相应的权限管理。那么我觉得阿波罗应该是我们能想到的解决方案之一。   

  

  Apollo是携程使用的集中式配置管理的一个很好的解决方案。它提供了一个web界面,方便我们管理配置参数,并提供配置回滚功能。我们只需要在web界面中使用鼠标就可以将相应的配置参数回滚到以前的版本。   

  

   pollo访问Github   

  

  Apollo在GitHub是开源的。通过截图可以看到这个项目的关注度和下载量。   

  

  让我们通过在本地部署一个独立平台来研究Apollo是如何工作的。如果项目需要在生产环境中使用,需要以分布式的方式部署到集群中,提高整个系统的高可用性。有关详细信息,请参考官方文档:https://github.com/ctripcorp/apollo/wiki/分布式部署指南。   

  

  首先确认Java版本,确保JDK版本在1.8以上   

  

  Java-Version Java Version ' 1 . 8 . 0 _ 221 ' Java(TM)SE运行时环境(Build 1 . 8 . 0 _ 221-B11)Java Hotspot(TM)64位服务器VM (Build 25.221-B11,混合模式)二、Apollo需要Mysql数据存储数据,保证Mysql数据库。   

  

  显示Variable_name='version '的变量;第三,从GitHub下载Apollo安装包   

  

  git clone https://github.com/nobodyiam/apollo-build-scripts IV,创建数据库和表   

  

  CD Apollo-build-scripts MySQL-h localhost-u root-p输入数据库密码创建数据库config _ portal使用config _ portalsource SQL/apolloportaldb . SQL创建数据库配置;使用配置;Source sql/apolloconfigdb.sql验证数据库和表是否创建成功。   

  

  从config_portal中选择“Id”、“AppId”、“Name”。App从配置中选择“命名空间Id”、“键”、“值”和“注释”。项;查询结果   

  

  查询结果   

  

  不及物动词在启动脚本中配置数据库连接信息。   

  

  VI demo . sh # Apollo config db info Apollo _ config _ db _ URL=JDBC : my SQL ://192 . 168 . 0 .3306/config?character encoding=ut F8 Apollo _ config _ db _ username=root Apollo _ config _ db _ password=root # Apollo portal db info Apollo _ portal _ db _ URL=JDBC : my SQL ://192 . 168 . 0 . 1283:3306/config _ portal?character encoding=ut F8 Apollo _ portal _ db _ username=root Apollo _ portal _ db _ password=root seven,执行启动脚本。/demo . sh start windows new JAVA _ HOME is :/c/tools/JDK-8U ~ 1====开始   

service ====Service logging file is ./service/apollo-service.logStarted <293>Waiting for config service startup.......Config service started. You may visit http://localhost:8080 for service status now!Waiting for admin service startup..Admin service started==== starting portal ====Portal logging file is ./portal/apollo-portal.logStarted <351>Waiting for portal startup....Portal started. You can visit http://localhost:8070 now!出现上述信息则说明这个Apollo启动成功。

  

八,浏览器地址栏输入:http://localhost:8070访问Apollo Web登录界面,默认账号是apollo/admin

  

演示结果

  

到此为止,Apollo单机版的平台已经部署完成。

  

网络图

  

下面我们创建一个SpringBoot项目,研究下SpringBoot如何与Apollo整合使用。

  

一,在STS中新建一个SpringBoot工程,工程结构如下图:

  

源代码结构

  

二,将Apollo客户端的依赖加入pom.xml中

  

maven依赖

  

三,需要在Apollo配置中心创建一个应用,应用名:my-app,应用ID:123test321,该应用ID必须在Apollo平台中唯一

  

演示结果

  

四,将应用ID配置到SpringBoot项目的resources/META-INF/app.properties

  

# testapp.id=123test321apollo.meta=http://localhost:8080env=DEV五,配置SpringBoot主配置文件application.yml,开启Apollo

  

apollo: bootstrap: enabled: true # will inject 'application' and 'TEST1.apollo' namespaces in bootstrap phase namespaces: application六,我们通过一个简单的Controller来验证是否能够从Apollo拿到最新的配置参数,同时我们通过配置参数来控制Swagger的开启和关闭。

  

@Slf4j@RestController@RequestMapping("/apollo")public class ConfigController { @ApolloConfig private Config config; @GetMapping("/index/{key}") @ResponseBody public String index(@PathVariable("key") String key) { log.info("request key:{}", key); return config.getProperty(key, "defaultValue"); }}@Configuration@EnableSwagger2public class Swagger2Config { @Value("${swagger.enable:false}") private boolean enableSwagger; @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).enable(enableSwagger).select() .apis(RequestHandlerSelectors.basePackage("com.demo.apollo.controller")).paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder().title("SprintBoot Swagger2 build API docs") .description("Spring Boot Swagger2 Restful API").contact(new Contact("xiaobaoqiang", "", "")) .version("1.0").build(); }}七,启动SpringBoot项目

  

演示结果

  

通过启动日志,我们可以看到SpringBoot已经发现了我们上面部署的Apollo配置服务,并且读取到SpringBoot启动所需要的配置参数,例如:端口号9002

  

curl -X GET "http://localhost:9002/apollo/index/aa" -H "accept: */*"testcurl -X GET "http://localhost:9002/apollo/index/cc" -H "accept: */*"defaultValue通过以上实践,我们在本地部署了一套最小化的统一配置管理服务,通过Apollo配置中心,我们可以有效的保护敏感的配置参数,并且做到权限管理,保证了我们的数据安全。同时保证了项目在生产环境的安全,不会因为数据账号等关键信息泄露,遭受恶意攻击。

  

参考:

  

https://github.com/ctripcorp/apollo

  

https://github.com/ctripcorp/apollo/wiki/Quick-Start

  

文章如有不妥之处,欢迎指正!谢谢!

相关文章