Page History
Table of Contents |
---|
Introduction
Users have a number of options to organize their Subagent Clusters.for organizing their scheduling clusters.
- Agent Cluster: The operational layer of a Director Agent and a number of Subagents acting as an Agent Cluster.
- Subagent Clusters: The functional layer that groups a number of Subagents to different Subagent Clusters
This includes to use of a smaller number of operational Agent Clusters with a higher number of Subagent Clusters and vice versa.
For information on how to set up Agent Clusters and Subagent Clusters see see JS7 - Management of Agent Clusters
Capabilities
Subagent Clusters include the following capabilities.
Implicit Subagent Cluster per Subagent
When adding a Subagent JOC Cockpit can be instructed to add a cluster that holds the single Subagent.
offer a number of capabilities:
- A Subagent can be a member of any number of Subagent Clusters.
- A Subagent Cluster can include a single Subagent and it can include any number of Subagents.
- A Subagent Cluster defines fixed-priority or round-robin scheduling mode to switch between Subagents
- This allows to assign an individual Subagent to a job should the job be executed with this Subagent only.
- The name of the Subagent Cluster corresponds to the Subagent ID.
Unlimited Subagents per Cluster
Any number of Subagents can be added to a cluster.
- Adding more Subagents to a round-robin cluster allows unlimited horizonal scaling.
- Some might consider it paranoid to add a larger number of Subagents to a fixed-priority cluster, however, users are free to create a chain of Subagents that can replace each other.
Graphviz | ||
---|---|---|
| ||
digraph {
compound=true;
rankdir=LR;
JOC [shape="rectangle",label="JOC Cockpit",style="filled",fillcolor="lightskyblue",fontname="Arial",fontsize="10pt"]
Controller [shape="rectangle",label="Controller\nStandalone / Cluster",style="filled",fillcolor="lightskyblue",fontname="Arial",fontsize="10pt"]
node [shape="record"];
Director1 [label="<f0> Agent Cluster\nDirector Agent|<f1> Integrated\nSubagent",style="filled",fillcolor="darkorange1",fontname="Arial",fontsize="10pt"];
Subagent1_1 [shape="rectangle",label="Subagent 1",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
Subagent1_2 [shape="rectangle",label="Subagent 2",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
Subagent1_3 [shape="rectangle",label="Subagent 3",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
{ rank = same; JOC -> Controller -> Director1 }
Director1 -> Subagent1_1 [lhead=cluster_subagent_1];
subgraph cluster_subagent_1 {
label="Subagent Cluster"; fontname="Arial"; fontsize="10pt";
Subagent1_1 -> Subagent1_2 [label=" round-robin ",fontname="Arial",fontsize="10pt"];
Subagent1_2 -> Subagent1_3 [label=" round-robin ",fontname="Arial",fontsize="10pt"];
Subagent1_3 -> Subagent1_1;
}
} |
One Cluster per Subagent
When adding a Subagent, the JOC Cockpit can be instructed to add a Subagent Cluster which holds the single Subagent.
- This allows a job to assigned to an individual Subagent if the job is to be executed only with this Subagent.
- The name of the Subagent Cluster corresponds to the Subagent ID.
Graphviz | ||
---|---|---|
| ||
digraph {
compound=true;
rankdir=LR;
JOC [shape="rectangle",label="JOC Cockpit",style="filled",fillcolor="lightskyblue",fontname="Arial",fontsize="10pt"]
Controller [shape="rectangle",label="Controller\nStandalone / Cluster",style="filled",fillcolor="lightskyblue",fontname="Arial",fontsize="10pt"]
node [shape="record"];
Director1 [label="<f0> Agent Cluster\nDirector Agent|<f1> Integrated\nSubagent ",style="filled",fillcolor="darkorange1",fontname="Arial",fontsize="10pt"];
Subagent1_1 [shape="rectangle",label="Subagent 1",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
Subagent2_1 [shape="rectangle",label="Subagent 1",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
Subagent3_1 [shape="rectangle",label="Subagent 1",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
{ rank = same; JOC -> Controller -> Director1 }
Director1 -> Subagent1_1 [lhead=cluster_subagent_1];
Director1 -> Subagent2_1 [lhead=cluster_subagent_2];
Director1 -> Subagent3_1 [lhead=cluster_subagent_3];
subgraph cluster_subagent_1 {
label="Subagent Cluster 1"; fontname="Arial"; fontsize="10pt";
Subagent1_1 [label=" Subagent 1\n standalone ",fontname="Arial",fontsize="10pt"];
}
subgraph cluster_subagent_2 {
label="Subagent Cluster 2"; fontname="Arial"; fontsize="10pt";
Subagent2_1 [label=" Subagent 2\n standalone ",fontname="Arial",fontsize="10pt"];
}
subgraph cluster_subagent_3 {
label="Subagent Cluster 3"; fontname="Arial"; fontsize="10pt";
Subagent3_1 [label=" Subagent 3\n standalone ",fontname="Arial",fontsize="10pt"];
}
} |
Scheduling Modes
Subagents can be added for both fixed-priority and round-robin scheduling modes:
- fixed-priority: execute jobs with the first Subagent and switch to the next Subagent only if the first Subagent becomes unavailable (active-passive cluster).
- round-robin: execute each the next job on the next next Subagent (active-active cluster).
The JS7 allows to use mixed scheduling modes within the same cluster.
Graphviz | ||
---|---|---|
| ||
digraph {
compound=true;
rankdir=LR;
JOC [shape="rectangle",label="JOC Cockpit",style="filled",fillcolor="lightskyblue",fontname="Arial",fontsize="10pt"]
Controller [shape="rectangle",label="Controller\nStandalone / Cluster",style="filled",fillcolor="lightskyblue",fontname="Arial",fontsize="10pt"]
node [shape="record"];
Director1 [label="<f0> Agent Cluster\nDirector Agent|<f1> Integrated\nSubagent",style="filled",fillcolor="darkorange1",fontname="Arial",fontsize="10pt"];
Subagent_active [shape="rectangle",label="Active Subagent",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
Subagent_standby [shape="rectangle",label="Standby Subagent",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
Subagent1_1 [shape="rectangle",label="Subagent 1",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
Subagent1_2 [shape="rectangle",label="Subagent 2",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
Subagent1_3 [shape="rectangle",label="Subagent 3",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
{ rank = same; JOC -> Controller -> Director1 }
Director1 -> Subagent_active [lhead=cluster_subagent_active_passive];
Director1 -> Subagent1_1 [lhead=cluster_subagent_round_robin];
subgraph cluster_subagent_active_passive {
label="Subagent Cluster: active-passive"; fontname="Arial"; fontsize="10pt";
Subagent_active -> Subagent_standby [label=" fixed-priority ",fontname="Arial",fontsize="10pt"];
}
subgraph cluster_subagent_round_robin {
label="Subagent Cluster: active-active"; fontname="Arial"; fontsize="10pt";
Subagent1_1 -> Subagent1_2 [label=" round-robin ",fontname="Arial",fontsize="10pt"];
Subagent1_2 -> Subagent1_3 [label=" round-robin ",fontname="Arial",fontsize="10pt"];
Subagent1_3 -> Subagent1_1;
}
} |
Strategies
Director Agent as Subagent Cluster Member
Users can add the a Director Agent to their Subagent Clusters:
- The Primary and Secondary Director Agents each include a Subagent that can be used to execute jobs.
- The Director Subagent can be added to any Subagent Clusters.
- Users can decide not to use the Director Agent for job execution but for orchestration of Subagents only in order to . This will guarantee the highest level of robustness.
Agent Clusters and Subagent Clusters
Users can apply different strategies to manage operational Agent Clusters and functional Subagent Clusters.
- A single or a few Agent Clusters can be used that with each holds holding a larger number of Subagent Clusters.
- Each Subagent Cluster selects a number of Subagents.
- The same Subagents can occur in any number of Subagent Clusters.
- The same Subagents cannot occur in more than one Agent Cluster.
- This scenario can be applied for load sharing between server nodes that act for a number of clustered applications.
- A larger number of Agent Clusters can be used that hold a single or a small number of Subagent Clusters.
- Agent Clusters are autonomous and are not related to each other.
- Each Agent Cluster is assigned an individual Director Agent that is optionally clustered.
- This scenario is preferably applied in a situation when communication between a Director Agent and Subagents should be limited to a few servers, for example for use of , when Agent Clusters are used in separate network zones.
Graphviz | ||
---|---|---|
| ||
digraph {
compound=true;
rankdir=LR;
JOC [shape="rectangle",label="JOC Cockpit",style="filled",fillcolor="lightskyblue",fontname="Arial",fontsize="10pt"]
Controller [shape="rectangle",label="Controller\nStandalone / Cluster",style="filled",fillcolor="lightskyblue",fontname="Arial",fontsize="10pt"]
node [shape="record"];
Director1 [label="<f0> Agent Cluster 1\nDirector Agent|<f1> Integrated\nSubagent",style="filled",fillcolor="darkorange1",fontname="Arial",fontsize="10pt"];
node [shape="record"];
Director2 [label="<f0> Agent Cluster 2\nDirector Agent|<f1> Integrated\nSubagent",style="filled",fillcolor="darkorange1",fontname="Arial",fontsize="10pt"];
Subagent1a_1 [shape="rectangle",label="Subagent 1",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
Subagent1a_2 [shape="rectangle",label="Subagent 2",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
Subagent1a_3 [shape="rectangle",label="Subagent 3",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
Subagent2a_1 [shape="rectangle",label="Subagent 4",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
Subagent2a_2 [shape="rectangle",label="Subagent 5",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
Subagent2b_1 [shape="rectangle",label="Subagent 4",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
Subagent2b_2 [shape="rectangle",label="Subagent 6",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
Subagent2b_3 [shape="rectangle",label="Subagent 7",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"];
{ rankdir = LR; rank = same; JOC -> Controller -> Director1; Controller -> Director2; }
Director1 -> Subagent1a_1 [lhead=cluster_subagent_1a];
Director2 -> Subagent2a_1 [lhead=cluster_subagent_2a];
Director2 -> Subagent2b_1 [lhead=cluster_subagent_2b];
subgraph cluster_subagent_1a {
label="Subagent Cluster 1"; fontname="Arial"; fontsize="10pt";
Subagent1a_1 -> Subagent1a_2 [label=" round-robin ",fontname="Arial",fontsize="10pt"];
Subagent1a_2 -> Subagent1a_3 [label=" round-robin ",fontname="Arial",fontsize="10pt"];
Subagent1a_3 -> Subagent1a_1;
}
subgraph cluster_subagent_2a {
label="Subagent Cluster 2a"; fontname="Arial"; fontsize="10pt";
Subagent2a_1 -> Subagent2a_2 [label=" fixed-priority ",fontname="Arial",fontsize="10pt"];
}
subgraph cluster_subagent_2b {
label="Subagent Cluster 2b"; fontname="Arial"; fontsize="10pt";
Subagent2b_1 -> Subagent2b_2 [label=" round-robin ",fontname="Arial",fontsize="10pt"];
Subagent2b_2 -> Subagent2b_3 [label=" round-robin ",fontname="Arial",fontsize="10pt"];
Subagent2b_3 -> Subagent2b_1;
}
} |