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

2023-02-22 12:02:59 分布式 开源 详解

什么是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开源分布式配置的资料请关注其它相关文章!

相关文章