Files d’attente
Une file d’attente d’exécution est un processeur de tâches. Elle contrôle comment les instances de tâches sont exécutées. Pour pouvoir être exécutée, chaque instance de tâche est assignée à une queue d’exécution cible. La queue contrôle combien d’instances de tâches (de toutes les tâches assignées à la queue) peuvent être exécutées à tout moment et le délai entre les exécutions. Par défaut, les paramètres de queue sont locaux à la tâche des files d’attente locales), mais vous pouvez aussi définir les queues comme objets autonomes des files d’attente globales) partagés par les multiples tâches.
Files d’attente globales vs locales
Une file d’attente locale est créée à l’intérieur du cadre d’une tâche. Une file d’attente globale est créée en dehors d’une tâche, comme objet autonome.
Les files d’attente globales fournissent un mécanisme flexible pour contrôler la charge du serveur sur un appareil unique FlowForce ou un cluster. Configurer un cluster signifie que le traitement est distribué parmi les membres du cluster : un appareil maître et un ou plusieurs appareils travailleurs. Le traitement distribué est pris en charge dans Advanced Edition.
Configurer la balance de chargement est un processus multi-étapes qui comprend les procédures suivantes :
1.D’abord, vous avez besoin de créer une file d’attente.
2.Deuxièmement, pour chaque file d’attente, vous devez définir ses paramètres de traitement. Par exemple, vous pouvez configurer qu'une file d’attente soit uniquement exécutée sur le maître, uniquement sur le travailleur, ou sur le maître ou tout travailleur disponible.
3.Troisièmement, vous devez attribuer les tâches à la file d’attente que vous avez créé précédemment.
Les files d’attente locales se comportent comme des files d’attente globales, avec la seule différence qu’avec les files d’attente locales, les tâches ne peuvent être exécutées que sur l’appareil maître et sur aucun autre membre cluster.
Considérations liées à la sécurité
Les queues bénéficient du même mécanisme d’accès à la sécurité comme les autres objets de configuration FlowForce Server. Un utilisateur doit avoir le privilège Définir les queues d’exécution afin de créer des queues, voir aussi Comment les privilèges fonctionnent. De plus, les utilisateurs peuvent consulter les queues, ou assigner des tâches aux queues, uniquement s’ils ont des permissions de conteneur appropriées (pas les mêmes que les privilèges), voir aussi Comment les permissions fonctionnent. Par défaut, tout utilisateur authentifié obtient une permission Queue - Use, ce qui signifie qu’il peut assigner des tâches aux queues.
Pour restreindre l’accès aux queues, naviguez vers le conteneur là où la queue est définie, et modifiez la permission du conteneur à Queue - No access pour le rôle authenticated. Puis, attribuez la permission Queue - Use à tout rôle ou utilisateur dont vous avez besoin. Pour plus d’information, voir Restreindre l’accès au /Conteneur public.
Pour des informations sur le traitement distribué, voir Cluster. Pour des informations sur la création de files d’attente locales et autonomes, voir les sous-sections ci-dessous.
Files d’attente locales
Pour configurer une file d’attente locale, sélectionnez l’option Définir la file d’attente locale depuis la page de configuration de la tâche et spécifiez vos préférences de queue/file d’attente. L’image ci-dessous illustre les paramètres de queue par défaut. Pour les détails sur les propriétés Temps minimum entre les exécutions et exécutions parallèles maximum, voir Paramètres de queue ci-dessous.
Files d’attente globales
Pour créer une copie de l’objet autonome, suivez les étapes suivantes :
1.Ouvrir la page de configuration et naviguez vers le conteneur où vous souhaitez créer une file d’attente.
2.Cliquez sur Créer et sélectionnez Créer file d’attente (capture d’écran ci-dessous).
3.Saisissez un nom pour la file d'attente et, en option, une description.
4.Configurer les paramètres pertinents. Pour les détails, voir Paramètres queue ci-dessous.
5.Cliquez sur Enregistrer.
Paramètres de la file d’attente
Les paramètres liés à la file d’attente sont recensés ci-dessous.
Nom de la file d’attente | Il s’agit d’un champ obligatoire qui représente le nom d’une file d’attente. Le nom pourrait contenir uniquement des lettres, chiffres, espaces uniques, et un tiret bas (_), un tiret (-), et un point (.). Il ne doit pas commencer ou terminer par des espaces.
|
Description de la file d’attente | Description optionnelle.
|
Run on (Advanced Edition) | Spécifie comment toutes les instances de tâches de cette file d’attente doivent être exécutées :
•Maître ou travailleur : Les instances de tâches qui font partie de cette file d’attente seront exécutées sur les appareils maître ou un appareil travailleur disponible, dépendant des noyaux du serveur disponibles. •Uniquement maître : Les instances de tâches seront exécutées uniquement sur l’appareil maître. •Tout travailleur uniquement : Les instances de tâches seront exécutées sur tout travailleur disponible, mais jamais sur le maître.
|
Temps minimum entre les exécutions | Une file d’attente fournit des créneaux d’exécution. Le nombre de créneaux disponibles est géré par le paramètre exécutions parallèles maximum multiplié par le nombre de travailleurs attribués conformément à la règle active actuellement. Chaque créneau exécutera des instances de tâche par séquence.
Le paramètre Temps minimum entre les marches conserve un créneau marqué en tant qu'occupé pour une période de temps brève une fois qu'une instance de tâche s'est terminée, ce qui a pour conséquence qu'il ne choisira pas l'instance de tâche suivante immédiatement. Cela réduit le débit maximum pour cette queue d'exécution, mais fournit un temps de CPU pour d'autres queues d'exécution et d'autres processus sur le même appareil.
|
Exécutions parallèles maximum | Cette option définit le nombre d’exécutions de créneaux d’exécutions disponibles dans une file d’attente. Chaque créneau exécute des instances de tâche de manière séquentielle, donc le paramètre détermine combien d’instances de la même tâche peuvent être exécutées en parallèle dans la file d’attente actuelle. Notez, toutefois, que le nombre d’instances auxquelles vous donnez l’autorisation d’être exécutées en parallèle sera en concurrence avec les ressources d’appareils disponibles. Augmenter cette valeur pourrait être acceptable pour les files d’attente qui traitent les tâches « lightweight » qui n’exécutent pas d’opérations intensives I/O ou ont besoin d’un temps CPU significatif. La valeur par défaut (1 instance) est adaptée pour les files d’attente qui traitent les tâches intensives en ressources, pour assurer que seule une des instances de tâche « heavyweight » est traitée à la fois.
Cette option n’affecte pas le nombre de requêtes HTTP parallèles maximum acceptées par FlowForce Server (dans les requêtes HTTP des clients qui invoquent les tâches configurées comme services web). Pour les détails, voir Reconfigurer les pool threads FlowForce Server.
|
Ensembles multiples de paramètres de queue (Advanced Edition)
Vous pouvez définir des ensembles multiples de paramètres de la file d’attente, chacun avec des exigences de traitement différentes, en cliquant sur le bouton . Pour changer la priorité des configurations de la file d’attente, utilisez les boutons et . Par exemple, vous pouvez définir une règle dans le cas où seul un maître est disponible et une autre règle dans le cas où les maîtres et les travailleurs sont disponibles. Ceci vous permet de créer un mécanisme de repli pour la file d’attente dans le cas qu’un cluster membre devient indisponible, par exemple.
Lorsque FlowForce Server traite des files d’attente, le serveur surveille sans cesse l’état du cluster et de ses membres Si vous avez défini des règles pour les multiples files d’attente, FlowForce Server les évaluera selon l’ordre défini, du haut vers le bas, et prend la première règle qui a au moins un membre cluster selon le paramètre Run On. Pour plus d’information sur l’opération dans les modes maître et travailleur, voir Cluster.
Exemple
En guise d’exemple, jetons un œil sur une configuration où le cluster inclut un appareil maître et quatre appareils travailleurs. Les paramètres de la file d’attente sont définis tels que ci-dessous :
Avec la configuration illustrée ci-dessus, FlowForce traiterait la file d’attente comme suit :
•Si tous les travailleurs sont disponibles, la règle supérieure sera appliquée. Notamment, jusqu’à 16 instances de tâches sont autorisées pour l'exécution simultanée (4 instances pour chaque travailleur). Le temps minimum entre les exécutions est de 0 secondes.
•Si uniquement trois travailleurs sont disponibles, la règle supérieure s’appliquera toujours. Notamment, jusqu’à 12 instances de tâche sont autorisées pour l’exécution simultanée, et le temps minimum entre les exécutions est de 0 secondes.
•Si aucun travailleur n’est disponible, la deuxième règle sera appliquée : Notamment, uniquement 1 instance de tâche est exécutée à un moment donné, et le temps minimum entre les exécutions est de 5 secondes.
Ce type d’exécution rend l’exécution encore possible en l’absence de travailleurs. Veuillez noter que la règle « uniquement maître » est plus stricte (1 instance seulement, et 5 secondes de délai entre les exécutions), de manière à ne pas retirer trop de puissance de traitement depuis l’appareil maître lorsque tous les travailleurs échouent.
Attribuer des tâches aux files d’attente
Une fois que vous avez configuré la file d’attente, vous allez devoir y attribuer une tâche sur la page de configuration de la tâche. À cette fin, nous appliquons la étapes ci dessous :
1.Ouvrez la configuration de la tâche que vous souhaitez attribuer à la file d’attente.
2.Parcourez les paramètres de la file d’attente en bas de la page.
3.Sélectionnez l’option Sélectionner file d’attente existante et fournissez le chemin à l’objet de file d’attente désiré (capture d’écran ci-dessous).
Priorité dans une file d’attente (Édition avancée)
Dans FlowForce Server Advanced Edition, attribuez la priorité aux tâches dans la file d’attente. La priorité est estimée sur la base de toutes les tâches attribuées à la file d’attente. La priorité peut être faible, en-dessous de normale, normale, au-dessus de normale ou élevée. La priorité par défaut est normale. Vous pouvez définir la priorité pour tout type de trigger. Si votre tâche a configuré de multiples déclencheurs, vous pouvez sélectionner différentes valeurs de priorité pour eux, le cas échéant.
Files d’attente globales
Définir la priorité Trigger est particulièrement important pour les files d’attente globales, car vous pouvez décider quelles tâches sont plus importantes dans une file d’attente et devraient être déclenchées d’abord. Dans la plupart des cas, une tâche n’aura qu’un déclencheur. Une tâche dont le déclencheur a une priorité élevée et dont les conditions trigger et dont les conditions ont été déclenchées d’abord.
En partant du fait qu’il y a plusieurs tâches dans une file d’attente globale, et que chaque tâche a plusieurs déclencheurs à priorité différente, FlowForce cochera d’abord les déclencheurs à priorité élevée. Si les conditions du déclencheur ne sont pas remplies, FlowForce Server cochera ensuite les déclencheurs à priorité inférieure. Pour une tâche à plusieurs déclencheurs, il serait plus judicieux de définir la même valeur de priorité pour tous (par ex., priorité élevée si la tâche est plus importante que d’autres dans la file d’attente).
Files d’attente locales
Une file d’attente locale traite les instances pour une et la même tâche. Si seul un déclencheur est configuré, la valeur de priorité sera ignorée. S’il existe plusieurs déclencheurs à priorités différentes, les déclencheurs se feront concurrence. Par exemple, une tâche a un minuteur et un déclencheur ‘file-system’. Le minuteur est de priorité inférieure, alors que le déclencheur ‘file-system’ est de priorité élevée. Si la condition du minuteur a été remplie, et s’il n’y a pas d’autres fichiers à traiter, le minuteur démarrera sa tâche plus tôt que le deuxième déclencheur. Toutefois, s’il faut traiter de multiples fichiers, le minuteur attendra, et le déclencheur ‘file-system’ aura la priorité.