⽣产环境redis和mysql装⼀起_问题背景在实际⼯作中,我们的开发环境,测试环境,⽣产。。。
问题背景
在实际⼯作中,我们的开发环境,测试环境,⽣产环境对应的 Mysql 数据库,Redis 这些信息都不⼀样,每个环境都有对应的⼀套配置,在 Spring Boot 中我们通常会编写多个配置⽂件,也就是每个环境⼀个配置⽂件。
⽐如:
application-dev.properties
1. spring.datasource.druid.url=jdbc:mysql://19
2.168.0.111:3306/xxx
application-test.properties
1. spring.datasource.druid.url=jdbc:mysql://19
2.168.0.112:4306/xxx
使⽤的时候指定使⽤哪个环境的配置:
1. java -jar xxx.jar --spring.profiles.active=test
在微服务架构下,服务的数量会⽐之前的单体应⽤多,部署的节点数量也会很多。当某些配置发⽣修改的时候,我们需要重新修改项⽬中的代码,然后重新发布。当然也可以直接通过上⾯的 --xxx ⽅式进⾏参数的传递,这种⽅式不好的地⽅在于项⽬中的配置跟线上发布的对应不上。
最简单的⼀个⽰例,直接修改项⽬中的配置,然后重新编译,发布,你改⼀次配置⾄少得10来分钟。对于某些活动的应⽤配置,可能在某个时候突然需要进⾏紧急修改,这样⼀来就被时间耽误了事情。
最好的办法是使⽤配置中⼼来集中管理配置,可以做到配置修改⽴马更新到客户端,只要1秒钟就可以搞定配置的修改,优势很明显。
框架推荐
今天给⼤家介绍⼀款在社区⾮常⽕的配置中⼼:Apollo
Apollo()是携程框架部门研发的分布式配置中⼼,能够集中化管理应⽤不同环境、不同集的配置,配置修改后能够实时推送到应⽤端,并且具备规范的权限、流程治理等特性,适⽤于微服务配置管理场景。
对Apollo本⾝就不做过多细致的介绍,感兴趣的朋友可以去 Github 详细了解。
mysql下载add produce今天主要是讲下在 Spring Boot 中如何对接 Apollo 进⾏配置管理。
Spring Boot中使⽤
进⼊演⽰地址,⼀个应⽤点进去:
我们基于默认的集的application空间来做演⽰
准备⼀个 Spring Boot 项⽬,加⼊ Apollo Client 的 Maven 依赖:
1.
2. ip.framework.apollo
3. apollo-client
4. 1.1.0
5.
然后配置Apollo的信息,配置放在application.properties中:
1. app.id=apollo-demo
3. abled=true
4. apollo.bootstrap.namespaces=application
· app.id:⾝份信息,就是应⽤名称,跟我们第⼀张图点进去的⼀样
·
a:Meta Server(Config Service)
· abled:项⽬启动的bootstrap阶段,向Spring容器注⼊配置信息
· apollo.bootstrap.namespaces:注⼊命名空间
环境我们直接在main⽅法中指定,演⽰⽅便:
@SpringBootApplication
public class App {
public static void main(String[] args) {
// 指定环境(开发演⽰⽤,不能⽤于⽣产环境))
System.setProperty("env", "DEV");
SpringApplication.run(App.class, args);
}
}
我们可以准备⼀个接⼝进⾏测试配置的读取,配置读取的⽅式有很多种,我们就⽤最常⽤的@Value
@RestController
public class DemoController {
@Value("${test.username}")
private String name;
@GetMapping("/callHello")
public String callHello() {
return name;
}
}
当配置修改之后,这边获取的值也会实时修改,⼤家可以⾃⼰测试下。本⽂只是简单的带⼤家体验了⼀下如何使⽤,还有很多东西没有讲解,如果⼤家想学习的话可以去我的⽹站进⾏学习,我录制了⼀套课程。
课程⼤纲
· 课程介绍
· 概念介绍
· 架构设计介绍
· Apollo快速部署
· 后台介绍
· Apollo整合Spring Boot
· 配置监听
· 存储Json数据
· 扩展使⽤
· ⽣产环境部署讲解
欢迎加⼊我的知识星球,⼀起交流技术,免费学习猿天地的所有课程,包括这套Apollo 尹吉欢
我不差钱啊
喜欢作者
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论