Apollo
优质
小牛编辑
127浏览
2023-12-01
Apollo
(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。 Swoft 基于 Apollo 提供的 API,在之上进行封装,使之能在 Swoft 中快速使用。
安装
swoft/whoops
作为一个额外的扩展组件,需要手动安装:
Composer 安装
composer require swoft/apollo
配置bean
下面以拉取 Apollo 命令空间为 application
配置为例:
首先在 app/bean.php
配置启用 Apollo
return [
// ...
'apollo' => [
'host' => '192.168.2.102',
'timeout' => 6
]
// ...
];
参数详解
host
地址port
端口号appId
Apollo 应用IDclusterName
Apollo 集群名称timeout
超时时间单位秒
Apollo 配置完成后,像一个普通的 Bean 一样注入 Apollo Swoft\Apollo\Config
即可使用
使用
<?php declare(strict_types=1);
namespace App\Model\Logic;
use Swoft\Apollo\Config;
use Swoft\Apollo\Exception\ApolloException;
use Swoft\Bean\Annotation\Mapping\Bean;
use Swoft\Bean\Annotation\Mapping\Inject;
/**
* Class ApolloLogic
*
* @since 2.0
*
* @Bean()
*/
class ApolloLogic
{
/**
* @Inject()
*
* @var Config
*/
private $config;
/**
* @throws ApolloException
*/
public function pull(): void
{
$data = $this->config->pull('application');
// Print data
var_dump($data);
}
}
以上就是一个简单的 Apollo 配置拉取,swoft-apollo 除此方法外,还提供了更多的使用方法。
使用 Demo 请查看
app/Console/Command/AgentCommand.php
方法列表
pullWithCache
public function pullWithCache(string $namespace, string $clientIp = ''): array
从 Apollo 缓存中拉取配置,大概有1秒的延迟
$namespace
命名空间名称$clientIp
客户端 IP,为空底层自动获取当前机器 IP,用于灰度发布
pull
public function pull(string $namespace, string $releaseKey = '', string $clientIp = ''): array
实时拉取配置,没有延迟时间
$namespace
命名空间名称$releaseKey
上一次拉取返回的版本号,更多描述,参考 Apollo 官方文档$clientIp
客户端IP,为空底层自动获取当前机器IP,用于灰度发布
batchPull
public function batchPull(array $namespaces, string $clientIp = ''): array
此方法是 pull
方法的一个批量封装,用于同时拉取多个 namespace 配置,但是不支持 $releaseKey
参数
$namespaces
命名空间名称集合数组$clientIp
客户端IP,为空底层自动获取当前机器IP,用于灰度发布
listen
public function listen(array $namespaces, $callback, array $notifications = [], string $clientIp = ''): void
如果一直轮询拉取配置,会有很大一部分资源浪费,此方法就是解决该问题,当配置有更新的时候,会回调监听改变的函数
$namespaces
命名空间名称集合数组$callback
配置改变监听函数,可以使闭包、对象方法都可以。$notifications
监听信息,详细描述参考 Apollo 官方文档$clientIp
客户端IP,为空底层自动获取当前机器IP,用于灰度发布
如果配置改变,监听函数回调的时候会传递一个参数,此参数信息记录了改变后的最新配置信息,比如:
$callback = function(array $data){
// ...
}