Продолжаем. Как работает ядро.
В N50 было ядро и были скрипты на сателлитах. В N+ ядро модульное, т.е. можно запускать все ядро или его части на разных серверах. Например, возможен такой вариант, что подсчет трафика будет на одном сервере, все остальные функции на другом. Все, кроме скрипта управления фаерволом (пока не переделал его), является модулем ядра. Т.е. чтобы обеспечить определенный функционал на сателлите, вам нужно запустить на нем копию ядра с нужными модулями, обычно вам понадобится только модуль сервер-авторизации, если вы юзаете авторизатор.
Ядро - скрипт nokernel.pl. Модули в папке kernel, файл cfg.pl - конфиг ядра в виде perl файла. Это чуть сложнее обычного текстового файла, но редактируется элементарно (меняются только параметры, а не структура), зато структура более гибкая. Если посмотрите cfg.pl, то увидите, что у каждого модуля есть параметр run - если установлен, то модуль запускается автоматом при запуске ядра. Иначе придется в командной строке указать конкретно этот модуль.
Ядро использует так называемые зеленые потоки - это не настоящая многопоточность, модуль выполняют мелкую задачу, потом передает управление другому модулю и т.д. Это похоже на ядро N50. Но есть одна существенная разница: можно запускать несколько ядер с комбинацией модулей.
В идеале на каждый модуль можно запустить отдельное ядро и все будет выполнятся строго параллельно в разных процессах. Но обычно это не требуется. Если же вы видите, что какой-то модуль подтупливает - его можно запустить отдельным процессом. Это же может понадобиться для задействования многоядерности.
Иногда я использую и настоящие потоки, например, опрос коллекторов трафика (не подсчет трафика, а именно опрос коллекторов). Однако, я стараюсь прибегать к этому в крайнем случае т.к. во-первых многопоточность трудна для понимания, увеличивается вероятность ошибки (надо лочить разделяемые ресурсы и т.д.), да еще есть проблема с утечками памяти в некоторых случаях.
perl nokernel.pl -v -m=system_check
запустит модуль system_check отдельным процессом в verbose режиме.
выведет список модулей и флаг запускаются ли они автоматом или нет
perl nokernel.pl -m=authserver -d &
запускает в режиме демона сервер обработки авторизаций от авторизатора.
запуск всех модулей, у которых run=1
может в форме вики делать доку?
Если бы кто-то занялся этим, я один все не могу