Server/Architecture
Information flow
<graphviz> digraph G { size="14,20"; node [URL="http://meta.cosmopool.net/wiki/\N"]
Client;
subgraph cluster_node1 { label="Node 1";
subgraph cluster_webserver {
label="webserver"; style=filled; fillcolor=olivedrab1;
HttpServer [style="rounded", shape=box]; Authentication [shape=box]; Handler [shape=box]; Session [shape=box];
}
HttpServer -> Handler [dir="both"]; Authentication -> Request [dir="both"]; Handler -> Request [dir="both"]; Handler -> Authentication [dir="both"]; Handler -> Session [dir="both"]; Session -> Request [dir="both"];
subgraph cluster_storage {
label="storage"; style=filled; fillcolor=paleturquoise1; Request [shape=box, style="rounded"]; Klocation [shape=box]; Cache [shape=box]; KcategoryManagers [shape=box, label="KclassManager\nKattributeManager\nKinstanceManager\nKrelationmanager\nKnotationManager\nKaccessManager"]; Request -> KcategoryManagers [dir="both"]; Cache -> KcategoryManagers [dir="both"]; Klocation -> KcategoryManagers [dir="both"]; {rank=same; Klocation; KcategoryManagers; Cache; } LocalStorage [shape=box, label="KclassLocal\nKinstanceLocal\nKrelationLocal"]; RemoteStorage [shape=box]; HttpClient [shape=box]; { rank=same; RemoteStorage; HttpClient; }
}
KcategoryManagers -> LocalStorage [dir="both"]; KcategoryManagers -> RemoteStorage [dir="both"];
RemoteStorage -> HttpClient [dir="both"];
}
Client -> HttpServer [dir="both"];
subgraph cluster_node2 { label="Node 2"; StorageNode2; }
{ rank=same; HttpClient; StorageNode2 [shape=box, style=filled; label="webserver", fillcolor="olivedrab1"; ]; }
HttpClient -> StorageNode2 [label="http", dir="both"];
subgraph cluster_node3 { label="Node 3"; StorageNode3; } { rank=same; HttpClient; StorageNode3 [shape=box, style=filled; label="webserver", fillcolor="olivedrab1"; ]; } HttpClient -> StorageNode3 [label="http", dir="both"];
} </graphviz>