github.com/cozy/cozy-stack@v0.0.0-20240603063001-31110fa4cae1/docs/diagrams/realtime-workflow.gv (about)

     1  digraph from_cozy_move {
     2  	graph [splines=true];
     3  	node [shape="box", fontname="lato", fontsize=11, margin=0.12, color="#297EF2", fontcolor="#32363F"];
     4  	edge [color="#32363F"];
     5  	ranksep=0.45; nodesep=1;
     6  
     7  	subgraph clients {
     8  		rank=same; margin=24;
     9  		client_1 [label="Client 1", shape="oval", color="#7F6BEE"];
    10  		client_2 [label="Client 2", shape="oval", color="#7F6BEE"];
    11  	}
    12  
    13  	subgraph cluster_stack_1 {
    14  		label="Stack 1"; labeljust="l"; fontname="lato"; fontsize=12; margin=24;
    15  		sub_1 [label="Subscriber"];
    16  		hub_1 [label="Redis Hub"];
    17  		mem_1 [label="Mem Hub"];
    18  	}
    19  
    20  	redis [label="Redis", shape="cylinder", color="#7F6BEE", margin=0.2];
    21  
    22  	subgraph cluster_stack_2 {
    23  		label="Stack 2"; labeljust="l"; fontname="lato"; fontsize=12; margin=24;
    24  		endpoint_2 [label="HTTP endpoint"];
    25  		hub_2 [label="Redis Hub"];
    26  		mem_2 [label="Mem Hub"];
    27  		local_2 [label="Firehose topic"];
    28  		sched_2 [label="Redis scheduler"];
    29  	}
    30  
    31  	client_1 -> sub_1 [label="(1) WebSockets"];
    32  	sub_1 -> mem_1 [label="(2) subscribe"];
    33  
    34  	client_2 -> endpoint_2 [label="(3) HTTP request"];
    35  	endpoint_2 -> hub_2 [label="(4) publish"]
    36  	hub_2 -> redis [label="(5) PUB"]
    37  	redis -> hub_2 [label="(6)"]
    38  	redis -> hub_1 [label="(6)"]
    39  	hub_2 -> mem_2 [label="(7)"]
    40  	hub_1 -> mem_1 [label="(7)"]
    41  	mem_1 -> sub_1 [label="(8)"]
    42  	sub_1 -> client_1 [label="(9)"]
    43  
    44  	hub_2 -> local_2 [label="(10) broadcast"]
    45  	local_2 -> sched_2 [label="(11)"]
    46  
    47  	// Hidden, to order the clusters/nodes
    48  	client_1 -> endpoint_2 [style="invis"];
    49  	mem_1 -> redis [style="invis"];
    50  }