Gerald guchu
REG NO: CT101/G/6271/19
DISTRIBUTED SYSTEMS CAT 1
a) The prime motivation for constructing and using distributed systems stems from a desire to
   share resources and coordinate activities. Discuss the resources in this contex
        Hardware components such as disks and printers, software-defined
   entities such as files,databases and data object of all kinds.it includes
   the stream of video frames that emerges from a digital video camera
   and the audio connection that a mobile phone call represents.
b) Using well labeled diagrams, discuss how synchronization is achieved in Message Passing
   IPC. Clearly explain how the blocking and non-blocking semantics occur.
                                              SYNCHRONIZATION
                        BLOCKING                                     NON-BLOCKING
            SEND                    RECEIVE                                            RECEIVE
                                                                    SEND
The sender() and receive()primitives are called whenever process need to
communicate.
The communication primitives’ synchronization of communicative process
is critical issue in the communication structure
1. Blocking: The blocking semantics implies that when the call of a send ()
or receive() pri 1. Blocking: The blocking semantics implies that when the
call of a send () or receive() primitive blocks the invoker’s current
execution.
2. Non-blocking: The non-blocking semantics imply that when the call of a
send () or receive() primitive does not block the invoker’s current
execution and the control immediately goes back to the invoker.
•    Blocking send() primitive: The blocking send() primitive refers to the
blocking of sending process. The process remains blocking until it receives
an acknowledgment from the receiver side that the message has been
received after the execution of this primitive.
•    Non-blocking send() primitive: The non-blocking send() primitive
refers to the non-blocking state of the sending process that implies after
the execution of send() statement, the process is permitted to continue
further with its execution immediately when the message has been
transferred to a buffer.
•    Blocking   receive()   primitive:   when     they   receive   statement   is
executed, the receiving process is halted until a message is received.
•    Nonblocking receive() primitive: The non-blocking receive() primitive
implies that the receiving process is not blocked after executing the
receive() statement, control is returned immediately after informing the
kernel of the message buffer’s location.
mitive blocks the invoker’s current execution.
C.
Discuss the concept of cloud computing in the context of distributed
systems.      [4 marks]
Here's a brief explanation of the concept of cloud computing in distributed
systems:
        Resource Sharing: Cloud computing allows multiple users or systems
         in a distributed environment to access and share a common pool of
         computing resources, such as servers, storage, databases, and
         networking infrastructure.
        On-Demand Services: Users can provision and use computing
         resources as needed, scaling up or down based on the workload,
         without the need for significant upfront investments in hardware.
        Remote Data Access: Cloud services enable distributed systems to
         access and store data on remote servers, promoting collaboration
         and data sharing among geographically dispersed nodes.
        Service Models: Cloud computing offers different service models,
         including Infrastructure as a Service (IaaS), Platform as a Service
         (PaaS), and Software as a Service (SaaS), allowing distributed
         systems to choose the level of control and abstraction they require.
        Elasticity and Scalability: Distributed systems can easily scale their
         resources to handle changing workloads, ensuring optimal
         performance and resource utilization.
        Virtualization: Cloud platforms often leverage virtualization
         technologies, which are valuable in the context of distributed
         systems, as they enable the efficient allocation and management of
         resources.
        Cost-Efficiency: Cloud computing can be cost-effective for distributed
         systems, as users only pay for the resources they consume, avoiding
         the expenses associated with maintaining physical infrastructure.
      Fault Tolerance: Many cloud providers offer redundancy and high
       availability features, enhancing fault tolerance in distributed
       systems by minimizing downtime.
      Global Reach: Cloud providers have data centers worldwide, allowing
       distributed systems to operate on a global scale, serving users and
       clients from different geographic locations.
In summary, cloud computing in the context of distributed systems
provides the flexibility, scalability, and accessibility required for modern,
interconnected systems.
D.
State and explain the three components of a distributed system.
Hardware Components:
        Computing Devices: These are the physical machines that make up
         the distributed system, including servers, workstations, desktop
         computers, mobile devices, and IoT (Internet of Things) devices.
         Each device contributes processing power and memory to the
         system.
        Storage Devices: Distributed systems require storage hardware to
         store data and files. This includes hard drives, solid-state drives,
         network-attached storage (NAS), and cloud storage services.
        Networking Equipment: Networking components, such as routers,
         switches,    hubs,      and   network    cables,      connect   the    distributed
         system’s devices, enabling data communication. They facilitate the
         transmission of data packets between nodes.
        Peripheral    Devices:        These   include    input/output        devices    like
         keyboards,      mice,    monitors,      and    printers,     which    connect    to
         computing devices and allow users to interact with the system.
