hyperf接入阿里云nacos配置中心

4 篇文章 0 订阅

nacos官网的介绍

服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理:

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施

微服务之间的调用会有很多的配置文件,多台服务器维护起来比较麻烦,所以选择阿里云的nacos的配置中心

php的框架hyperf很好的支持了


composer require hyperf/config-center

使用 Nacos 需安装
composer require hyperf/config-nacos

主要的看配置文件

<?php

declare(strict_types=1);

use Hyperf\ConfigCenter\Mode;

return [
    // 是否开启配置中心
    'enable' => (bool) env('CONFIG_CENTER_ENABLE', true),
    // 使用的驱动类型,对应同级别配置 drivers 下的 key
    'driver' => env('CONFIG_CENTER_DRIVER', 'nacos'),
    // 配置中心的运行模式,多进程模型推荐使用 PROCESS 模式,单进程模型推荐使用 COROUTINE 模式
    'mode' => env('CONFIG_CENTER_MODE', Mode::PROCESS),
    'drivers' => [
        'apollo' => [
            'driver' => Hyperf\ConfigApollo\ApolloDriver::class,
            // Apollo Server
            'server' => 'http://127.0.0.1:9080',
            // 您的 AppId
            'appid' => 'test',
            // 当前应用所在的集群
            'cluster' => 'default',
            // 当前应用需要接入的 Namespace,可配置多个
            'namespaces' => [
                'application',
            ],
            // 配置更新间隔(秒)
            'interval' => 5,
            // 严格模式,当为 false 时,拉取的配置值均为 string 类型,当为 true 时,拉取的配置值会转化为原配置值的数据类型
            'strict_mode' => false,
            // 客户端IP
            'client_ip' => \Hyperf\Utils\Network::ip(),
            // 拉取配置超时时间
            'pullTimeout' => 10,
            // 拉取配置间隔
            'interval_timeout' => 1,
        ],
        'nacos' => [
            'driver' => Hyperf\ConfigNacos\NacosDriver::class,
            // 配置合并方式,支持覆盖和合并
            'merge_mode' => Hyperf\ConfigNacos\Constants::CONFIG_MERGE_OVERWRITE,
            'interval' => 3,
            // 如果对应的映射 key 没有设置,则使用默认的 key
            'default_key' => 'databases',
            'listener_config' => [
                // dataId, group, tenant, type, content
                // 映射后的配置 KEY => Nacos 中实际的配置
                'databases' => [
                    'tenant' => 'tenant', // corresponding with service.namespaceId
                    'data_id' => 'hyperf-service-config',
                    'group' => 'DEFAULT_GROUP',
                    'type' => 'json',
                ],
               // 'nacos_config.data' => [
               //     'data_id' => 'hyperf-service-config-yml',
               ///     'group' => 'DEFAULT_GROUP',
               //     'type' => 'yml',
               // ],
            ],
            'client' => [
                // nacos server url like https://nacos.hyperf.io, Priority is higher than host:port
                // 'uri' => '',
                'host' => '127.0.0.1',
                'port' => 8848,
                'username' => null,
                'password' => null,
                'guzzle' => [
                    'config' => null,
                ],
            ],
        ],
        'aliyun_acm' => [
            'driver' => Hyperf\ConfigAliyunAcm\AliyunAcmDriver::class,
            // 配置更新间隔(秒)
            'interval' => 5,
            // 阿里云 ACM 断点地址,取决于您的可用区
            'endpoint' => env('ALIYUN_ACM_ENDPOINT', 'acm.aliyun.com'),
            // 当前应用需要接入的 Namespace
            'namespace' => env('ALIYUN_ACM_NAMESPACE', ''),
            // 您的配置对应的 Data ID
            'data_id' => env('ALIYUN_ACM_DATA_ID', ''),
            // 您的配置对应的 Group
            'group' => env('ALIYUN_ACM_GROUP', 'DEFAULT_GROUP'),
            // 您的阿里云账号的 Access Key
            'access_key' => env('ALIYUN_ACM_AK', ''),
            // 您的阿里云账号的 Secret Key
            'secret_key' => env('ALIYUN_ACM_SK', ''),
            'ecs_ram_role' => env('ALIYUN_ACM_RAM_ROLE', ''),
        ],
        'etcd' => [
            'driver' => Hyperf\ConfigEtcd\EtcdDriver::class,
            'packer' => Hyperf\Utils\Packer\JsonPacker::class,
            // 需要同步的数据前缀
            'namespaces' => [
                '/application',
            ],
            // `Etcd` 与 `Config` 的映射关系。映射中不存在的 `key`,则不会被同步到 `Config` 中
            'mapping' => [
                // etcd key => config key
                '/application/test' => 'test',
            ],
            // 配置更新间隔(秒)
            'interval' => 5,
            'client' => [
                # Etcd Client
                'uri' => 'http://127.0.0.1:2379',
                'version' => 'v3beta',
                'options' => [
                    'timeout' => 10,
                ],
            ],
        ],
        'zookeeper' => [
            'driver' => Hyperf\ConfigZookeeper\ZookeeperDriver::class,
            'server' => env('ZOOKEEPER_SERVER', '127.0.0.1:2181'),
            'path' => env('ZOOKEEPER_CONFIG_PATH', '/conf'),
            'interval' => 5,
        ],
    ],
];

tenant 对应的是 命名空间id

data_id 对应的是Data Id

group 对应的是group

 

阿里云配置成json

使用直接就是和框架的语法一样就行

比如你要配置databases

config("databases.default.host")就可以拿到配置项

如果type配置的是yml;需要安装扩展、

不安装会报错Fatal error: Uncaught Error: Call to undefined function yaml_parse() in /Applications/MxSrvs/www/jdd/hyperf-skeleton/vendor/hyperf/config-nacos/src/Client.php:84
Stack trace:

yum install libyaml-devel

wget https://pecl.php.net/get/yaml-2.2.2.tgz

tar -zxvf yaml-2.2.2.tgz

phpize

./configure

make && make install

Nacos 生态图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢高升

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值