W3C2 Principles of Distributed Computing
W3C2 Principles of Distributed Computing
Rashmi Kansakar
What is Distributed system?
You know you have a distributed system when the crash of a
computer you’ve never heard of stops you form getting any
work done. - Leslie Lamport
What is Distributed system?
Message passing!!!!
Distributed System Layers
Cloud Computing → distributed system
Example
Processors communicate with each other Computer communicate with each other
through bus through message passing.
Rule-based system
Virtual Machine
Interpreter
Communicating processes
Independent components
Event systems
Data Centered Architectures
➢ Data and access to shared data is core
○ Data integrity is goal
○ Ex: Gmail, Flickr, Google search, Salesforce, Oracle
➢ Repository style
○ Central data structure - current state
○ Independent components - operate on data
○ 2 subtypes:
■ Database systems - components called & act on data
■ Blackboard systems - data-structure is trigger - if/then or expert-system feel -
updates itself (example: speech recognition, signal processing)
Explanation
Database Systems
➢ Centralized access
➢ You control the access / management
Understanding CAP theorem
CAP represents:
1. Consistency
2. Availability
3. Partition tolerance
Rule-based system
Virtual Machine
Interpreter
Communicating processes
Independent components
Event systems
Data-Flow Architectures
➢ Availability of data controls, data flows through system
➢ 2 styles:
○ Batch Sequential - sequence of programs - must wait for previous to finish
before next
■ Mainframes
■ Usually output to file, before another program starts
○ Pipe-and-Filter - sequence of programs, but FIFO queues to start processing
before previous has finished.
■ Unix shell pipes and tools are good examples:
● grep, sed, awk
Batch Sequential Vs. Pipe-and-Filter
Explanation
Software Architectural Styles
Category Common Architectural Styles
Repository
Data-center
Blackboard
Rule-based system
Virtual Machine
Interpreter
Communicating processes
Independent components
Event systems
Virtual Machine Architectures
➢ Abstract execution environment - rule-based systems, interpreters,
command-language processors (2 types):
➢ Rule Based:
○ Inference engine - AI - process control - network intrusion detection
○ Examples includes some of the Predix IoT analytics systems -
https://github.com/PredixDev/predix-analytics-sample
➢ Interpreter:
○ Interprets pseudo-program - abstracts hardware differences away - Java,
C#, Perl, PHP
Software Architectural Styles
Category Common Architectural Styles
Repository
Data-center
Blackboard
Rule-based system
Virtual Machine
Interpreter
Communicating processes
Independent components
Event systems
Call & Return Architectures
➢ Components connected via method calls (3 styles):
○ Top-Down: imperative programming - tree structure - hard to
maintain
○ Object-Oriented: coupling between data and manipulation
operations - easier to maintain - method calling requires object -
consistency an issue
○ Layered Style: Abstraction layers - modular design - hard to
change layers
■ Ex: OS kernels, TCP/IP stack, web applications
Software Architectural Styles
Category Common Architectural Styles
Repository
Data-center
Blackboard
Rule-based system
Virtual Machine
Interpreter
Communicating processes
Independent components
Event systems
Independent Components Architectures
➢ 2 styles:
○ Client/Server
○ Peer-to-peer
Client / Server
➢ Very Popular