SpringCloud项目中使用携程Apollo分布式配置中心

简介: SpringCloud项目中使用携程Apollo分布式配置中心


image.png

管理后台 http://localhost:8070


image.png

注册中心 http://localhost:8080


image.png

# 与SpringCloud/SpringBoot集成



  • 在apollo管理后台新建项目


image.png

添加配置


image.png


  • 添加依赖

<dependency>
                <groupId>com.ctrip.framework.apollo</groupId>
                <artifactId>apollo-client</artifactId>
                <version>1.1.0</version>
            </dependency>
  • SpringBoot项目配置

spring:
  application:
    name: biz-user
app:
  id: ${spring.application.name}    # 与apollo管理后台配置的项目的appId一致
apollo:
  meta: http://localhost:8080
  bootstrap:
    enabled: true          # 是否启用apollo
    namespaces: application,TEST1.base   # 该app(appId)下的某个命名空间(某个配置文件)/或者x.y(x部门下的公开y命名空间)
  • apollo.bootstrap可以使用注解的方式进行配置

@EnableApolloConfig({"application", "TEST1.base"})


  • 公共配置文件

image.png


先创建一个普通项目,再在项目中添加Namespace


image.png

  • 注意看提示和备注
  • 测试

@Slf4j
@EnableApolloConfig({"application", "TEST1.base"})
@MapperScan({"com.futao.biz.user.dao", "com.futao.biz.user.mapper"})
@SpringBootApplication(scanBasePackages = {"com.futao.common", "com.futao.biz.user"})
public class UserApplication implements CommandLineRunner {
    @Value("${app.apollo.username}")
    private String userName;
    @Value("${app.apollo.age}")
    private int age;
    @Value("${apl.conf1}")
    private String c1;
    @Value("${apl.conf2}")
    private String c2;
    @Value("${apl.conf3}")
    private String c3;
    @Value("${apl.conf4}")
    private String c4;
    public static void main(String[] args) {
        SpringApplication.run(UserApplication.class, args);
    }
    @Override
    public void run(String... args) throws Exception {
        new Thread(() -> {
            while (true) {
                log.info(StringUtils.repeat("-", 50));
                log.info("userName:{}", userName);
                log.info("age:{}", age);
                log.info("c1:{}", c1);
                log.info("c2:{}", c2);
                log.info("c3:{}", c3);
                log.info("c4:{}", c4);
                try {
                    Thread.sleep(2000L);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}


image.png

注意:


  • 项目中配置的application命名空间默认读取的是该appId下的application命名空间(并且是私有的命名空间),一般如果要读取公共的配置文件,格式是xxx.yyy,xxx为部门名称,yyy为公共的命名空间
  • apollo中配置的属性并不需要在配置文件中先定义好。(可以只在apollo中配置即可)
  • 配置文件的优先级为引用顺序递减
  • @EnableApolloConfig({"application", "TEST1.base"})=>TEST1.base中的配置无法覆盖application中的配置。
  • @EnableApolloConfig({"TEST1.base","application"})=>application中的配置无法覆盖TEST1.base中的配置。
相关文章
|
27天前
|
消息中间件 负载均衡 Java
如何设计一个分布式配置中心?
这篇文章介绍了分布式配置中心的概念、实现原理及其在实际应用中的重要性。首先通过一个面试场景引出配置中心的设计问题,接着详细解释了为什么需要分布式配置中心,尤其是在分布式系统中统一管理配置文件的必要性。文章重点分析了Apollo这一开源配置管理中心的工作原理,包括其基础模型、架构模块以及配置发布后实时生效的设计。此外,还介绍了客户端与服务端之间的交互机制,如长轮询(Http Long Polling)和定时拉取配置的fallback机制。最后,结合实际工作经验,分享了配置中心在解决多台服务器配置同步问题上的优势,帮助读者更好地理解其应用场景和价值。
62 18
|
7月前
|
NoSQL Java Nacos
SpringCloud集成Seata并使用Nacos做注册中心与配置中心
SpringCloud集成Seata并使用Nacos做注册中心与配置中心
243 3
|
3月前
|
数据库
如何在Seata框架中配置分布式事务的隔离级别?
总的来说,配置分布式事务的隔离级别是实现分布式事务管理的重要环节之一,需要认真对待和仔细调整,以满足业务的需求和性能要求。你还可以进一步深入研究和实践 Seata 框架的配置和使用,以更好地应对各种分布式事务场景的挑战。
140 63
|
4月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
75 1
|
5月前
|
负载均衡 Java Nacos
SpringCloud基础2——Nacos配置、Feign、Gateway
nacos配置管理、Feign远程调用、Gateway服务网关
SpringCloud基础2——Nacos配置、Feign、Gateway
|
4月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
67 0
|
4月前
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
76 0
|
6月前
|
Java 微服务 Spring
Spring Cloud全解析:配置中心之解决configserver单点问题
但是如果该configserver挂掉了,那就无法获取最新的配置了,微服务就出现了configserver的单点问题,那么如何避免configserver单点呢?
|
6月前
|
运维 Java Nacos
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
|
6月前
|
Java 测试技术 Spring
分布式之配置中心
分布式之配置中心
64 1