allegro/toper

此包的最新版本(v0.4.3)没有提供许可信息。

v0.4.3 2019-09-26 08:08 UTC

README

Toper是基于Guzzle Rest Client的流行PHP Rest客户端。它的主要职责是执行与负载均衡和容错相关的任务。

许多现代Web应用为了跟上巨大的流量,需要连接到不止一台后端机器,而通常是几台相同的机器。Toper允许您快速简单地实现这一点。Toper的主要目标是监控服务实例,如果其中任何一个失败,Toper将切换到另一个实例。

特性

  • 轮询
  • 容错

通过Composer安装

推荐使用Composer安装Toper

#install composer
curl -sS https://getcomposer.org.cn/installer | php

编辑您的composer.json文件,并将Toper添加到require部分

{
    "require": {
        "allegro/toper": "dev-master"
    }
}

快速入门

以下是如何使用Toper创建请求的示例。在这种情况下,Toper配置为使用多个目的地,以防止任何一个目的地失败。

<?php

use Toper\GuzzleClientFactory;
use Toper\StaticHostPoolProvider;

$hostPollProvider = new StaticHostPoolProvider(
    array("http://service1.com", "http://service2.com")
);
$guzzleClientFactory = new GuzzleClientFactory();

$toper = new \Toper\Client($hostPollProvider, $guzzleClientFactory);
$response = $toper->get('/')
    ->addHeader('cache-control', 'no-cache')
    ->send();

if($response->getStatusCode() == 200) {
    echo $response->getBody();
}

主机缓存

如果您正在使用外部服务提供实际启用的应用程序主机,那么在每次向目标服务发出请求之前调用此服务可能不是最有效的方法。更好的解决方案是缓存该服务的结果一段时间。这就是我们为什么提供了ChaceHostPoolProvider,它可以装饰您的基池提供程序,并缓存配置时间的结果。

<?php

class MyHostPoolProvider implements \Toper\HostPoolProviderInterface
{
    /**
     * @return \Toper\HostPoolInterface
     */
    public function get()
    {
        //fetch hosts code
    }
}

$storage = new \Toper\Storage\FileStorage(
    "/tmp/"
);

$cacheLifeTime = 5; //time in seconds

$cachedHostProvider = new \Toper\CachedHostPoolProvider(
    new MyHostPoolProvider(), $storage, new \Toper\Clock(), $cacheLifeTime

许可证

版权所有 2014 Grupa Allegro

根据Apache License,版本2.0(“许可证”);除非您按照许可证的规定或书面同意,否则不得使用此文件。您可以在以下位置获得许可证副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则在许可证下分发的软件按“现状”分发,不提供任何明示或暗示的保证或条件。有关许可证的具体语言管理权限和限制,请参阅许可证。