🤓
Isitha's Wiki
  • Isitha's Wiki
  • software_engineering
    • management
      • process_and_management
        • Project Management
        • Agile
        • Projects
        • Waterfall
        • Project Screening
        • Prince2
        • project_manager
        • Project initialisation
      • individuals_and_motivation
        • Teams and teamwork
        • Individuals and Motivation
        • Organisational theory and motivation
        • Project management and leadership
        • Team structures
        • Team advantages/disadvantages
        • How teams form & perform - Tuckman's team development model
      • cost_estimation
        • Function Points
        • Size Estimation
        • Challenges in cost estimation.
        • Cost Estimation
        • Use case points (UCP)
        • Techniques for cost estimation
      • risk_management
        • Risk Management
        • Risk Management Planning
        • Risk management process
    • quality_management
      • Verification vs Validation
      • Quality management
    • languages
      • Erlang
      • C
      • C++
      • JavaScript
      • Lua
      • Go
      • x86 Assembly
      • Racket
      • TypeScript
      • Rust
      • Haskell
      • Java
      • C#
    • frameworks
      • spring
        • Deferred Result
        • Spring
      • react
        • React Basics
      • llvm
        • LLVM Basics
        • SSA form
    • cost_estimation
      • Cocomo
  • computer_science
    • ai
      • Hutter Prize
      • AIXI
    • programming_language_theory
      • types
        • Algebraic Data Type (ADT)
        • Hindler-Milner type system
        • Linear Types
        • Affine types
      • optimisations
        • Data Flow Analysis
        • Basic Blocks
        • Liveness
        • Peephole optimisation
      • codegen
        • Codegen
        • Single Static Assignment (SSA) form
      • parsers
        • Parsing Expression Grammer (PEG) parser
        • LL1 parser
        • Earley parser
        • LR(1) parser
        • LR(0) parser
        • SLR(1) parser
      • semantics
        • Attribute grammars
    • distributed_systems
      • Consistency
      • operating_systems
        • Memory
        • Processes and threads
        • Operating System
      • Challenges of Distributed Systems
      • CAP (or more accurately PACELC) theorem
      • distributed_models
        • Distributed Models
      • distributed_file_systems
        • Distributed File Systems
        • Strong Consistency
        • Google File System
      • CRDT (Conflict-free Replicated Data Types)
      • Computer Networks
      • Distributed Systems
    • data_structures
      • Segment Trees
      • Fibonacci heaps
      • Bloom filter
      • Adaptive Radix Tree
      • Links
      • Judy Arrays
      • Pairing heaps
    • search
      • Inverted Index
    • theoretical
      • Z-order curve
      • Kolmogorov complexity
      • Solomonoff's theory of inductive inference
      • Hilbert Curve
      • Hilbert curve scheduling
    • compression
      • Entropy
      • Compression
  • math
    • set_theory
      • AntiSymmetry
      • Transivity
      • Reflexivity
    • calculus
      • Calculus Basics
    • complex_numbers
      • Complex Numbers
    • linear_algebra
      • Linear Algebra
    • Blogs
  • physics
    • quantum_physics
      • quantum_tunnelling
    • string_theory
      • String Theory
    • relativity
      • Relativity
    • quantum_loop_gravity
      • Quantum Loop Gravity
  • philosophy
    • stoicism
      • Zeno of Citium
      • Epictetus
    • existentialism
      • Simone De Beauvoir
      • Jean-Paul Sartre
      • Albert Camus
      • Soren Kierkegaard
Powered by GitBook
On this page
  • Heterogenity
  • Middleware
  • Middleware Models
  • Openness
  • Security
  • Scalability
  • Scalability Challenges
  • Failure Handling
  • Concurrency
  • Transparency
  1. computer_science
  2. distributed_systems

Challenges of Distributed Systems

  • Heterogenity

  • Openness

  • Security

  • Scalability

  • Failure Handling

  • Concurrency

  • Transparency

Heterogenity

Distributed Systems may use completely different hardware and software. These listed above are examples of differring hardware/software:

  • Networks

  • Computer Hardware

  • Operating Systems

  • Programming Languages

  • Implementation by different developers

    These problems have some solutions such as:

  • Using standard protocols

  • Using agreed upon message formats and data types

  • Adhering to an API

  • Middleware

  • Portable code (code that is not tighly coupled to specific hardware)

Middleware

Middleware is a software layer between the distributed application and the operating system that:

  • provides a programming abstraction and

  • masks the heterogenity of underlying platform

Middleware Models

  • Distributed File Systems

  • Remote Procedure Call (RPC)

  • Remote Method Invocation (RMI)

  • Distributed Documents

  • Distributed Databases

Openness

Openness refers to the ability to extend the system in different ways by adding hardware or software resources. Following are some approaches to address openness:

  • Publishing key interfaces

  • Allowing a uniform communication mechanism to communicate over the published interfaces.

  • Ensuring all implementations adhere to the published standards.

Security

There are three aspects of security:

  1. Confidentiality

  2. Integrity

  3. Availability

Security Mechanisms:

  1. Encryption

  2. Authentication

  3. Authorization

Scalability

A system should be able to handle growth in users.

Scalability Challenges

  • Cost of physical resources

  • Controlling performance loss

  • Resources should not run out

  • Avoiding performance bottlenecks

Failure Handling

  • Detecting : some types of failures can be detected and some are hard to be certain about.

  • Masking : some failures that have been detected can be hidden or made less severe;

  • Tolerating : it is sometimes impractical to try and handle every failure that occurs

  • Recovery : some failures can recover, for example a rollback mechanism

  • Redundancy : some failures can be made to tolerate failure using redundant components (eg multiple services that provide the same service(failover))

Concurrency

  • Multiple clients can access the same resource at the same time, in some cases for updates.

  • One approach to handling concrrency is making access sequential - slows down the system.

  • Semaphores supported by the operating system is a well accepted mechanism to handle concurrency.

Transparency

Hiding certain aspects from the user and application programmer

  • Access

  • Location

  • Concurrency

  • Replication

  • Failure

  • Mobility

  • Performance

  • Scaling

PreviousOperating SystemNextCAP (or more accurately PACELC) theorem

Last updated 3 years ago