{"id":105,"date":"2006-07-26T21:43:49","date_gmt":"2006-07-27T01:43:49","guid":{"rendered":"http:\/\/www.rakkar.org\/blog\/?p=105"},"modified":"2006-07-26T21:43:49","modified_gmt":"2006-07-27T01:43:49","slug":"connection-graph-subgraph-capability-added","status":"publish","type":"post","link":"https:\/\/rakkar.org\/blog\/index.php\/2006\/07\/26\/connection-graph-subgraph-capability-added\/","title":{"rendered":"Connection graph subgraph capability added"},"content":{"rendered":"<p>\t\t\t\tI have a connection graph which is generated by adding all immediate connections to a graph and sending that to all immediate connections.  They in turn will add all their connections, and if any are added, will broadcast that in turn.<\/p>\n<p>A problem that has been bugging me for a while is how to do subgraphs.  Suppose you have a ring topology where each node on the ring is a server to a large number of clients.  You want all clients to know about each other on the graph and the parent server to know about all its clients.  However, you don&#8217;t want a particular server to know about the clients of a different server.  Limiting which groups know about whom is pretty essentially for very large networks.<\/p>\n<p>The way I did it was to modify the nodes in the graph to also contain a group id.  Each node then subscribes to one or more group ids.  For each node \/ edge in the graph, if that new node&#8217;s group id is not in your list of subscribed group ids, you ignore it.<\/p>\n<p>It was a design decision to not forward connections which you ignore.  This means that systems that are not chained in the graph won&#8217;t know about each other but without it you wouldn&#8217;t get the bandwidth savings.\t\t<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have a connection graph which is generated by adding all immediate connections to a graph and sending that to all immediate connections. They in turn will add all their connections, and if any are added, will broadcast that in turn. A problem that has been bugging me for a while is how to do [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/posts\/105"}],"collection":[{"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=105"}],"version-history":[{"count":0,"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/posts\/105\/revisions"}],"wp:attachment":[{"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rakkar.org\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}