apllo开源分布式配置中心详解

 更新时间:2023年02月22日 10:26:49   作者:DaveCui  
这篇文章主要为大家介绍了apllo开源分布式配置中心部署详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

什么是apllo开源分布式配置中心?

apllo开源分布式配置中心是携程框架部门研发的一个能够集中化管理应用的不同环境、不同集群的配置,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

apllo开源分布式配置中心有什么优势?

apllo开源分布式配置中心有以下几个优势:

  • 支持多种数据格式(properties, xml, json, yaml, txt等)
  • 支持多种语言(Java, .Net, Go等)
  • 支持多种环境(DEV, FAT, UAT, PRO等)
  • 支持多种集群(default, shanghai, beijing等)
  • 支持多种命名空间(namespace),可以将不同的配置放到不同的命名空间中
  • 支持灰度发布和回滚功能
  • 支持修改推送和实时生效
  • 支持权限控制和审计功能

如何部署apllo开源分布式配置中心?

部署apllo开源分布式配置中心需要以下几个步骤:

  • 下载并解压apollo-build-scripts.zip文件
  • 修改build.sh文件中的数据库连接信息和端口号
  • 运行build.sh文件生成可执行文件
  • 运行startup.sh文件启动服务端
  • 访问http://localhost:8070/进入控制台

如何在springBoot项目中获取apollo的配置?

在springBoot项目中获取apollo的配置需要以下几个步骤:

1. 在pom.xml文件中添加apollo-client依赖

<dependency>
    <groupId>com.ctrip.framework.apollo</groupId>
    <artifactId>apollo-client</artifactId>
    <version>1.8.0</version>
</dependency>

2. 在resources目录下创建META-INF/app.properties文件,并指定app.id和env属性

app.id=sample-app # 应用ID,与Apollo控制台保持一致
env=DEV # 环境,与Apollo控制台保持一致

3. 在application.yml或application.properties文件中指定apollo.bootstrap.enabled=true和apollo.meta=http://localhost:8080属性

# application.yml
apollo:
  bootstrap:
    enabled: true # 启用Apollo自动注入功能
  meta: http://localhost:8080 # 指定Apollo服务端地址,也可以通过-D参数传递或者通过系统变量设置 

4. 在springBoot项目中使用@Value或@ConfigurationProperties注解获取配置值

// 使用@Value注解获取单个值,需要指定${}占位符和默认值,如果没有默认值,则必须在Apollo控制台设置该值,否则会报错。
// 另外,如果想要实时更新值,还需要添加@RefreshScope注解。
@RestController
@RefreshScope // 实时更新注解 
public class SampleController {
  @Value("${timeout:100}") // 单个值注解 
  private int timeout;
  @GetMapping("/timeout")
  public int getTimeout() {
    return timeout;
  }
}
// 使用@ConfigurationProperties注解获取对象值,需要指定prefix属性,并且在类上添加@Component或@Bean注解。
// 另外,如果想要实时更新对象,还需要添加@RefreshScope注解。
@Component // 对象注解 
@ConfigurationProperties
prefix="user" // 对象前缀 
@RefreshScope // 实时更新注解 
public class User {
  private String name;
  private int age;
  // 省略getter和setter方法
}
// 在控制器中注入对象
@RestController
public class UserController {
  @Autowired
  private User user;
  @GetMapping("/user")
  public User getUser() {
    return user;
  }
}

5. ConfigService类来获取apollo的配置

我们公司用的是这个方法来获取配置

ConfigService类是apollo客户端提供的一个核心类,它可以通过静态方法getAppConfig()或者getConfig(namespace)来获取Config对象,然后通过Config对象的方法来获取配置值。

例如:

// 获取默认命名空间的配置
Config config = ConfigService.getAppConfig();
// 获取指定命名空间的配置
Config config = ConfigService.getConfig("test");
// 获取配置值,如果没有则返回默认值
String value = config.getProperty("key", "default");
// 添加配置变更监听器
config.addChangeListener(new ConfigChangeListener() {
  @Override
  public void onChange(ConfigChangeEvent changeEvent) {
    // 处理变更事件
  }
});

使用ConfigService获取配置的优势是:

  • 可以动态获取最新的配置,不需要重启应用
  • 可以监听配置变更事件,实现自定义逻辑
  • 可以支持多个命名空间和集群

以上就是apllo开源分布式配置中心详解的详细内容,更多关于apllo开源分布式配置的资料请关注脚本之家其它相关文章!

相关文章

  • Java分页查询--分页显示(实例讲解)

    Java分页查询--分页显示(实例讲解)

    下面小编就为大家带来一篇Java分页查询--分页显示(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 简单谈谈Spring Ioc原理解析

    简单谈谈Spring Ioc原理解析

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。
    2018-09-09
  • SpringBoot实现单文件与多文件上传功能

    SpringBoot实现单文件与多文件上传功能

    这篇文章主要介绍了SpringBoot实现单文件与多文件上传功能,Spring MVC对文件上传做了简化,而在Spring Boot中对此做了更进一步的简化,文件上传变得更为方便,下面开始演示,需要的小伙伴可以参考一下,希望对你有所帮助
    2022-01-01
  • Activiti如何动态获取流程图过程详解

    Activiti如何动态获取流程图过程详解

    这篇文章主要介绍了Activiti如何动态获取流程图过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 解决mybatis case when 报错的问题

    解决mybatis case when 报错的问题

    这篇文章主要介绍了解决mybatis case when 报错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • mybatis-plus 如何配置逻辑删除

    mybatis-plus 如何配置逻辑删除

    这篇文章主要介绍了mybatis-plus 如何配置逻辑删除,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • JAVA获得域名IP地址的方法

    JAVA获得域名IP地址的方法

    这篇文章主要介绍了JAVA获得域名IP地址的方法,涉及java域名操作的相关技巧,需要的朋友可以参考下
    2015-06-06
  • 浅谈MyBatis 如何执行一条 SQL语句

    浅谈MyBatis 如何执行一条 SQL语句

    Mybatis 是 Java 开发中比较常用的 ORM 框架。在日常工作中,我们都是直接通过 Spring Boot 自动配置,并直接使用,但是却不知道 Mybatis 是如何执行一条 SQL 语句的,下面就一起讲解一下
    2021-05-05
  • 手把手教你写Maven的archetype项目脚手架

    手把手教你写Maven的archetype项目脚手架

    本文主要介绍了Maven的archetype项目脚手架,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • SpringBoot如何使用p6spy监控数据库

    SpringBoot如何使用p6spy监控数据库

    这篇文章主要介绍了SpringBoot如何使用p6spy监控数据库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01

最新评论