def __init__(self, num_replicas=3):
        nodes = self.generate_nodes(num_replicas)
        hnodes = [hashit(node) for node in nodes]
        hnodes.sort()

        self.num_replicas = num_replicas
        self.nodes = nodes
        self.hnodes = hnodes
        self.nodes_map = {hashit(node): node.split("-")[1] for node in nodes}
Example #2
0
def send_requests():
    for server in servers:
        connections[server] = Client(server)
    ring = HRW_Hash()
    data = csv_line_dict(csv_file_name)
    count = 0
    for key, value in data:
        if connections[ring.get_node(key)].send_entry(dict([(str(hashit(key)), value)])) == 200:
            count += 1
    print('Uploaded all %s entries.' %count)
    
    print('Verifying the data.')
    for connection in connections.values():
        connection.get_entries()
 def get_node(self, key):
     pos = bisect(self.hnodes, hashit(key))
     if pos == len(self.hnodes):
         return self.nodes_map[self.hnodes[0]]
     else:
         return self.nodes_map[self.hnodes[pos]]
Example #4
0
 def get_node(self, val):
     key_hash = hashit(val)
     annotated = [(self.merge_hashes(key_hash, hnode), self.nodes_map[hnode]) for hnode in self.hnodes]
     ordered = sorted(annotated)
     return [host for _, host in ordered[:1]][0]