Spring Cloud——配置中心(Apollo)

本文介绍了配置中心的重要性和作用,重点解析了Apollo配置中心的概述、执行流程、工作原理,包括配置发布、客户端通知及灰度发布等功能。Apollo是携程研发的分布式配置中心,支持配置的实时推送和灰度发布,适用于微服务场景。
摘要由CSDN通过智能技术生成

一.概述

1.1 什么是配置

应用程序在启动和运行的时候需要读取一些配置信息,配置信息基本上伴随着应用程序的整个生命周期,例如:数据库连接参数,启动参数等。有以下几个特点:

配置是独立于程序的只读变量

配置伴随应用的整个生命周期,应用在启动时通过读取配置来初始化,在运行时根据配置调整行为

配置可以有多种加载方式,常见的有程序内部硬编码,配置文件,环境变量等

配置需要治理,配置的修改需要有完善的权限控制,不同环境和集群配置管理

1.2 什么是配置中心

配置中心将配置从应用中剥离出来,统一管理,优雅的解决了配置的动态变更,持久化,运维成本等问题。应用自身既不需要去添加配置接口,也不需要自己去实现配置的持久化,更不需要引入“定时任务”以便降低运维成本。

  • 配置中心就是一种统一管理各种应用配置的基础服务组件。一个合格的配置中心需要满足:

  • 配置项容易读取和修改

  • 添加新配置简单直接

  • 支持对配置的修改的检视以把控风险

  • 查看配置修改的历史记录

  • 不同不是环境支持隔离

1.3 常用的配置中心

image-20210121224958419

二.Apollo

2.1 概述

Apollo是携程框架部门研发的分布式配置中心,能够集中化管理应用的不同环境,不同集群的配置,配置修改后能够推送到应用端,并且具备规范的权限,流程治理等特性,适用于微服务配置管理场景。

Apollo包括服务端和客户端部分。服务端基于Spring Cloud和Spring Boot开发,打包后直接运行,不需要安装Tomcat等容器。Java客户端不依赖于任何框架,能够运行于所有Java能运行的环境,同时对Spring/spring Boo环境有较好的支持。

有以下特性:

  • 统一管理不同环境,不同集群的配置(通过命名空间可以很方便地支持读个不同应用共享同一份配置,同时还允许覆盖公共配置)
  • 配置修改实时生效&#
Spring Cloud Apollo是阿里巴巴开源的一个微服务配置中心,它提供了动态、中央化的配置管理能力,帮助开发者在分布式系统中快速地管理和推送应用配置。要在Spring Boot项目中集成Apollo,你需要遵循以下步骤: 1. **添加依赖**: 将`spring-cloud-starter-config-apollo`或`spring-boot-starter-apollo-client`依赖添加到你的Maven或Gradle构建文件中。 ```xml <!-- Maven --> <dependency> <groupId>com.alipay.sofa</groupId> <artifactId>sofa-boot-starter-apollo</artifactId> <version>最新版本号</version> </dependency> // Gradle implementation 'com.alipay:spring-boot-starter-apollo:最新版本号' ``` 2. **配置客户端**: 在`application.yml`或`application.properties`中设置Apollo的相关配置,包括集群地址、命名空间和是否启用灰度发布等。 ```yaml # application.yml spring: cloud: config: server: apollo: app-id: your-app-id cluster: default # or production, staging等 instance: ${spring.cloud.config.instance} # 可选,自定义实例名 default-label: PROD # 默认的环境标签 discovery-uri: http://apollo-server:8080/ # Apollo服务器地址 ``` 3. **注入ConfigClient**: 使用Spring Cloud Config的`@ConfigurationProperties`注解从Apollo获取配置,例如创建一个配置属性的bean。 ```java @Configuration @ConfigurationProperties(prefix = "apollo") public class ApolloProperties { private String property1; // 添加其他属性字段... } ``` 4. **访问配置**: 在需要的地方注入`ApolloProperties`并获取配置值。 ```java @Autowired private ApolloProperties properties; String valueFromApollo = properties.getProperty1(); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值