Перейти к содержимому
docs.
WORKSPACE

Документации проектов

Открыть каталог проектов
Localzet ServerАсинхронный PHP-серверTriangleФреймворк и компонентыMIX IDИдентификация и интеграцииHack APIПубличные API хакатонаACNПроект и компонентыUserlay / UserNetПроект и компонентыAxiomПроект и компонентыМесседжинг через почтуПроект и компонентыLWT / JWT / JOSEПроект и компонентыФинансовая аналитика KimaiПроект и компонентыМультипарадигмальная БДПроект и компонентыZorin PlatformПроект и компонентыZorin TrustПроект и компонентыFloraScope / VegwatchПроект и компонентыaegis-qДокументация проектаaevumdbДокументация проектаauditДокументация проектаauto-invest-managerАвтотрейдерcaine-companionДокументация проектаcertbot-cloudflareДокументация проектаClusterLocalzet Server / Cluster✓cmdveilДокументация проектаConsolePHP CLICronБиблиотеки Localzet Serverdata-connectorДокументация проектаdevice-controlDevice Controlenn-projectДокументация проектаEventsБиблиотеки Localzet ServerflowsintДокументация проектаforgeДокументация проектаHttpClientБиблиотеки Localzet ServerinterpreterСобственный языкinvariaДокументация проектаkeynotesДокументация проектаknotrouteKnotroutelaravel-personal-analyticsДокументация проектаlocalzet-osДокументация проектаmeridianДокументация проектаMQTTБиблиотеки Localzet Servernano-kernelСобственная ОСNoterДокументация проектаpersonal-analyticsДокументация проектаProxyБиблиотеки Localzet ServerPSRБиблиотеки Localzet ServerPSR-7Библиотеки Localzet Serverrschs-monitorДокументация проектаsemsealДокументация проектаshardsealДокументация проектаSocketIOБиблиотеки Localzet ServerSOCKS5Библиотеки Localzet Serverstandalone-analyticsДокументация проектаstatic-php-cliДокументация проектаStorageБиблиотеки Localzet ServersutureДокументация проектаtempoweaveДокументация проектаttsСинтез речиTunnelБиблиотеки Localzet Serverui-kitUI KitvesperДокументация проектаWebAnalyzerWebAnalyzerzorin-access-brokerДокументация проектаzorin-authority-brokerДокументация проектаzorin-authority-sdk-phpДокументация проектаzorin-authority-sdk-pythonДокументация проектаzorin-authority-sdk-tsДокументация проектаzorin-client-intelДокументация проектаzorin-device-core-aospДокументация проектаzorin-host-agentДокументация проектаzorin-native-labДокументация проектаzorin-nodeДокументация проектаzorin-opsДокументация проектаdonstu-python-sdkДокументация проектаfloortraceFloortraceserver-rsLocalzet Server / Cluster
Каталог

Register API

В примерах $clusterSecret задаётся проверенным общим конфигом из инструкции установки. Не используйте пустые или шаблонные ключи.

Register обеспечивает service discovery и координацию между компонентами Cluster.

use localzet\Cluster\Register;
$register = new Register('text://127.0.0.1:1236', [], $clusterSecret);

Имя Register процесса

$register->name = 'Register';

Секретный ключ для аутентификации

$register->secretKey = $clusterSecret;

Важно: Все компоненты (Gateway, Business Worker) должны использовать тот же secretKey.

Register использует текстовый протокол (Text) для простоты и надежности.

Если secretKey не указан, Register автоматически генерирует случайный ключ:

$register = new Register('text://127.0.0.1:1236');
// Ключ будет автоматически сгенерирован
// Используйте $register->secretKey для получения сгенерированного ключа
<?php
use localzet\Cluster\Register;
require_once __DIR__ . '/cluster-config.php';
$register = new Register('text://127.0.0.1:1236');
$register->name = 'Register';
$register->secretKey = $clusterSecret;
// Provision the same environment secret on every node.
if (!defined('GLOBAL_START')) {
\localzet\Server::runAll();
}

Register общается с компонентами через простой JSON протокол:

gateway_connect:

{
"event": "gateway_connect",
"address": "127.0.0.1:2800",
"secret_key": "your-secret-key"
}

server_connect:

{
"event": "server_connect",
"secret_key": "your-secret-key"
}

broadcast_addresses:

{
"event": "broadcast_addresses",
"addresses": ["127.0.0.1:2800", "127.0.0.1:2801", "127.0.0.1:2802"]
}

ping:

{
"event": "ping"
}
  1. Gateway регистрируется: Gateway запускается и отправляет свой внутренний адрес в Register
  2. Register хранит адреса: Register сохраняет список всех Gateway адресов
  3. Business Worker запрашивает адреса: Business Worker подключается и получает список Gateway
  4. Business Worker подключается: Business Worker подключается ко всем Gateway для получения событий

Можно указать несколько процессов service discovery. Этот пример не подтверждает отказоустойчивость: переключение и восстановление соединений требуют отдельного интеграционного теста.

// Register 1
$register1 = new Register('text://127.0.0.1:1236', [], $clusterSecret);
// Register 2
$register2 = new Register('text://127.0.0.1:1237', [], $clusterSecret);
// Configure both addresses on Gateway and Business Worker.
$gateway->registerAddress = ['127.0.0.1:1236', '127.0.0.1:1237'];
  • Secret Key: Обязательно используйте одинаковый secretKey во всех компонентах
  • Сеть: Размещайте Register во внутренней сети, недоступной извне
  • Firewall: Ограничьте доступ к Register порту только компонентам кластера

Для диагностики используйте журнал процессов Server и состояние соединений. Полного журнала всех событий регистрации в текущей реализации нет. Не записывайте общий ключ или полные сообщения регистрации в логи.

  • Проверьте, что secretKey совпадает
  • Проверьте сетевую доступность Register
  • Проверьте логи Register и Gateway
  • Убедитесь, что Gateway запущен и зарегистрирован
  • Проверьте логи Register
  • Проверьте secretKey в Business Worker

Исходник