77 lines
2.4 KiB
Plaintext
77 lines
2.4 KiB
Plaintext
digraph DataSync {
|
|
// Graph settings
|
|
rankdir=LR;
|
|
compound=true;
|
|
fontname="Helvetica";
|
|
node [fontname="Helvetica", fontsize=11];
|
|
edge [fontname="Helvetica", fontsize=10];
|
|
|
|
// Title
|
|
labelloc="t";
|
|
label="Deskmeter - Change Streams Data Sync";
|
|
fontsize=16;
|
|
|
|
// Styling
|
|
node [shape=box, style="rounded,filled"];
|
|
|
|
// Local MongoDB
|
|
subgraph cluster_local_mongo {
|
|
label="Local MongoDB (Replica Set)";
|
|
style=filled;
|
|
color="#E8F5E9";
|
|
fillcolor="#E8F5E9";
|
|
|
|
oplog [label="Oplog", fillcolor="#C8E6C9", shape=cylinder];
|
|
|
|
subgraph cluster_collections {
|
|
label="Collections";
|
|
style=dashed;
|
|
color="#388E3C";
|
|
|
|
switch_coll [label="switch\n(workspace events)", fillcolor="#DCEDC8"];
|
|
task_coll [label="task\n(current tasks)", fillcolor="#DCEDC8"];
|
|
state_coll [label="state\n(current state)", fillcolor="#DCEDC8"];
|
|
history_coll [label="task_history\n(path cache)", fillcolor="#DCEDC8"];
|
|
}
|
|
}
|
|
|
|
// dmsync daemon
|
|
subgraph cluster_dmsync {
|
|
label="dmsync Daemon";
|
|
style=filled;
|
|
color="#F3E5F5";
|
|
fillcolor="#F3E5F5";
|
|
|
|
watcher [label="Change Stream\nWatcher", fillcolor="#E1BEE7"];
|
|
resume_token [label="Resume Token\n(~/.dmsync-resume-token)", fillcolor="#E1BEE7", shape=note];
|
|
}
|
|
|
|
// Remote MongoDB
|
|
subgraph cluster_remote_mongo {
|
|
label="Remote MongoDB (Docker)";
|
|
style=filled;
|
|
color="#FFF3E0";
|
|
fillcolor="#FFF3E0";
|
|
|
|
remote_switch [label="switch", fillcolor="#FFE0B2"];
|
|
remote_task [label="task", fillcolor="#FFE0B2"];
|
|
remote_state [label="state", fillcolor="#FFE0B2"];
|
|
remote_history [label="task_history", fillcolor="#FFE0B2"];
|
|
}
|
|
|
|
// Flow
|
|
switch_coll -> oplog [style=invis];
|
|
task_coll -> oplog [style=invis];
|
|
state_coll -> oplog [style=invis];
|
|
history_coll -> oplog [style=invis];
|
|
|
|
oplog -> watcher [label="watch()", color="#7B1FA2", style=bold];
|
|
watcher -> resume_token [label="persist", color="#666", style=dashed];
|
|
resume_token -> watcher [label="resume_after", color="#666", style=dashed];
|
|
|
|
watcher -> remote_switch [label="upsert", color="#F57C00"];
|
|
watcher -> remote_task [label="upsert", color="#F57C00"];
|
|
watcher -> remote_state [label="upsert", color="#F57C00"];
|
|
watcher -> remote_history [label="upsert", color="#F57C00"];
|
|
}
|