Notes - MIECT
Computação Distribuída
Notes - MIECT
Computação Distribuída
  • Computação Distribuída
  • Introduction / Architecture
    • Distributed Systems
    • Architecture
    • Middleware Organizations
    • Processes
    • Threads
    • Virtualization
    • Clients
    • Servers
    • Migration
  • Communications
    • OSI Model
    • Middleware Layer
    • Types of Communication
    • Remote Call Procedure (RPC)
    • Sockets
    • Application-level Multicasting
  • Naming
    • Names
    • Addresses
    • Identifiers
    • Naming Systems
      • Flat Naming
      • Structured Naming
    • Internet Domain Name System (DNS)
    • Attribute-based naming - LDAP
  • Coordination
    • Clocks
      • Synchronizing without UTC
    • Reference Broadcast Synchronization – RBS
    • Happened-Before Relation
      • Logical Clocks
      • Vector Clocks
    • Mutual Exclusion Algorithms
    • Election Algorithms
    • Distributed Events Correspondance
  • Consistency & Replication
    • Replication
    • Performance and Scalability
    • Client-centric models
    • Replicates
    • Unicasting vs. Multicasting
    • Continuous Consistency
    • Protocols
  • Flaw Tolerance
    • Dependability
    • Terminology
    • Confidence vs. Security
    • Halting failures
    • Redundancy to mask failures
    • Consensus
      • Realistic
      • Consensus in arbitrary failures
      • Achieving failure tolerance
      • Distributed consensus
    • Failure Detection
    • Reliable RPCs
    • Distributed commit protocols
  • Python asyncio & Friends
    • Async
    • Sync vs. Async
    • Tools
  • Flask
    • Introduction
    • Python Requests
  • Containers
    • VM's vs Containers
    • OS Support
    • Building a container
    • Tools
    • Portability
    • Docker
      • Container
  • Map Reduce
    • Map Recude
    • Hadoop
    • Software Architecture
    • Task Scheduling
    • Comparison With Traditional Models
  • Cloud Computing
    • Cloud Computing
    • IaaS – Infrastructure as a Service
    • PaaS – Platform as a Service
    • SaaS – Software as a Service
    • Business Models
Powered by GitBook
On this page
  • Costs
  • Link stress
  • Stretch
  • Flooding
  • Chord
  • Consistent Hashing
  • The Log N Finger
  • Chord Finger Table
  • Lookup
  • Join
  1. Communications

Application-level Multicasting

PreviousSocketsNextNames

Last updated 2 years ago

Organizing nodes of a distributed system in an overlay network and using it to disseminate data:

  • Usually by using a tree with single paths.

  • Alternatively, using a mesh, which requires some type of routing.

Costs

Link stress

How many times does a message pass through the same network link?

Stretch

Racio in delays between the ALM path and the network path.

Flooding

A node sends a message to each one of its neighbors. each neighbor re-sends it to its neighbors, with the exception of the original, and only if it had not received the message before.

Other algorithms:

  • Epidemiologic.

  • Anti-entropy.

  • Rumors.

Chord

  • Originally proposed by Ion Stoica et al:

  • It’s a Scalable P2P Lookup Protocol for Internet Applications.

  • It’s also an algorithm for structured distributed hash tables (DHT).

  • Provides a deterministic approach for locating resources, services, and peers.

  • Resources are expressed as key, value pairs.

  • Load balancing through Consistent Hashing.

  • Small routing tables: Log n.

  • Small routing delay: Log n hops.

  • Fast join/leave protocol (polylog time).

Consistent Hashing

Assigns both nodes and objects from an m-bit key.

Order these nodes around an identifier circle according to the order of their keys (0 → 2^m- 1). This ring is known as the Chord Ring.

Object with key k is assigned to the first node whose key is ≥ k (called the successor node of key k).

An object with key k is stored at its successor (node with key ≥ k).

The Log N Finger

Each node knows of only log N other nodes.

Chord Finger Table

Node n’s i-th entry: first node ≥ n + 2^i-1.

Lookup

Node 32.

  • lookup(82): 32 → 70 → 80 → 85

Join

  1. Initialize the predecessor and fingers of the new node. (Knowledge of predecessor is useful in stabilization)

  2. Update the predecessor and the fingers of the existing nodes. (Thus notify nodes that must include N20 in their table. N113[1] = N20, not N32)

  3. Transfer objects to the new node as appropriate.

https://pdos.csail.mit.edu/papers/ton:chord/pa per-ton.pdf