apex/cluster

负载均衡器/路由器,用于水平扩展

安装: 858

依赖项: 1

建议者: 0

安全: 0

星星: 11

关注者: 3

分支: 0

开放问题: 0

类型:软件包

2.0.3 2023-10-20 08:01 UTC

This package is auto-updated.

Last update: 2024-09-20 10:02:25 UTC


README

Cluster 提供了一个简单直观的接口,通过 RabbitMQ 或任何消息代理来实现应用程序的水平扩展。使用本地消息代理,您可以在单个服务器上轻松开发软件,并实现完全的水平扩展,当需要时,可以在几分钟内将它们拆分为多个服务器实例。它支持

  • 通用轮询和将指定消息路由到特定服务器实例。
  • 单向队列消息,双向 RPC 调用,以及系统级广播。
  • 基于参数/头部的路由。
  • 易于配置的 YAML 路由文件。
  • 可选的集中式 redis 存储路由配置,以便跨服务器实例进行维护。
  • 标准化的不可变请求和响应对象,便于使用和互操作性。
  • 前端处理器,用于简化与前端服务器的通信,并允许执行客户端事件(例如设置模板变量等)。
  • 超时和消息准备处理器,以及并发设置。
  • 可与其他任何消息代理交换,包括轻松实现自己的消息代理的能力。
  • 包括本地消息代理,允许在单个服务器实例上实现水平扩展的逻辑。
  • 可选的自动路由,允许消息自动路由到与命名路由键相关联的正确类和方法。

目录

  1. Cluster 类/容器定义
  2. 路由器概述
    1. 在 PHP 中添加路由
    2. 路由器 YAML 配置文件
    3. 自动路由
    4. 基于参数的路由
    5. 启用 redis 自动加载
  3. 消息处理
    1. 监听/消费消息
    2. 分发消息
    3. 从队列中检索消息
  4. 消息
    1. 消息请求
    2. 消息响应
  5. 前端处理器

安装

使用 composer 安装

composer require apex/cluster

基本用法

请参阅 /examples 目录以获取更深入的示例。

保存 Math.php 类

namespace App;

class Math {

    public function add(MessageRequestInterface $msg)
    {
        list($x, $y) = $msg->getParams();
        return ($x + $y);
    }
}

定义监听器

use Apex\Cluster\Cluster;
use Apex\Cluster\Listener;
use Apex\Cluster\Brokers\RabbitMQ;


// Start cluster
$cluster = new Cluster('app1');
$cluster->setBroker(new RabbitMQ('localhost', 5672, 'guest', 'guest'));
$cluster->addRoute('basic.math.*', App\Math::class);

// Start listener
$listener = new Listener();
$listener->listen();

定义分发器

use Apex\Cluster\Dispatcher;
use Apex\Cluster\Message\MessageRequest;

// Define message
$msg = new MessageRequest('basic.math.add', 6, 9);

// Dispatch message
$dispatcher = new Dispatcher('web1');
$sum = $dispatcher->dispatch($msg)->getResponse();

// Print result
echo "Sum is: $sum\n";

关注 Apex

即将推出大量优质的开源软件包,更高级的文章/教程,涵盖实用的主题等。通过加入我们网站上的邮件列表或关注 Twitter 上的@mdizak1来保持最新信息。