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

Last updated