Riesel number: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
No edit summary
 
40597·2^6808509-1
Line 1: Line 1:
1) Be sure you do not inadvertently place yourself in a starvation mode of metabolism. If you do, correct the situation because shortly because possible plus the simplest technique to do this might be eat 6 meals a day, graze on food throughout the course of the day.<br><br>Now regarding calorie intake, the bulky bodybuilder needs to minimize it. What we want to do first is determine what a basal metabolic rate is (BMR) is. This really is the calorie amount the body burns at rest. There is a quick and easy-to-use free [http://safedietplans.com/bmr-calculator bmr calculator] we can employ on my site. Just click on the link under this particular article to check it out. Once you discover what a BMR is you need to take in at least 500 nevertheless no over 1000 calories less than this number. Keeping your calorie expenditure inside this range may assist we burn off the fat without muscle along with it. Plus, you will keep the metabolic rate significant for maximum fat loss. This is how to receive ripped quickly with calorie intake when you happe to be bulky.<br><br>Our daily calorie requirement is based on our basal metabolic rate (BRM) while our fat is based on our Body Mass Index (BMR) plus not those figures we see on the scale which make you lose hope plus not excess weight. The basal metabolic rate is the amount of stamina necessary to keep your resting body provided with power for 1 day. One of the leading affects on a BMR is a individual body composition, the quicker plus better your BMR. This really is considering a muscle mobile, even at rest is metabolically more active than a fat mobile, therefore gaining lean body mass over body fat will make the body better and look wonderful.<br><br>Horsegram is powdered to a nice consistency. Heat sour buttermilk and add 100 gm of horsegram powder for this plus make a consistent paste. Apply this paste onto fat deposits found on the body and massage vigorously inside upward strokes. Horsegram is recognized to lower body fat quite effectively.Take hot water shower following half an hour. Use 'eladhi choornam' rather of soap. Add a limited drops of water to this choornam plus make a thick paste plus utilize it for bathing reasons.<br><br>Another benefit of gaining lean muscle is that metabolically this type of tissue requires more vitality so the bmr really increases because a result of having greater lean muscle mass. Burning more calories while at rest refuses to sound too bad, does it?<br><br>3) Eat slowly - Whenever we eat gradually, the process of chewing plus mixing foods inside the mouth with saliva is the initially step inside digestion. The more we chew the foods, the less work is required to process them. For folks who are continually experiencing bloating, stomach pain or heartburn after eating, they are eating too fast and are causing indigestion. The additional advantage of eating gradually is to avoid over eating. By eating slowing, you allow the belly to signal the brain when you have consumed enough before we have consumed too much. For persons that like to eat less, eating slowly is most effective.<br><br>There are 3 methods to create this deficit: diet, exercise, or perhaps a combination. If you combine methods we have a greater chance of sticking with it. Just think, instead of completely cutting out that afternoon snack, or risking injury by functioning out too hard, you could merely have a lighter snack and take the stairs. Its easier to make small changes which can add up to 500 calories a day.
{{Use dmy dates|date=July 2013}}
In [[computing]], '''Chord''' is a protocol and [[algorithm]] for a [[peer-to-peer]] [[distributed hash table]]. A distributed hash table stores [[associative array|key-value pairs]] by assigning keys to different computers (known as "nodes"); a node will store the values for all the keys for which it is responsible. Chord specifies how keys are assigned to nodes, and how a node can discover the value for a given key by first locating the node responsible for that key.
 
Chord is one of the four original [[distributed hash table]] protocols, along with [[Content addressable network|CAN]], [[Tapestry (DHT)|Tapestry]], and [[Pastry (DHT)|Pastry]]. It was introduced in 2001 by [[Ion Stoica]], [[Robert Tappan Morris|Robert Morris]], [[David Karger]], [[Frans Kaashoek]], and [[Hari Balakrishnan]], and was developed at [[MIT]].<ref name=StoicaEtAl2001>{{Cite doi|10.1145/964723.383071}}</ref>
 
==Overview==
 
[[File:Chord project.svg|right|350px]]
 
IDs and keys are assigned an <math>m</math>-bit identifier using ''[[consistent hashing]]''. The [[SHA-1]] algorithm is the base [[Hash function|hashing function]] for consistent hashing. Consistent hashing is integral to the robustness and performance of Chord because both keys and IDs ([[IP address]]es) are uniformly distributed and in the same identifier space. Consistent hashing is also necessary to let nodes join and leave the network without disruption.
 
Using the Chord lookup protocol, node keys are arranged in a circle that has at most <math>2^m</math> nodes. The circle can have IDs/keys ranging from 0 to <math>2^m - 1</math>.
 
Each node has a ''successor'' and a ''predecessor''. The successor to a node (or key) is the next node (key) in the identifier circle in a clockwise direction. The predecessor is counter-clockwise. If there is a node for each possible ID, the successor of node 2 is node 3, and the predecessor of node 1 is node 0; however, normally there are holes in the sequence. For example, the successor of node 153 may be node 167 (and nodes from 154 to 166 will not exist); in this case, the predecessor of node 167 will be node 153. That happens because not all nodes of the Chord are actual nodes. Some of them may be virtual ones.
 
Virtual nodes are stored into machines in the network that also contain at least one actual node. So successor and predecessor of each node points to the actual node of the Chord network.
 
Since the successor (or predecessor) node may disappear from the network (because of failure or departure), each node records a whole segment of the circle adjacent to it, i.e. the <math>r</math> nodes preceding it and the <math>r</math> nodes following it. This list results in a high probability that a node is able to correctly locate its successor or predecessor, even if the network in question suffers from a high failure rate.
 
==Chord protocol==
[[Image:chord network.png|left|250px|thumb|alt=In a 16-node Chord network, the nodes are arranged in a circle. Each node is connected to other nodes at distances 1, 2, 4, and 8 away.|A 16-node Chord network. The "fingers" for one of the nodes are highlighted.]]
The Chord protocol is one solution for connecting the peers of a P2P network.  There are many other algorithms in use by P2P, but this is a simple and common approach.  Chord consistently maps a key onto a node.  Both keys and nodes are assigned an <math>m</math>-bit identifier. For nodes, this identifier is a hash of the node's IP address. For keys, this identifier is a hash of a keyword, such as a file name. It is not uncommon to use the words "nodes" and "keys" to refer to these identifiers, rather than actual nodes or keys.
 
A logical ring with positions numbered <math>0</math> to <math>2^{m}-1</math> is formed among nodes.
Key ''k'' is assigned to node successor(''k''), which is the node whose identifier is equal to or follows the identifier of ''k''.
If there are ''N'' nodes and ''K'' keys, then each node is responsible for roughly <math>K/N</math> keys.
 
When a new node joins or leaves the network, responsibility for <math>O(K/N)</math> keys changes hands.
 
If each node knows only the location of its successor, a linear search over the network could locate a particular key. This is a naive method for searching the network, since any given message could potentially have to be relayed through most of the network. Chord implements a faster search method.
 
Chord requires each node to keep a "finger table" containing up to <math>m</math> entries.  The <math>i^{th}</math> entry of node <math>n</math> will contain the address of successor<math>((n+2^{i-1})</math> <math>mod</math> <math>2^m)</math>.
 
With such a finger table, the number of nodes that must be contacted to find a successor in an ''N''-node network is <math>O(\log N)</math>. (See proof below.)
 
==Potential uses==
*Cooperative Mirroring: A [[Load balancing (computing)|load balancing]] mechanism by a local network hosting information available to computers outside of the local network. This scheme could allow developers to balance the load between many computers instead of a central server to ensure availability of their product.
 
*Time-shared storage: In a network, once a computer joins the network its available data is distributed throughout the network for retrieval when that computer disconnects from the network. As well as other computers' data is sent to the computer in question for offline retrieval when they are no longer connected to the network.  Mainly for nodes without the ability to connect full-time to the network.
 
*Distributed Indices: Retrieval of files over the network within a searchable database.  e.g. P2P file transfer clients.
 
*Large scale combinatorial searches: Keys being candidate solutions to a problem and each key mapping to the node, or computer, that is responsible for evaluating them as a solution or not. e.g. Code Breaking
 
==Proof sketches==
[[Image:chord route.png|right|250px|thumb|alt=If two nodes are at a distance 11 apart along the ring (i.e., there are 10 nodes between them), it takes three hops to send a message from one to the other. The first hop covers a distance of 8 units, the second 2 units, and the final hop 1 unit.|The routing path between nodes A and B. Each hop cuts the remaining distance in half (or better).]]
'''With high probability, Chord contacts <math>O(\log N)</math> nodes to find a successor in an <math>N</math>-node network.'''
 
Suppose node <math>n</math> wishes to find the successor of key <math>k</math>. Let <math>p</math> be the predecessor of <math>k</math>. We wish to find an upper bound for the number of steps it takes for a message to be routed from <math>n</math> to <math>p</math>. Node <math>n</math> will examine its finger table and route the request to the closest predecessor of <math>k</math> that it has. Call this node <math>f</math>. If <math>f</math> is the <math>i^{th}</math> entry <math>n</math>'s finger table, then both <math>f</math> and <math>p</math> are at distances between <math>2^{i-1}</math> and <math>2^{i}</math> from <math>n</math> along the identifier circle. Hence, the distance between <math>f</math> and <math>p</math> along this circle is at most <math>2^{i-1}</math>. Thus the distance from <math>f</math> to <math>p</math> is less than the distance from <math>n</math> to <math>f</math>: the new distance to <math>p</math> is at most half the initial distance.
 
This process of halving the remaining distance repeats itself, so after <math>t</math> steps, the distance remaining to <math>p</math> is at most <math>2^m / 2^t</math>; in particular, after <math>\log N</math> steps, the remaining distance is at most <math>2^m / N</math>. Because nodes are distributed uniformly at random along the identifier circle, the expected number of nodes falling within an interval of this length is 1, and with high probability, there are fewer than <math>\log N</math> such nodes. Because the message always advances by at least one node, it takes at most <math>\log  N</math> steps for a message to traverse this remaining distance. The total expected routing time is thus <math>O(\log N)</math>.
 
If Chord keeps track of <math>r = O(\log N)</math> predecessors/successors, then with high probability, if each node has probability of 1/4 of failing, find_successor (see below)  and find_predecessor (see below) will return the correct nodes
 
Simply, the probability that all <math>r</math> nodes fail is <math>\left({{1}\over{4}}\right)^r = O\left({{1}\over{N}}\right)</math>, which is a low probability; so with high probability at least one of them is alive and the node will have the correct pointer.
 
==Pseudocode==
'''Definitions for pseudocode:'''
*finger[k]: first node that succeeds <math>(n+2^{k-1})  \mbox{ mod } 2^m, 1 \leq k \leq m</math>
*successor: the next node from the node in question on the identifier ring
*predecessor: the previous node from the node in question on the identifier ring
 
The pseudocode to find the ''successor'' node of an id is given below:
 
  // ask node n to find the successor of id
  n.find_successor(id)
    //Yes, that should be a closing square bracket to match the opening parenthesis.
    //It is a half closed interval.
    if (id <math>\in</math> (n, successor] )
      return successor;
    else
      // forward the query around the circle
      n0 = closest_preceding_node(id);
      return n0.find_successor(id);
 
  // search the local table for the highest predecessor of id
  n.closest_preceding_node(id)
    for i = m downto 1
      if (finger[i]<math>\in</math>(n,id))
        return finger[i];
    return n;
 
The pseudocode to stabilize the chord ring/circle after node joins and departures is as follows:
 
  // create a new Chord ring.
  n.create()
    predecessor = nil;
    successor = n;
 
  // join a Chord ring containing node n'.
  n.join(n')
    predecessor = nil;
    successor = n'.find_successor(n);
 
  // called periodically. n asks the successor
  // about its predecessor, verifies if n's immediate
  // successor is consistent, and tells the successor about n
  n.stabilize()
    x = successor.predecessor;
    if (x<math>\in</math>(n, successor))
      successor = x;
    successor.notify(n);
 
  // n' thinks it might be our predecessor.
  n.notify(n')
    if (predecessor is nil or n'<math>\in</math>(predecessor, n))
      predecessor = n';
 
  // called periodically. refreshes finger table entries.
  // next stores the index of the finger to fix
  n.fix_fingers()
    next = next + 1;
    if (next > m)
      next = 1;
    finger[next] = find_successor(n+<math>2^{next-1}</math>);
 
  // called periodically. checks whether predecessor has failed.
  n.check_predecessor()
    if (predecessor has failed)
      predecessor = nil;
 
==See also==
* [[Kademlia]]
* [[Koorde]]
* [[OverSim]] - the overlay simulation framework
* [[SimGrid]] - a toolkit for the simulation of distributed applications -
 
==References==
{{Reflist}}
 
==External links==
*[http://www.pdos.lcs.mit.edu/chord The Chord Project]
*[http://open-chord.sourceforge.net/ Open Chord - An Open Source Java Implementation]
*[http://chordless.wiki.sourceforge.net/ Chordless - Another Open Source Java Implementation]
*[http://sourceforge.net/projects/jdhtuq// jDHTUQ- An open source java implementation. API to generalize the implementation of peer-to-peer DHT systems. Contains GUI in mode data structure]
 
{{DEFAULTSORT:Chord (Peer-To-Peer)}}
[[Category:Articles with example pseudocode]]
[[Category:Distributed data storage]]
[[Category:Software using the MIT license]]

Revision as of 09:45, 28 December 2013

30 year-old Entertainer or Range Artist Wesley from Drumheller, really loves vehicle, property developers properties for sale in singapore singapore and horse racing. Finds inspiration by traveling to Works of Antoni Gaudí. In computing, Chord is a protocol and algorithm for a peer-to-peer distributed hash table. A distributed hash table stores key-value pairs by assigning keys to different computers (known as "nodes"); a node will store the values for all the keys for which it is responsible. Chord specifies how keys are assigned to nodes, and how a node can discover the value for a given key by first locating the node responsible for that key.

Chord is one of the four original distributed hash table protocols, along with CAN, Tapestry, and Pastry. It was introduced in 2001 by Ion Stoica, Robert Morris, David Karger, Frans Kaashoek, and Hari Balakrishnan, and was developed at MIT.[1]

Overview

IDs and keys are assigned an -bit identifier using consistent hashing. The SHA-1 algorithm is the base hashing function for consistent hashing. Consistent hashing is integral to the robustness and performance of Chord because both keys and IDs (IP addresses) are uniformly distributed and in the same identifier space. Consistent hashing is also necessary to let nodes join and leave the network without disruption.

Using the Chord lookup protocol, node keys are arranged in a circle that has at most nodes. The circle can have IDs/keys ranging from 0 to .

Each node has a successor and a predecessor. The successor to a node (or key) is the next node (key) in the identifier circle in a clockwise direction. The predecessor is counter-clockwise. If there is a node for each possible ID, the successor of node 2 is node 3, and the predecessor of node 1 is node 0; however, normally there are holes in the sequence. For example, the successor of node 153 may be node 167 (and nodes from 154 to 166 will not exist); in this case, the predecessor of node 167 will be node 153. That happens because not all nodes of the Chord are actual nodes. Some of them may be virtual ones.

Virtual nodes are stored into machines in the network that also contain at least one actual node. So successor and predecessor of each node points to the actual node of the Chord network.

Since the successor (or predecessor) node may disappear from the network (because of failure or departure), each node records a whole segment of the circle adjacent to it, i.e. the nodes preceding it and the nodes following it. This list results in a high probability that a node is able to correctly locate its successor or predecessor, even if the network in question suffers from a high failure rate.

Chord protocol

In a 16-node Chord network, the nodes are arranged in a circle. Each node is connected to other nodes at distances 1, 2, 4, and 8 away.
A 16-node Chord network. The "fingers" for one of the nodes are highlighted.

The Chord protocol is one solution for connecting the peers of a P2P network. There are many other algorithms in use by P2P, but this is a simple and common approach. Chord consistently maps a key onto a node. Both keys and nodes are assigned an -bit identifier. For nodes, this identifier is a hash of the node's IP address. For keys, this identifier is a hash of a keyword, such as a file name. It is not uncommon to use the words "nodes" and "keys" to refer to these identifiers, rather than actual nodes or keys.

A logical ring with positions numbered to is formed among nodes. Key k is assigned to node successor(k), which is the node whose identifier is equal to or follows the identifier of k. If there are N nodes and K keys, then each node is responsible for roughly keys.

When a new node joins or leaves the network, responsibility for keys changes hands.

If each node knows only the location of its successor, a linear search over the network could locate a particular key. This is a naive method for searching the network, since any given message could potentially have to be relayed through most of the network. Chord implements a faster search method.

Chord requires each node to keep a "finger table" containing up to entries. The entry of node will contain the address of successor .

With such a finger table, the number of nodes that must be contacted to find a successor in an N-node network is . (See proof below.)

Potential uses

  • Cooperative Mirroring: A load balancing mechanism by a local network hosting information available to computers outside of the local network. This scheme could allow developers to balance the load between many computers instead of a central server to ensure availability of their product.
  • Time-shared storage: In a network, once a computer joins the network its available data is distributed throughout the network for retrieval when that computer disconnects from the network. As well as other computers' data is sent to the computer in question for offline retrieval when they are no longer connected to the network. Mainly for nodes without the ability to connect full-time to the network.
  • Distributed Indices: Retrieval of files over the network within a searchable database. e.g. P2P file transfer clients.
  • Large scale combinatorial searches: Keys being candidate solutions to a problem and each key mapping to the node, or computer, that is responsible for evaluating them as a solution or not. e.g. Code Breaking

Proof sketches

If two nodes are at a distance 11 apart along the ring (i.e., there are 10 nodes between them), it takes three hops to send a message from one to the other. The first hop covers a distance of 8 units, the second 2 units, and the final hop 1 unit.
The routing path between nodes A and B. Each hop cuts the remaining distance in half (or better).

With high probability, Chord contacts nodes to find a successor in an -node network.

Suppose node wishes to find the successor of key . Let be the predecessor of . We wish to find an upper bound for the number of steps it takes for a message to be routed from to . Node will examine its finger table and route the request to the closest predecessor of that it has. Call this node . If is the entry 's finger table, then both and are at distances between and from along the identifier circle. Hence, the distance between and along this circle is at most . Thus the distance from to is less than the distance from to : the new distance to is at most half the initial distance.

This process of halving the remaining distance repeats itself, so after steps, the distance remaining to is at most ; in particular, after steps, the remaining distance is at most . Because nodes are distributed uniformly at random along the identifier circle, the expected number of nodes falling within an interval of this length is 1, and with high probability, there are fewer than such nodes. Because the message always advances by at least one node, it takes at most steps for a message to traverse this remaining distance. The total expected routing time is thus .

If Chord keeps track of predecessors/successors, then with high probability, if each node has probability of 1/4 of failing, find_successor (see below) and find_predecessor (see below) will return the correct nodes

Simply, the probability that all nodes fail is , which is a low probability; so with high probability at least one of them is alive and the node will have the correct pointer.

Pseudocode

Definitions for pseudocode:

The pseudocode to find the successor node of an id is given below:

 // ask node n to find the successor of id
 n.find_successor(id)
   //Yes, that should be a closing square bracket to match the opening parenthesis.
   //It is a half closed interval.
   if (id  (n, successor] ) 
     return successor;
   else
     // forward the query around the circle
     n0 = closest_preceding_node(id);
     return n0.find_successor(id);
 // search the local table for the highest predecessor of id
 n.closest_preceding_node(id)
   for i = m downto 1
     if (finger[i](n,id))
       return finger[i];
   return n;

The pseudocode to stabilize the chord ring/circle after node joins and departures is as follows:

 // create a new Chord ring.
 n.create()
   predecessor = nil;
   successor = n;
 // join a Chord ring containing node n'.
 n.join(n')
   predecessor = nil;
   successor = n'.find_successor(n);
 // called periodically. n asks the successor
 // about its predecessor, verifies if n's immediate
 // successor is consistent, and tells the successor about n
 n.stabilize()
   x = successor.predecessor;
   if (x(n, successor))
     successor = x;
   successor.notify(n);
 // n' thinks it might be our predecessor.
 n.notify(n')
   if (predecessor is nil or n'(predecessor, n))
     predecessor = n';
 // called periodically. refreshes finger table entries.
 // next stores the index of the finger to fix
 n.fix_fingers()
   next = next + 1;
   if (next > m)
     next = 1;
   finger[next] = find_successor(n+);
 // called periodically. checks whether predecessor has failed.
 n.check_predecessor()
   if (predecessor has failed)
     predecessor = nil;

See also

References

43 year old Petroleum Engineer Harry from Deep River, usually spends time with hobbies and interests like renting movies, property developers in singapore new condominium and vehicle racing. Constantly enjoys going to destinations like Camino Real de Tierra Adentro.

External links