Spring Boot集成Apollo配置中心【开发实践】

Spring Boot集成Apollo配置中心【开发实践】

码农世界 2024-05-16 后端 72 次浏览 0个评论

文章目录

  • 一、Apollo简介
    • 1.1 什么是配置
    • 1.2 Apollo是什么
    • 1.3 为什么要配置中心
    • 1.4 Apollo的核心功能(x6)
    • 1.5 Apollo的基础模型(三步走)
    • 二、Apollo开发实践
      • 2.1 Apollo管理配置的四个维度
        • 2.1.1 application
        • 2.1.2 environment
        • 2.1.3 cluster
        • 2.1.4 namespace
        • 2.2 Spring Boot集成Apollo
          • 2.2.1 原理简介
          • 2.2.2 Spring Boot集成Apollo的流程
          • 2.2.3 配置Apollo
          • 2.3 Apollo:从创建项目到发布配置
          • 三、Apollo原理介绍
          • 参考博客推荐

            一、Apollo简介

            1.1 什么是配置

            数据库的连接参数、应用的启动参数、一些系统的账号密码等信息,一般都不会在代码中硬编码,而是存储于代码外部的文件中。这些信息被称为配置信息,存储配置信息的文件就是配置文件。程序需要读取配置文件来获取所需的配置信息。

            1.2 Apollo是什么

            Apollo(阿波罗)是携程开源的一款分布式配置中心(核心功能见后),以键值对的方式来管理配置信息,并提供了Java和.Net原生客户端和开发平台API,部署起来也简单。

            1.3 为什么要配置中心

            在规范的软件开发中,开发、测试和线上的环境/配置是不同的,一般会使用三套不同的配置。使用配置中心,可以集中管理配置信息,在不同配置之间切换很方便。

            对于分布式系统,如果在不同节点上都单独使用一个配置,会使得配置分散不好管理,且这些配置信息冗余。换用分布式的配置中心后,就解决了冗余的问题,且可以集中管理配置。

            配置中心相较于一般的配置文件方案,提供了更多的功能。

            1.4 Apollo的核心功能(x6)

            • 统一管理不同应用的环境、不同集群的配置
            • 配置修改实时生效(热发布):用户在Apollo修改完配置并发布后,客户端能实时(1秒)接收到最新的配置,并通知到应用程序
            • 版本发布管理:所有的配置发布都有版本概念,从而可以方便的支持配置的回滚
            • 灰度发布支持配置的灰度发布,比如点了发布后,只对部分应用实例生效,等观察一段时间没问题后再推给所有应用实例
            • 权限管理、发布审核、操作审计:应用和配置的管理都有完善的权限管理机制,对配置的管理还分为了编辑和发布两个环节,从而减少人为的错误。所有的操作都有审计日志,可以方便地追踪问题
            • 客户端配置信息监控:可以在界面上方便地看到配置在被哪些实例使用

              1.5 Apollo的基础模型(三步走)

              Spring Boot集成Apollo配置中心【开发实践】

              1. 使用配置中心修改并发布配置
              2. 配置中心通知Apollo客户端有配置更新
              3. Apollo客户端从配置中心拉取最新的配置、更新本地配置并通知到应用

              二、Apollo开发实践

              2.1 Apollo管理配置的四个维度

              每条配置信息对应一个键值对数据,其属于某个application,并且需要设置对应的environment、cluster和namespace。

              2.1.1 application

              application是Apollo管理配置的基本单位,一个application对应一个项目,使用appId作为唯一标识。

              2.1.2 environment

              一个应用可能有多个环境(如开发/测试/线上),不同环境对应的配置一般不同。Apollo提供了四种环境:

              • FAT(Feature Acceptance Test):功能测试环境
              • UAT(User Acceptance Test):集成测试环境
              • DEV(Develop):开发环境(默认环境)
              • PRO(Produce):生产环境

                2.1.3 cluster

                一个应用可以有多个实例,我们可以对这些实例进行分组管理,每个分组就是一个集群。

                2.1.4 namespace

                我们可以通过命名空间将不同类型的配置进行分组。如,将MySQL的配置使用一个命名空间,而Redis的配置使用另一个命名空间,这样可以将大量的配置信息分散到不同的分配空间,方便分类管理

                命名空间可以分为公共的和私有的,私有的命名空间只对当前应用可见,公共的命名空间在所有应用中共享。

                2.2 Spring Boot集成Apollo

                2.2.1 原理简介

                Spring Boot项目启动时,如果使用了Apollo配置中心,则会在启动前先去配置中心中读取配置信息。使用Spring Boot集成Apollo配置中心,需要先配置Apollo(需要配置的信息见后),告诉Apollo客户端从哪个Apollo服务器读取哪个配置。

                Apollo 客户端会把从服务端获取到的配置在本地文件系统缓存一份,当服务不可用或网络不通时,可以从本地恢复配置,不影响应用正常运行。

                2.2.2 Spring Boot集成Apollo的流程

                1. 添加Maven依赖
                2. 配置Apollo(详见后)
                3. 加载Apollo的配置(在主启动类上使用@EnableApolloConfig即可,同时可指定环境)
                4. 发布配置(详见后)
                5. 获取配置(使用@Value(${key})注解注入)

                2.2.3 配置Apollo

                最重要的三个配置:appId,Apollo服务器地址和端口,名称空间

                其他三个常用配置:缓存目录,开启预加载,开启Apollo支持日志级别的加载时机

                 # appId信息,可以在此处配置,也可以在META-INF/app.properties中配置
                 app:
                 	id: testAppId
                apollo:
                	#  Apollo配置中心地址,包括Apollo服务器地址和端口号
                	meta: http://config-service-url
                	# 配置默认的缓存目录(可选)
                	cacheDir: /opt/data/some-cache-dir
                	bootstrap:
                  		# 是否开启Apollo
                    	enabled: true
                    	# 使用namespaces指定命名空间,多个namespace之间用逗号隔开
                    	# 不指定时会使用默认的namespace
                 		namespaces: namespace1,namespace2
                 		# 将Apollo加载时机设置为初始化日志系统之前。由于加载时机在初始化日志系统之前,所以不能打印出Apollo的日志信息
                 		# 默认加载时机为初始化日志系统之后,此时可以打印Apollo的日志信息,但由于加载时机是在初始化日志系统之后,此时无法对日志配置进行修改
                 		eagerLoad:
                 			enabled: true
                

                2.3 Apollo:从创建项目到发布配置

                1. 创建项目

                  Spring Boot集成Apollo配置中心【开发实践】Spring Boot集成Apollo配置中心【开发实践】

                2. 创建namespace:点击进入一个项目,选择环境,然后创建namespace

                  Spring Boot集成Apollo配置中心【开发实践】

                3. 创建一个配置:在namespace列表选择一个namespace,点击“展开/收藏”来展开,然后可以看到该namespace下的配置,并且显示了新增配置等功能(可能会因为权限问题不显示新增配置)

                  Spring Boot集成Apollo配置中心【开发实践】

                  Spring Boot集成Apollo配置中心【开发实践】

                4. 发布配置:创建配置后,配置会处于未发布状态,需要发布后才能使用(需要审核)

                  Spring Boot集成Apollo配置中心【开发实践】

                三、Apollo原理介绍

                // to do

                // 暂时当做工具用就好,原理可以不了解

                参考博客推荐

                Apollo官网(貌似打不开)

                Apollo配置中心教程、详解

                Apollo配置中心

                Apollo(阿波罗)——携程推出的分布式配置管理中心 & 启动Apollo & SpringBoot集成 & @ConfigurationProperties的使用姿势

                SpringBoot 集成 Apollo 配置中心

                全网最全的Apollo教程从入门到精通

转载请注明来自码农世界,本文标题:《Spring Boot集成Apollo配置中心【开发实践】》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,72人围观)参与讨论

还没有评论,来说两句吧...

Top