使用Laravel-dynamic-servers包(基于PHP的Kubernetes版)动态创建和销毁服务器

2023-06-01 00:00:00 laravel

Laravel Dynamic Servers是Spatie的一个包,可以帮助你在需要时启动和停止服务器。

主要用例是创建额外的服务器来帮助您处理队列工作负载。


您可能想知道,“为什么不直接使用 Kubernetes?”

这个问题官方手册上有说明,它是这样描述的:

您可以将其视为一种基于PHP的 Kubernetes版本,它具有5%的功能,但涵盖了80%的用例。
对于大多数 PHP 和 Laravel 开发人员来说,这个包也会更容易学习和使用。

因此,虽然您可以通过其他方式解决这些问题,但此软件包可能非常适合您向上和向下扩展服务器的需求。


laravel-dynamic-servers包github:

https://github.com/spatie/laravel-dynamic-servers

laravel-dynamic-servers手册:

https://spatie.be/docs/laravel-dynamic-servers/v1/introduction


laravel-dynamic-servers依赖要求

laravel-dynamic-servers包需要PHP 8.1+, Laravel 9+。

需要 MySQL 8.0 或更高版本。


安装

您可以通过composer 安装该软件包:

composer require spatie/laravel-dynamic-servers

运行安装程序

接下来,您可以使用以下命令运行安装程序:

php artisan dynamic-servers:install

该命令将:

dynamic_servers发布将在您的数据库中创建表的迁移。
此表用于跟踪包创建的所有服务器。
在您的目录中创建dynamic-servers.php配置文件/config

具体配置可以自行到上面的手册上查阅了


这是一个示例回调,

您可以添加以根据您需要的任何逻辑计算要确保运行的服务器数量:

// In a service provider
use Spatie\DynamicServers\Facades\DynamicServers;
use Spatie\DynamicServers\Support\DynamicServersManager;
 
DynamicServers::determineServerCount(function(DynamicServersManager $servers) {
    // Custom logic to decide how many servers are needed.
    // This callback runs every minute.
    $numberOfServersNeeded = 5;
    $servers->ensure($numberOfServersNeeded);
});


该软件包的自述文件示例使用 Horizon `WaitTimeCalculator` 确定要确保的服务器数量。

上面的回调将每分钟运行一次以扩大和缩小,具体取决于您的需要。


该软件包提供的其他一些亮点:

1.确保许多服务器正在运行

2.重新启动服务器

3.能够处理多种服务器类型

4.手动增加/减少服务器数量

5.定制服务提供商

6.服务器数量的可配置硬限制

开箱即用,此软件包具有 UpCloud 的服务器提供程序。

但是,您可以为您最喜欢的云服务提供商创建自定义提供商。

相关文章