Apollo

Apollo配置中心是携程开源的一款分布式配置管理中心,是一种可以集中管理应用配置的服务,它能够让配置变得灵活且易于维护。

Apollo配置中心对于大型分布式系统来说是一个强大的工具,它简化了配置管理,提高了运维效率,降低了因配置错误导致的故障风险。

Apollo配置中心的一些特点

  • 集中化管理:Apollo允许你在中心化的平台上管理所有微服务的配置,无论它们部署在何处。这包括不同环境(如开发、测试、生产)和不同集群的配置。
  • 实时推送:当配置发生变化时,Apollo能够实时地将更新推送到客户端应用,无需重启应用即可生效。
  • 权限与流程治理:Apollo提供了完整的权限管理系统和流程控制,确保只有授权用户可以修改配置,并且可以进行版本控制和回滚。
  • 灰度发布:支持配置的灰度发布,允许逐步推广新配置到部分实例,以减少风险。
  • 多环境支持:能够区分并管理多个环境的配置,每个环境可以有不同的配置版本。
  • 高可用性:Apollo设计为高可用系统,即使部分节点失败,也能保证配置的正常访问。
  • 缓存机制:客户端会缓存配置,即使与Apollo服务端通信中断,应用仍能继续使用已缓存的配置。
  • 易于集成:Apollo提供了Java SDK和其他语言的客户端库,便于微服务应用集成。
  • 可扩展性:Apollo的设计考虑了系统的可扩展性,能够处理大规模的配置管理和高并发请求。

使用Apollo配置中心

  • 部署Apollo服务端:Apollo服务端基于Spring BootSpring Cloud开发,可以打包成独立的可执行jar包直接运行。
  • 集成Apollo客户端:在你的微服务应用中引入Apollo的客户端库,根据文档进行配置,以便应用可以从Apollo获取配置。
  • 配置管理:在Apollo控制台上创建项目,定义环境,上传配置,并管理这些配置的版本和变更。
  • 监控与维护:定期检查Apollo的健康状态,监控配置变更的日志,以及处理可能出现的问题。

部署Apollo服务端

安装jdkmysql

Apollo服务需要JavaMySQL的支持。安装完成后启动mysql

下载并启动Apollo

  • 创建Apollo所需的数据库和表。
  • 构建Apollo
    • build.sh中配置了数据库的连接
      • 修该数据库连接信息(host、用户、密码等配置信息)
      • 其他配置信息可自行修改。
  • 初始化数据库
    • script下存在apolloconfigdb.sqlapolloportaldb.sql文件,将这2个文件导入到数据库中。
  • 运行Apollo服务
    • 运行Apollo配置中心通常需要运行三个jar文件,分别对应Apollo的三个主要服务:
      • apollo-configservice.jarApollo的配置服务,为Apollo客户端提供配置信息,端口默认是8080
      • apollo-adminservice.jarApollo的管理服务,为Apollo管理界面提供后端服务,端口默认是8090
      • apollo-portal.jarApollo的门户服务,提供Apollo的管理界面,端口默认是8070

访问Apollo服务

访问http://localhost:8070来查看Apollo的控制台。登录名密码默认为:apollo/admin

访问http://localhost:8080可查看Apollo的服务信息。

登录名和密码可以在README.md中查看到。

Apollo中创建项目

Apollo配置中心中,部门(Department)是一个组织结构的概念,用于管理和控制不同的项目和配置。 部门可以包含多个项目,每个项目可以有多个环境和集群。

  • 创建department
    • 可以在Admin->Tools-System->Configuration下配置部门信息,修改完信息后点击下Reset按钮。
  • 创建项目
  • 添加配置参数

Apollo客户端

Maven依赖

<!-- 在项目的pom.xml中添加Apollo客户端依赖 -->
<dependency>
    <groupId>com.ctrip.framework.apollo</groupId>
    <artifactId>apollo-client</artifactId>
</dependency>

yml中配置Apollo信息

app:
  id: app-id
apollo:
  meta: http://localhost:8080
  bootstrap:
    enabled: true
    namespaces: application

在代码中使用@Value注解获取配置:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class YourComponent {

    @Value("${some.key:default}")
    private String someKey;

    // ...
}

启动应用程序,Apollo客户端会自动从配置中心拉取配置并注入到应用中。


results matching ""

    No results matching ""