Wednesday, July 11, 2018

We were discussing the P2P network as  a top heavy architecture as opposed to the storage first architectures.  Let us elaborate this a bit more. Top-heavy means we have an inverted pyramid of layers where the bottom layer is the network layer.  This is the substrate that connects different peers.  The overlay nodes management layer handles the management of these peers in terms of routing, location lookup and resource discovery. The layer on top of this is the features management layer which involves security management, resource management, reliability and fault resiliency. Over this we have the services specific layer which includes services management, metadata, services messaging and services scheduling. Finally, we have the application layer on top which involves applications, tools and services. Fundamentally P2P networks do not rise from established and connected groups of systems. They don't have a reliable set of resources. Yet they have fault-tolerance, self-organization and massive scalability properties.

P2P networking differs from other forms of distributed computing. For example, it differs from cluster computing, cloud computing, grid computing and connected topologies. In P2P, every node can act both as a client and a server. The nodes act autonomously and are free to join or leave the network. The network may even be the internet.  There is no central co-ordination and no central master with slave relationships. The system is self-organizing without need for a central global view from a co-ordinator. If Blockchain becomes a popular storage with which farmers can mine, a P2P network leveraging blockchain storage might become popular as a computing model.

Courtesy:IEEE publications on its comparisions.
#codingexercise
Find the maximum number of unbalanced brackets of any one kind apart from the balanced brackets. For example:
[]][][ => 1
[[][]] => 0
int GetCountSwaps(String p)
{
validate(p);
Stack<char> open = new Stack<char>();
Stack<char> close = new Stack<char>();
for (int i = 0; i < p.Length; i++)
{
 if (p[i] == '['){
   open.push('[');
 }
 if (p[i] == ']') {
   if (open.isEmpty() == false) {
       open.pop(); / found a match;
   }else{
     close.push(']');
   }//if
 }//if
}//for
return Math.Abs(close.count, open.count);
}
The GeekToGeek solution for this appears incorrect.

No comments:

Post a Comment