Software Components:
        Operating Systems: Each computing device in the distributed
         system has its operating system (OS) that manages hardware
         resources     and    provides     an     interface     for   running     software
         applications.
        Middleware: Middleware software serves as a bridge between the
         hardware and the software applications. It includes communication
         protocols, database management systems, and application servers
         that enable distributed applications to function across the network.
        Application     Software:      These     are    the    actual   programs        and
         applications that run on the distributed system. This software can
         include web servers, databases, business applications, and custom-
         developed software tailored to the specific needs of the system.
     Distributed Software: In a distributed system, specialized software
      components    handle   various    tasks   like   data   replication,   load
      balancing, and fault tolerance. These components ensure the
      distributed system operates effectively and reliably.
Communication Components:
     Network Protocols: Communication in a distributed system relies on
      network protocols such as TCP/IP, HTTP, and other standards that
      enable data to be transmitted between devices in a consistent and
      reliable manner.
     Data Transmission Medium: This includes the physical and logical
      pathways through which data travels, like Ethernet cables, Wi-Fi,
      and fiber optics. The medium affects the speed and reliability of
      data transmission.
     Routing and Switching: Routers and switches direct data traffic to
      the appropriate destinations within the distributed system. They
      determine the most efficient path for data packets to follow.
     Data Encapsulation: Data packets are encapsulated with headers
      and trailers that contain routing information and error-checking
      data. This encapsulation ensures data integrity during transmission.
   These three components work together to create a distributed
      system that can process, store, and transmit data efficiently and
      reliably.
   Hardware provides the physical foundation, software defines the
      applications and functions, and communication components enable
      devices to interact with each other over a network, making
      distributed computing possible.
     E.
     You are to design a distributed database system for an online ticket
     booking system for an airline. There will be more than one copy of
     the database for reliability and fault tolerance. Explain some of the
     problems (in distributed systems) you would have to solve during
     the development of this system. What problems must be solved
     which are special for the domain (an online ticket booking system).
     [4 marks]
Common Distributed System Challenges:
   Data Consistency: Maintaining data consistency across multiple
     distributed copies of the database is a fundamental challenge.
     Achieving consistency while allowing for fault tolerance can be
     complex.
   Data Partitioning: Deciding how to partition the data across multiple
     database nodes is critical. Poorly designed data partitioning can
     lead to hotspots and performance bottlenecks.
   Replication and Synchronization: Managing database replicas for
     reliability requires a strategy for replicating and synchronizing data.
     Achieving   data   consistency   among   replicas,   while   minimizing
     latency, is challenging.
   Load Balancing: Distributing the workload evenly across database
     nodes is essential to avoid overloading some nodes while others
     remain underutilized.
   Scalability: Ensuring that the distributed database can scale with
     increased demand is vital. Scaling should be both vertical (adding
     more resources to individual nodes) and horizontal (adding more
     nodes to the system).
 Fault Tolerance: Developing mechanisms to detect and recover from
  node failures is crucial to maintain system reliability. This includes
  strategies like replication, redundancy, and failover mechanisms.
 Network Latency: Distributed systems often operate across different
  physical locations. Minimizing the impact of network latency on
  database queries is a challenge, especially in real-time ticket
  booking systems.
  Domain-Specific Challenges:
 Concurrent Bookings: Ticket booking systems often experience high
  levels of concurrency. Managing concurrent bookings and ensuring
  that two users don’t book the same seat simultaneously is a specific
  challenge in this domain.
 Inventory Management: Maintaining an accurate and up-to-date
  inventory of available seats and flights in a distributed environment
  is   challenging.   Reservation   updates   need   to   be    efficiently
  synchronized.
 Data Privacy and Security: Ticket booking systems deal with
  sensitive customer information and payment details. Ensuring data
  privacy and security in a distributed environment is a top priority.
 Business Rules and Policies: Implementing and enforcing airline-
  specific business rules, such as refund policies, baggage rules, and
  loyalty programs, within the distributed system can be complex.
 Caching and Real-Time Updates: Managing caching strategies to
  improve system performance and providing real-time updates to
  customers about seat availability and flight status require careful
  design and optimization.
 Regulatory      Compliance:   The    airline   industry      is   highly
  regulated.Ensuring that the online ticket booking system complies
  with relevant regulations, such as data protection laws and aviation
  regulations, is crucial.
  Addressing these challenges involves a combination of distributed
     system   design,   data    modeling,   database    management,      and
     application development.
    It's essential to balance the need for reliability, fault tolerance, and
     scalability with the specific requirements of the airline ticket
     booking domain.
c) It extends from
 hardware
d) components such as
 disks and printers to
 software-defined
 entities such as files,
 databases and
e) data objects of all
 kinds. It includes the
 stream of video frames
 that emerges from a
 digital video
f) camera and the audio
  connection that a mobile
  phoncomponents such
  as disks and printers to
  software-defined
  entities such as files,
  databases and
data objects of all kinds.
It includes the