Nebula основана на событийном управлении с помощью libev и может быть сравнима с Java-фреймворком Netty.
Labor — это обработчик процессов, который включает два класса сущностей: Manager и Worker. Ресурсы на уровне процесса управляются и распределяются Labor.
Actor обрабатывает события (сообщения). Вся бизнес-логика абстрагируется в виде событий и их обработки. Actor делится на разные типы: Cmd, Module, Step, Session и т. д. Бизнес-логику реализуют через создание подклассов от четырёх типов обработчиков. При этом не нужно заботиться о чём-либо, кроме бизнес-логики.
Channel представляет собой канал связи. Все сообщения передаются через Channel. Они являются неблокирующими и используются для отправки и получения сообщений по методам, вызываемым Labor. Кодирование и декодирование сообщений выполняется Codec. Каждый раз при создании Channel синхронно создаётся Codec, который привязывается к нему. Если изменяется коммуникационный протокол прикладного уровня, то используется переключение Codec для одного и того же канала для обеспечения разного кодирования и декодирования.
Модель процесса Nebula состоит из управляющего и рабочего процессов. Во время запуска программа сначала создаёт управляющий процесс. Он считывает конфигурационный файл, загружает бизнес-плагины, а затем привязывает IP, слушает порт и запускает указанное в конфигурационном файле количество рабочих процессов.
Управляющий процесс отвечает за мониторинг и управление рабочими процессами. Он связывается с центром регистрации для передачи информации о текущем узле и получает информацию о других узлах. Также он отправляет конфигурации и принимает новые соединения, передавая дескрипторы файлов соединений рабочим процессам.
Рабочие процессы отвечают за передачу и обработку данных.
Между управляющим и рабочими процессами происходит обмен данными через два UnixSocket, которые разделяют потоки управления и данных.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )