Introduction
Exigences minimales
Commencer
Contactez-nous
Emissary est un moteur de flux de travail basé sur les données et basé sur le P2P qui s'exécute dans un réseau de ressources de calcul P2P hétérogène, éventuellement largement dispersé, à plusieurs niveaux. Les itinéraires de flux de travail ne sont pas planifiés à l'avance comme dans les moteurs de flux de travail conventionnels, mais sont découverts au fur et à mesure que davantage d'informations sont découvertes sur les données. Il n'y a généralement aucune interaction de l'utilisateur dans un flux de travail Emissary, les données sont plutôt traitées de manière orientée vers un objectif jusqu'à ce qu'elles atteignent un état d'achèvement.
Emissary est hautement configurable, mais dans cette implémentation de base, il ne fait presque rien. Les utilisateurs de ce framework doivent fournir des classes qui étendent emissary.place.ServiceProviderPlace pour effectuer des travaux sur les charges utiles emissiry.core.IBaseDataObject.
Une variété de choses peuvent être faites et le flux de travail est géré par étapes, par exemple ÉTUDE, ID, COORDONNER, TRANSFORMER, ANALYSER, IO, RÉVISION.
Les classes chargées de diriger le flux de travail sont emmissary.core.MobileAgent et les classes qui en dérivent, qui gèrent le chemin d'un ensemble d'objets de charge utile associés à travers le flux de travail et emissary.directory.DirectoryPlace qui gère les services disponibles, leur coût et qualité et garder le réseau P2P connecté.
Système d'exploitation Linux ou MacOSX
JDK11
Apache Maven 3.5+
Lisez le guide DEVELOPING.md pour obtenir des informations sur l'installation des composants requis, l'extraction du code source, la création et l'exécution d'Emissary.
Exécutez mvn clean package
pour compiler, tester et empaqueter Emissary
[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 9.132 s [INFO] Finished at: 2022-01-10T22:31:05Z [INFO] ------------------------------------------------------------------------
Il existe un script bash dans Emissary qui exécute tout. Il se trouve dans le répertoire Emissary de niveau supérieur. Le script exécute la classe emissiry.Emissary qui dispose de plusieurs commandes Picocli disponibles pour gérer différentes fonctions.
Si le script émissaire est exécuté sans aucun argument, vous obtiendrez une liste de toutes les sous-commandes de configuration et une brève description.
./emissary
L'exécution de ./emissary help
vous donnera le même résultat que l'exécution sans arguments. Si vous souhaitez voir des informations plus détaillées sur une commande, ajoutez le nom de la commande après l'aide. Par exemple, consultez tous les arguments avec des descriptions pour la commande serveur , exécutez :
./emissary help server
Les autres commandes ont toutes des arguments (-b ou --projectBase) qui peuvent être définis, mais ils doivent correspondre à PROJECT_BASE.
Le répertoire de configuration est par défaut /config mais peut également être transmis avec (-c ou --config) . Lors de l'exécution à partir de la caisse git, vous devez utiliser target comme projectBase. N'hésitez pas à modifier les fichiers de configuration dans target/config avant de commencer.
La journalisation est gérée par logback. Vous pouvez pointer vers un fichier personnalisé avec l'argument --logbackConfig .
Consultez l' aide -c pour chaque commande pour obtenir plus d'informations.
Cette commande démarrera un serveur Emissary et initialisera tous les lieux, un lieu de prise en charge et déposera les filtres configurés. Il démarrera en mode autonome si -m ou --mode n'est pas spécifié. Par défaut, le nombre de MobileAgents est calculé en fonction des spécifications de la machine. Sur les ordinateurs modernes, cela peut être élevé. Vous pouvez contrôler le nombre d'agents avec -a ou --agents . Voici un exemple d'exécution.
./emissary server -a 2
Sans autre configuration, il démarrera sur http://localhost:8001. Si vous accédez à cette URL, vous devrez saisir le nom d'utilisateur et le mot de passe définis dans target/config/jetty-users.properties, qui est émissaire et émissaire123.
Le PickUpPlace par défaut est configuré pour lire les fichiers à partir de target/data/InputData . Si vous copiez des fichiers dans ce répertoire, vous verrez Emissary les traiter. Gardez à l’esprit que seuls toUpper et toLower sont configurés, donc la sortie ne sera pas trop intéressante.
La commande agents affiche le nombre de MobileAgents pour l'hôte configuré et ce que font ces agents. Par défaut, le port est 9001, mais vous pouvez utiliser -p ou --port pour le modifier.
En supposant que vous utilisez 8001 à partir de la commande serveur ci-dessus, essayez :
./emissary agents -p 8001
Le pool est une vue réduite des agents pour un nœud. Lui aussi est par défaut le port 9001. Pour exécuter le serveur autonome démarré ci-dessus, exécutez
./emissary pool -p 8001
Cette commande est plus utile pour un cluster car elle offre une vue plus compréhensible de chaque nœud.
La commande Env nécessite qu'un serveur soit en cours d'exécution. Il demandera au serveur certaines valeurs de configuration, comme PROJECT_BASE et BIN_DIR. Sans arguments, il affichera une réponse json non formatée.
./emissary env
Mais vous pouvez également supprimer une réponse adaptée au sourcing dans bash.
./emissary env --bashable
Le démarrage du serveur Emissary appelle en fait ce point de terminaison et supprime $PROJECT_BASE}/env.sh avec les variables configurées. Ceci est fait pour que les scripts shell puissent source $PROJECT_BASE}/env.sh
et ensuite avoir ces variables disponibles sans avoir à se soucier de leur configuration ailleurs.
La commande config vous permet de voir la configuration effective pour un lieu/service/classe spécifié. Étant donné qu'Emissary utilise des saveurs, cette commande affichera la configuration résultante d'une classe une fois que toutes les saveurs auront été appliquées. Cette commande peut être utilisée pour se connecter à un nœud Emissary en cours d'exécution en spécifiant -h
pour l'hôte (la valeur par défaut est localhost) et -p
pour le port (la valeur par défaut est 8001). Pour vous connecter à un émissaire exécuté localement sur le port 8001, l'une des commandes suivantes fonctionnera :
./emissary config --place emissary.place.sample.ToLowerPlace ./emissary config --place emissary.place.sample.ToLowerPlace -h localhost -p 8001
Vous pouvez éventuellement spécifier le mode hors ligne à l'aide de --offline
pour utiliser les fichiers de configuration spécifiés dans votre CONFIG_DIR local :
./emissary config --place emissary.place.sample.ToLowerPlace --offline
En mode hors ligne, vous pouvez fournir des saveurs pour voir les différences de configurations :
./emissary config --place emissary.place.sample.ToLowerPlace --offline --flavor STANDALONE,TESTING
Ceux-ci sont utiles pour voir la configuration effective, mais nous pouvons également exécuter en mode détaillé pour voir tous les fichiers de configuration ainsi que la sortie finale. Ceci est contrôlé avec l'indicateur --detailed
:
./emissary config --place emissary.place.sample.ToLowerPlace --detailed
ou en mode hors ligne :
./emissary config --place emissary.place.sample.ToLowerPlace --offline --detailed
Emissary est amusant en mode autonome, mais exécuter un cluster est plus approprié pour un travail réel. La manière d'exécuter en cluster est similaire à celle de l'exécution autonome, mais vous devez utiliser -m cluster pour indiquer au nœud de se connecter à d'autres nœuds. En mode cluster, Emissary démarrera également PickUpClient au lieu de PickUpPlace, vous devrez donc démarrer un chargeur.
Regardez le target/config/peers.cfg pour voir les pairs de rendez-vous. Dans ce cas, il y en a 3. Les nœuds exécutés sur les ports 8001 et 9001 ne sont que des nœuds émissaires. Le nœud exécuté sur 7001 est le chargeur. Démarrons donc 8001 et 9001 dans deux terminaux différents.
./emissary server -a 2 -m cluster ./emissary server -a 2 -m cluster -p 9001
Étant donné que ces nœuds connaissent tous les ports 8001, 9001 et 7001, vous verrez des erreurs dans les journaux à mesure qu'ils tentent de se connecter.
Notez que dans les déploiements réels, nous n'exécutons pas plusieurs processus Emissary sur le même nœud. Vous pouvez configurer le nom d'hôte avec -h .
Avec les nœuds démarrés sur les ports 8001 et 9001, nous devons démarrer le feeder. La commande feed utilise le port 7001 par défaut, mais nous devons configurer un répertoire à partir duquel le feeder lira. Les fichiers déposés dans ce répertoire seront disponibles pour les nœuds de travail et le travail devra être réparti entre le cluster. Démarrez le flux avec
mkdir ~/Desktop/feed1 ./emissary feed -i ~/Desktop/feed1/
Vous devriez pouvoir accéder à http://localhost:8001, http://localhost:9001 et http://localhost:7001 dans le navigateur et consulter les emplacements configurés. Déposez quelques fichiers dans ~/Desktop/feed1 et voyez les 2 nœuds les traiter. Le traitement peut prendre une minute.
Les agents en mode cluster affichent à nouveau des détails sur les mobileAgents. Il commence par le nœud que vous configurez (localhost:9001 par défaut), puis appelle tous les nœuds qu'il connaît et obtient les mêmes informations. Exécutez-le avec :
./emissary agents --cluster
Le pool en mode cluster fait également la même chose que le pool en mode autonome. Il démarre par défaut au niveau du nœud (locahost:9001), puis accède à tous les nœuds qu'il connaît et regroupe une vue réduite du cluster. Exécutez-le avec
./emissary pool --cluster
La topologie communique avec le nœud configuré (localhost : 8001 par défaut) et avec tous les nœuds qu'elle connaît. La réponse correspond à ce que connaissent tous ces nœuds, afin que vous puissiez créer une topologie réseau pour votre cluster. Exécutez-le avec
./emissary topology
Le magasin de clés et le mot de passe du magasin de clés se trouvent dans le fichier emissiry.client.EmissaryClient-SSL.cfg. Un exemple de magasin de clés que vous pouvez utiliser pour tester cette fonctionnalité est inclus et configuré par défaut. Nous vous déconseillons d'utiliser l'exemple de magasin de clés dans les environnements de production. Pour utiliser votre propre magasin de clés, modifiez les valeurs de configuration dans le fichier emissiry.client.EmissaryClient-SSL.cfg.
Autonome
./emissary server -p 8443 --ssl --disableSniHostCheck
En cluster
./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/
Si vous avez des questions ou des préoccupations concernant ce projet, vous pouvez nous contacter à : [email protected]
Pour les questions de sécurité et les rapports de vulnérabilité, veuillez vous référer à SECURITY.md