使用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 的服务器提供程序。
但是,您可以为您最喜欢的云服务提供商创建自定义提供商。
相关文章