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多线程工具CompletableFuture的使用教程

    Java多线程工具CompletableFuture的使用教程

    CompletableFuture实现了CompletionStage接口和Future接口,前者是对后者的一个扩展,增加了异步回调、流式处理、多个Future组合处理的能力。本文就来详细讲讲CompletableFuture的使用方式,需要的可以参考一下
    2022-08-08
  • Java mutable对象和immutable对象的区别说明

    Java mutable对象和immutable对象的区别说明

    这篇文章主要介绍了Java mutable对象和immutable对象的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Springboot集成JWT实现登录注册的示例代码

    Springboot集成JWT实现登录注册的示例代码

    本文主要介绍了Springboot集成JWT实现登录注册的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06
  • java实现Api接口加密通信方式

    java实现Api接口加密通信方式

    这篇文章主要介绍了java实现Api接口加密通信方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • JAVA程序内存溢出问题原因分析

    JAVA程序内存溢出问题原因分析

    这篇文章主要介绍了JAVA程序内存溢出问题原因,较为详细的分析java导致程序内存溢出的原因与解决方法,需要的朋友可以参考下
    2015-06-06
  • Jenkins安装和插件管理配置入门教程

    Jenkins安装和插件管理配置入门教程

    这篇文章主要介绍了Jenkins安装和插件管理知识,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Java利用InputStream类实现文件读取与处理

    Java利用InputStream类实现文件读取与处理

    在Java开发中,输入流(InputStream)是一个非常重要的概念,它涉及到文件读写、网络传输等多个方面,InputStream类是Java中输入流的抽象基类,定义了读取输入流数据的方法,本文将以InputStream类为切入点,介绍Java中的输入流概念及其应用,需要的朋友可以参考下
    2023-11-11
  • 详解使用Maven构建多模块项目(图文)

    详解使用Maven构建多模块项目(图文)

    这篇文章主要介绍了详解使用Maven构建多模块项目(图文),非常具有实用价值,需要的朋友可以参考下
    2017-09-09
  • Java后台接口开发初步实战教程

    Java后台接口开发初步实战教程

    下面小编就为大家分享一篇 Java后台接口开发初步实战教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • java读取文件显示进度条的实现方法

    java读取文件显示进度条的实现方法

    当读取一个大文件时,一时半会儿无法看到读取结果,就需要显示一个进度条,是程序员明白已经读了多少文件,可以估算读取还需要多少时间,下面的代码可以实现这个功能
    2014-01-01

最新评论