Введение
Минимальные требования
Начиная
Связаться с нами
Emissary — это основанный на P2P механизм рабочего процесса, управляемый данными, который работает в гетерогенной, возможно, широко рассредоточенной, многоуровневой P2P-сети вычислительных ресурсов. Маршруты рабочих процессов не планируются заранее, как в традиционных механизмах рабочих процессов, а обнаруживаются по мере получения дополнительной информации о данных. Обычно в рабочем процессе Emissary нет взаимодействия с пользователем, а данные обрабатываются целенаправленно, пока не достигнут состояния завершения.
Emissary имеет широкие возможности настройки, но в этой базовой реализации почти ничего не делает. Ожидается, что пользователи этой платформы предоставят классы, расширяющие emissary.place.ServiceProviderPlace для выполнения работы с полезными нагрузками emissary.core.IBaseDataObject.
Можно выполнять самые разные задачи, а рабочий процесс управляется поэтапно, например ИЗУЧЕНИЕ, ИДЕНТИФИКАЦИЯ, КООРДИНАЦИЯ, ПРЕОБРАЗОВАНИЕ, АНАЛИЗ, ВВОД, ОБЗОР.
Классами, ответственными за управление рабочим процессом, являются emissary.core.MobileAgent и производные от него классы, которые управляют путем набора связанных объектов полезной нагрузки через рабочий процесс, а также emissary.directory.DirectoryPlace, который управляет доступными услугами, их стоимостью и качество и поддерживать подключение к P2P-сети.
Операционная система Linux или MacOSX
JDK 11
Апач Maven 3.5+
Прочтите руководство DEVELOPING.md для получения информации об установке необходимых компонентов, извлечении исходного кода, сборке и запуске Emissary.
Запустите mvn clean package
чтобы скомпилировать, протестировать и упаковать Emissary.
[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 9.132 s [INFO] Finished at: 2022-01-10T22:31:05Z [INFO] ------------------------------------------------------------------------
В Emissary есть один bash-скрипт, который запускает все. Он находится в каталоге эмиссаров верхнего уровня. Сценарий запускает класс emissary.Emissary, в котором есть несколько команд Picocli для обработки различных функций.
Если сценарий эмиссара запускается без каких-либо аргументов, вы получите список всех подкоманд конфигурации и их краткое описание.
./emissary
Запуск ./emissary help
даст тот же результат, что и запуск без аргументов. Если вы хотите просмотреть более подробную информацию о команде, добавьте имя команды после справки. Например, чтобы увидеть все аргументы с описаниями для команды сервера , запустите:
./emissary help server
Все остальные команды имеют аргументы (-b или --projectBase) , которые можно установить, но они должны соответствовать PROJECT_BASE.
Каталог конфигурации по умолчанию — /config, но его также можно передать с помощью (-c или --config) . При запуске из git checkout вы должны использовать target в качестве projectBase. Не стесняйтесь изменять файлы конфигурации в target/config перед началом работы.
Ведение журнала осуществляется методом logback. Вы можете указать на пользовательский файл с помощью аргумента --logbackConfig .
Дополнительную информацию см. в справке -c для каждой команды.
Эта команда запустит сервер Emissary и инициализирует все настроенные места, места получения и фильтры высадки. Он запустится в автономном режиме, если не указан параметр -m или --mode . По умолчанию количество MobileAgents рассчитывается на основе характеристик машины. На современных компьютерах это значение может быть высоким. Вы можете контролировать количество агентов с помощью -a или --agents . Вот пример запуска.
./emissary server -a 2
Без дальнейшей настройки он запустится по адресу http://localhost:8001. Если вы перейдете по этому URL-адресу, вам нужно будет ввести имя пользователя и пароль, определенные в target/config/jetty-users.properties, то есть emissary и emissary123.
PickUpPlace по умолчанию настроен на чтение файлов из target/data/InputData . Если вы скопируете файлы в этот каталог, вы увидите, что Emissary их обрабатывает. Имейте в виду, что настроены только toUpper и toLower, поэтому вывод будет не слишком интересным.
Команда агентов показывает количество MobileAgents для настроенного хоста и действия этих агентов. По умолчанию порт – 9001, но вы можете использовать -p или --port, чтобы изменить его.
Предполагая, что вы используете 8001 с помощью приведенной выше команды сервера, попробуйте:
./emissary agents -p 8001
Пул — это свернутое представление агентов узла. По умолчанию для него также используется порт 9001. Для запуска на автономном сервере, запущенном выше, запустите
./emissary pool -p 8001
Эта команда более полезна для кластера, поскольку она обеспечивает более удобоваримое представление каждого узла.
Команда Env требует, чтобы сервер был запущен. Он запросит у сервера некоторые значения конфигурации, например PROJECT_BASE и BIN_DIR. Без аргументов он выдаст неформатированный ответ в формате JSON.
./emissary env
Но вы также можете сбросить ответ, подходящий для поиска в bash.
./emissary env --bashable
Запуск сервера Emissary фактически вызывает эту конечную точку и выгружает файл $PROJECT_BASE}/env.sh с настроенными переменными. Это сделано для того, чтобы сценарии оболочки могли source $PROJECT_BASE}/env.sh
, а затем иметь доступ к этим переменным, не беспокоясь о их настройке в другом месте.
Команда config позволяет вам увидеть эффективную конфигурацию для указанного места/услуги/класса. Поскольку Emissary использует варианты, эта команда покажет результирующую конфигурацию класса после применения всех вариантов. Эту команду можно использовать для подключения к работающему узлу Emissary, указав -h
для хоста (по умолчанию — localhost) и -p
для порта (по умолчанию — 8001). Чтобы подключиться к локально работающему Emissary через порт 8001, подойдет любая из следующих команд:
./emissary config --place emissary.place.sample.ToLowerPlace ./emissary config --place emissary.place.sample.ToLowerPlace -h localhost -p 8001
При желании вы можете указать автономный режим, используя --offline
, чтобы использовать файлы конфигурации, указанные в локальном CONFIG_DIR:
./emissary config --place emissary.place.sample.ToLowerPlace --offline
В автономном режиме вы можете предоставить варианты, чтобы увидеть различия в конфигурациях:
./emissary config --place emissary.place.sample.ToLowerPlace --offline --flavor STANDALONE,TESTING
Это полезно для просмотра эффективной конфигурации, но мы также можем запустить в подробном режиме, чтобы увидеть все файлы конфигурации вместе с окончательным результатом. Это контролируется флагом --detailed
:
./emissary config --place emissary.place.sample.ToLowerPlace --detailed
или в автономном режиме:
./emissary config --place emissary.place.sample.ToLowerPlace --offline --detailed
Emissary интересен в автономном режиме, но для реальной работы больше подходит запуск кластера. Способ запуска кластера аналогичен автономному запуску, но вам нужно указать -m кластер , чтобы указать узлу подключаться к другим узлам. В кластерном режиме Emissary также запустит PickUpClient вместо PickUpPlace, поэтому вам нужно будет запустить фидер.
Посмотрите файл target/config/peers.cfg, чтобы увидеть узлы встречи. В данном случае их 3. Узлы, работающие на портах 8001 и 9001, являются просто узлами-эмиссарами. Узел, работающий на 7001, является фидером. Итак, давайте запустим 8001 и 9001 в двух разных терминалах.
./emissary server -a 2 -m cluster ./emissary server -a 2 -m cluster -p 9001
Поскольку все эти узлы знают о портах 8001, 9001 и 7001, вы увидите ошибки в журналах, поскольку они продолжают пытаться подключиться.
Обратите внимание: в реальных развертываниях мы не запускаем несколько процессов Emissary на одном узле. Вы можете настроить имя хоста с помощью -h .
Когда узлы запущены на портах 8001 и 9001, нам нужно запустить фидер. Команда подачи по умолчанию использует порт 7001, но нам нужно настроить каталог, из которого механизм подачи будет читать. Файлы, помещенные в этот каталог, будут доступны рабочим узлам, и работа должна быть распределена по кластеру. Запустите ленту с помощью
mkdir ~/Desktop/feed1 ./emissary feed -i ~/Desktop/feed1/
У вас должна быть возможность нажать http://localhost:8001, http://localhost:9001 и http://localhost:7001 в браузере и просмотреть настроенные места. Перетащите несколько файлов в ~/Desktop/feed1 и посмотрите, как их обрабатывают два узла. Им может потребоваться минута, чтобы начать обработку.
Агенты в кластерном режиме снова отображают подробную информацию о мобильных агентах. Он начинается с узла, который вы настраиваете (по умолчанию localhost:9001), затем обращается ко всем узлам, о которых он знает, и получает ту же информацию. Запустите его с помощью:
./emissary agents --cluster
Пул в кластерном режиме действует так же, как пул в автономном режиме. По умолчанию он начинается с узла (locahost:9001), затем переходит ко всем известным ему узлам и объединяет свернутое представление кластера. Запустите его с
./emissary pool --cluster
Топология обращается к настроенному узлу (по умолчанию localhost:8001) и к каждому узлу, о котором она знает. Ответ — это то, о чем знают все эти узлы, поэтому вы можете построить сетевую топологию своего кластера. Запустите его с
./emissary topology
Хранилище ключей и пароль хранилища ключей находятся в файле emissary.client.EmissaryClient-SSL.cfg. По умолчанию включен и настроен образец хранилища ключей, который можно использовать для тестирования этой функции. Мы не рекомендуем использовать образец хранилища ключей в производственных средах. Чтобы использовать собственное хранилище ключей, измените значения конфигурации в файле emissary.client.EmissaryClient-SSL.cfg.
Автономный
./emissary server -p 8443 --ssl --disableSniHostCheck
Кластеризованный
./emissary server -p 8443 --ssl --disableSniHostCheck --mode cluster ./emissary server -p 9443 --ssl --disableSniHostCheck --mode cluster mkdir ~/Desktop/feed1 ./emissary feed -p 7443 --ssl --disableSniHostCheck -i ~/Desktop/feed1/
Если у вас есть какие-либо вопросы или сомнения по поводу этого проекта, вы можете связаться с нами по адресу: [email protected].
Вопросы безопасности и отчеты об уязвимостях можно найти на сайте SECURITY.md.