简介

    随着业务的发展,微服务架构的升级,服务的数量、应用的配置日益增多(各种微服务、各种服务器地址、各种参数),传统的配置文件方式和数据库的方式已经可能无法满足开发人员对配置管理的要求,同时对于配置的管理可能还会牵涉到 ACL 权限管理、配置版本管理和回滚、格式验证、配置灰度发布、集群配置隔离等问题,以及:

    • 安全性:配置跟随源代码保存在版本管理系统中,容易造成配置泄漏
    • 时效性:修改配置,需要每台服务器每个应用修改并重启服务
    • 局限性:无法支持动态调整,例如日志开关、功能开关等

    安装

    Aliyun ACM

    如果您没有对配置组件进行替换使用默认的 hyperf/config 组件的话,接入 Apollo 配置中心则是轻而易举,只需两步。

    • 通过 Composer 将 ,即执行命令 composer require hyperf/config-apollo
    • config/autoload 文件夹内增加一个 apollo.php 的配置文件,配置内容如下
    1. return [
    2. // 是否开启配置中心的接入流程,为 true 时会自动启动一个 ConfigFetcherProcess 进程用于更新配置
    3. 'enable' => true,
    4. // Apollo Server
    5. 'server' => 'http://127.0.0.1:8080',
    6. // 您的 AppId
    7. 'appid' => 'test',
    8. // 当前应用所在的集群
    9. 'cluster' => 'default',
    10. // 当前应用需要接入的 Namespace,可配置多个
    11. 'namespaces' => [
    12. 'application',
    13. ],
    14. 'interval' => 5,
    15. // 客户端IP
    16. // 拉取配置超时时间
    17. 'pullTimeout' => 10,
    18. // 拉取配置间隔
    19. 'interval_timeout' => 60,
    20. ];

    接入 Aliyun ACM 配置中心

    • 通过 Composer 将 ,即执行命令 composer require hyperf/config-aliyun-acm
    • config/autoload 文件夹内增加一个 aliyun_acm.php 的配置文件,配置内容如下
    • 安装 Etcd客户端
    1. composer require hyperf/etcd

    因为 Etcd 分为 v2v3 版本,所以根据需要选择安装

    1. # Etcd v3 http client.
    2. # Etcd v2 http client.
    3. composer require linkorb/etcd-php
    • 添加 Etcd客户端 配置文件 etcd.php
    • 安装 Etcd配置中心
    composer require hyperf/config-etcd
    
    • 添加 Etcd配置中心 配置文件 config_etcd.php
    <?php
    return [
        'enable' => true,
        'namespaces' => [
            '/test',
        ],
        'mapping' => [
            '/test/test' => 'etcd.test.test',
        ],
        'interval' => 5,
    ];
    

    配置更新的作用范围

    在默认的功能实现下,是由一个 ConfigFetcherProcess 进程根据配置的 interval 来向 Apollo 拉取对应 namespace 的配置,并通过 IPC 通讯将拉取到的新配置传递到各个 Worker 中,并更新到 Hyperf\Contract\ConfigInterface 对应的对象内。需要注意的是,更新的配置只会更新 对象,故仅限应用层或业务层的配置,不涉及框架层的配置改动,因为框架层的配置改动需要重启服务,如果您有这样的需求,也可以通过自行实现 ConfigFetcherProcess 来达到目的。