Difference between revisions of "DistOS 2014W Lecture 18"

From Soma-notes
Jump to navigation Jump to search
(Added info about DHT's and tapestry)
(Added more Tapestry stuff. Cleaned up the page.)
Line 15: Line 15:
the hash table, as opposed to a full replica. They don't know exactly which other node is responsible for a given key.  This has given rise to a number  
the hash table, as opposed to a full replica. They don't know exactly which other node is responsible for a given key.  This has given rise to a number  
of different routing techniques:
of different routing techniques:
* A centralized server may maintain a list of all keys and associated nodes at which the value can be found.  This method involves a single point of failure.  
* A centralized server may maintain a list of all keys and associated nodes at which the value can be found.  This method involves a single point of failure.
** eg. Napster
** eg. Napster
* Flooding: Each node may query all connected nodes.  This method has performance and scalability shortcomings but had the benefit of being decentralized.
* Flooding: Each node may query all connected nodes.  This method has performance and scalability shortcomings but had the benefit of being decentralized.
** eg. Gnutella
** eg. Gnutella
* [http://en.wikipedia.org/wiki/Consistent_hashing Consistent Hashing] The keyspace can be partitioned such that nodes will maintain the values for keys that hash to similar indices (e.g., within a certain hamming distance). Given a query, nodes do not know specifically on which node a key is located, but they do know a few nodes (a proper subset of the network) located "closer" to the key. The query then continues onto the closest node.
* [http://en.wikipedia.org/wiki/Consistent_hashing Consistent Hashing] The keyspace can be partitioned such that nodes will maintain the values for keys that hash to similar indices (e.g., within a certain hamming distance). Given a query, nodes do not know specifically on which node a key is located, but they do know a few nodes (a proper subset of the network) located "closer" to the key. The query then continues onto the closest node. This seems to be the most popular technique for DHTs. It's biggest benefit is that nodes can be added and removed without notifying every other node on the network.
** eg. Tapestry
** eg. Tapestry


Line 29: Line 29:
Routing is performed in such a way that nodes are aware of their ''distance''
Routing is performed in such a way that nodes are aware of their ''distance''
to the object being queried.  Hence objects can be located with low latency
to the object being queried.  Hence objects can be located with low latency
without the need to migrate actual object data between nodes.  Tapestry has been used in some academic applications such as OceanStore.
without the need to migrate actual object data between nodes.  


**Tapestry
Tapestry was built for Oceanstore. Oceanstore was built for the open internet. Nodes would be constantly added and removed. Chances are, the network topology would change. That's why you'd need a dynamic routing system.
* Distributed .
 
* Decentralized and P2P. Self organizing.
* Distributed.
* Simple key-value store.
* Simple key-value store.
* using DHT ( distributed hash table).
* look up table contains : key and value
* look up table contains : key and value
* DNS as tree but Tapestry as hercically structure.
* DNS as tree but Tapestry as hercically structured.
* How does the information flow? Each node has a neighbour table which that contains the neighbour's number.
** From initialization, each node has a locally optimal routing table that it maintains
** Routing happens digit by digit


**More dtails about Tapestry:
* Tapestry API:
** how the information flow?
** have four operations called PublishObject, UnpublishObject, RouteToObject, RouteToNode.
* each nod has neighbour table which that contains the node neighbour number.
** each node has ID and each endpoint object has a GUID (Globally unique identifier).


** Tapestry API:
* Tapestry look like operating system.
* have four operations called
** it has two models,one is built on UDP protocol and the other on TCP protocol.
* each node has ID and each endpoint has GUID (Globally unique identifier).


**Tapestry look like operating system.
Fun fact, it is now called [http://current.cs.ucsb.edu/projects/chimera/ Chimera].
* it has two models,one is built on UDP protocol and the other on TCP protocol.

Revision as of 22:01, 18 April 2014

Distributed Hash Tables (March 18)


Distributed Hash Table Overview

A Distributed Hash Table (DHT) is a fast lookup structure of <key,value> pairs, distributed across many nodes in a network. Keys are hashed to generate the index at which the value can be found. Depending on the nature of the hash function, typically, only exact queries may be returned.

Usually, each node has a partial view of the hash table, as opposed to a full replica. They don't know exactly which other node is responsible for a given key. This has given rise to a number of different routing techniques:

  • A centralized server may maintain a list of all keys and associated nodes at which the value can be found. This method involves a single point of failure.
    • eg. Napster
  • Flooding: Each node may query all connected nodes. This method has performance and scalability shortcomings but had the benefit of being decentralized.
    • eg. Gnutella
  • Consistent Hashing The keyspace can be partitioned such that nodes will maintain the values for keys that hash to similar indices (e.g., within a certain hamming distance). Given a query, nodes do not know specifically on which node a key is located, but they do know a few nodes (a proper subset of the network) located "closer" to the key. The query then continues onto the closest node. This seems to be the most popular technique for DHTs. It's biggest benefit is that nodes can be added and removed without notifying every other node on the network.
    • eg. Tapestry

Tapestry:

Tapestry is an overlay network which makes use of a DHT to provide routing for distributed applications. Similar to IP routing, not all nodes need to be directly connected to each other: they can query a subset of neighbours for information about which nodes are responsible for certain parts of the keyspace. Routing is performed in such a way that nodes are aware of their distance to the object being queried. Hence objects can be located with low latency without the need to migrate actual object data between nodes.

Tapestry was built for Oceanstore. Oceanstore was built for the open internet. Nodes would be constantly added and removed. Chances are, the network topology would change. That's why you'd need a dynamic routing system.

  • Decentralized and P2P. Self organizing.
  • Distributed.
  • Simple key-value store.
  • look up table contains : key and value
  • DNS as tree but Tapestry as hercically structured.
  • How does the information flow? Each node has a neighbour table which that contains the neighbour's number.
    • From initialization, each node has a locally optimal routing table that it maintains
    • Routing happens digit by digit
  • Tapestry API:
    • have four operations called PublishObject, UnpublishObject, RouteToObject, RouteToNode.
    • each node has ID and each endpoint object has a GUID (Globally unique identifier).
  • Tapestry look like operating system.
    • it has two models,one is built on UDP protocol and the other on TCP protocol.

Fun fact, it is now called Chimera.