• 【Apollo】(1)--- Apollo入门介绍篇


    Apollo入门介绍篇

    Apollo有一点很好,就是它是由国内携程团队开发,而且文档写的很全,代码也完全开源。如果去了解它也可以直接去看它的官方文档。

    一、配置中心概念

    1、背景

    在实际开发中都会与配置打交道,举个简单例子,我们开发项目肯定会连接数据库,mysql也好oracle也好。那么我们 本地环境线上环境 连接的数据肯定是不一样的,

    那如果没有配置中心,我们要做的就是在发布前把本地数据库配置信息改成线上环境,如果仅仅是切换数据库那倒还好,但随着程序功能的日益复杂,程序的配置日益

    增多比如,各种功能的开关参数的配置服务器的地址。同时对程序配置的期望值也越来越高:配置修改后 实时生效灰度发布分环境

    分集群管理配置完善的权限审核机制。在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。

    Apollo配置中心应运而生!

    2、配置分类和场景

    在现代开发中配置的分类还是蛮多的,下面借用杨波老师的一张图,来看下目前比较常见的分类及场景。

    3、开关驱动开发

    在我们实际开发业务中,开关这个概念其实是非常常见的,有些时候是需要用户在页面去进行开关操作,那么我们一般数据库新建配置表来存储用户操作的开关。

    但有些时候是不需要用户去操作的,只需我们后台开发人员进行配置开关的,那其实就不需要在数据库去建一个配置表,而是通过配置中心就可以完成了。


    二、Apollo配置中心概念

    1、简介

    Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、

    流程治理等特性。

    2、优点

    Apollo作为为配置中心,有着非常多的优点。

    3、四个维度

    Apollo支持4个维度管理Key-Value格式的配置:

    1、application (应用)
    2、environment (环境)
    3、cluster (集群)
    4、namespace (命名空间)
    

    1、application

    1、Apollo 客户端在运行时需要知道当前应用是谁,从而可以根据不同的应用来获取对应应用的配置。

    2、每个应用都需要有唯一的身份标识,可以在代码中配置 app.id 参数来标识当前应用,Apollo 会根据此指来辨别当前应用。

    2、environment

    在实际开发中,我们的应用经常要部署在不同的环境中,一般情况下分为 开发、测试、生产 等等不同环境,不同环境中的配置也是不同的,在 Apollo 中默认提供了

    四种环境:

    FAT:功能测试环境

    UAT:集成测试环境

    DEV:开发环境

    PRO:生产环境

    在程序中如果想指定使用哪个环境,可以配置变量 env 的值为对应环境名称即可。

    3、cluster

    1、一个应用下不同实例的分组,比如典型的可以按照数据中心分,把上海机房的应用实例分为一个集群,把北京机房的应用实例分为另一个集群。

    2、对不同的集群,同一个配置可以有不一样的值,比如说上面所指的两个北京、上海两个机房设置两个集群,都有 mysql 配置参数,其中参数中配置的地址是不一样的。

    4、namespace

    一个应用中不同配置的分组,可以简单地把 namespace 类比为不同的配置文件,不同类型的配置存放在不同的文件中,如数据库配置文件,RPC 配置文件等。

    熟悉 SpringBoot 的都知道,SpringBoot 项目都有一个默认配置文件 application.yml,如果还想用多个配置,可以创建多个配置文件来存放不同的配置信息,通过

    指定 spring.profiles.active 参数指定应用不同的配置文件。这里的 namespace 概念与其类似,将不同的配置放到不同的配置 namespace 中。

    Namespace 分为两种权限,分别为:

    • public(公共的): public权限的 Namespace,能被任何应用获取。
    • private(私有的): 只能被所属的应用获取到。一个应用尝试获取其它应用 private 的 Namespace,Apollo 会报 “404” 异常。

    5、本地缓存

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

    本地缓存路径默认位于以下路径,所以请确保 /opt/data或C:optdata目录存在,且应用有读写权限

    • Mac/Linux: /opt/data/{appId}/config-cache
    • Windows: C:optdata{appId}config-cache

    本地配置文件会以下面的文件名格式放置于本地缓存路径下:

    {appId}+{cluster}+{namespace}.properties
    

    三、Apollo和SpringCloudConfig的对比

    网上有一张图总结的很完整

    总结

    1、SpringCloudConfig优势是对SpringBoot原生支持,且是SpringCloud组件。缺点是 无界面管理且需要git,SpringCloudBus、Mq支持其动态更新

    2、Apollo优势是技术栈单一,仅需要Mysql就可以支持动态更新配置,便于维护。缺点是不是SpringCloud体系,虽然开源,版本更新也活跃,但是对SpringCloud的

    支持没有SpringCloudConfig的好。


    参考

    1、Apollo配置中心介绍

    2、SpringBoot 集成 Apollo 配置中心

    3、Apollo作为微服务的配置中心



    别人骂我胖,我会生气,因为我心里承认了我胖。别人说我矮,我就会觉得好笑,因为我心里知道我不可能矮。这就是我们为什么会对别人的攻击生气。
    攻我盾者,乃我内心之矛(26)
    
  • 相关阅读:
    加解密相关
    Office常见问题及解决方法
    文件校验和(checksum或Hash)计算工具
    linux install mpi4py
    [zz] Install VSFTP
    Bring up a website by wordpress
    How to Get Rid of /wordpress/ From your WordPress Site URL
    Change http port in bitnami stack
    mongodb gdal 矢量数据格式驱动
    配置PostgreSQL Streaming Replication集群
  • 原文地址:https://www.cnblogs.com/qdhxhz/p/13388054.html
Copyright © 2020-2023  润新知