Distributed Systems | Distributed Computing Explained

The TechCave
22 Dec 201915:18

Summary

TLDRThis video script offers a concise introduction to distributed systems, explaining their fundamental concepts and components. It clarifies that distributed systems consist of independent nodes linked by a network, working together to achieve a common goal while appearing as a single entity to users. The script discusses the importance of coordination, communication, and middleware in managing system complexities. It also touches on the advantages of distributed computing, such as reliability and scalability, and the challenges, including failure detection and consistency issues, emphasizing the design-for-failure principle.

Takeaways

  • 🌐 Distributed systems are a collection of independent nodes that communicate over a network to achieve a common goal, appearing as a single entity to the end-user.
  • πŸ” Examples of distributed systems include Google search, Amazon, Netflix, blockchain, online gaming, and banking platforms, which are all part of our daily digital interactions.
  • πŸ’‘ The client-server model is a simple and common example of a distributed system, where clients request services and servers provide responses.
  • πŸ“¦ A distributed system's nodes can be either unstructured or highly structured, depending on the system's requirements, and they handle complexities hidden from the end-user.
  • ⏰ Distributed systems do not share a clock or memory, meaning they operate independently and manage their own time and data storage.
  • πŸ”„ Concurrency is a key feature of distributed systems, allowing multiple processes to execute tasks in parallel, enhancing performance and efficiency.
  • πŸ”— Middleware is a critical component in distributed systems, providing a layer that connects nodes, manages resources, and offers communication and security services.
  • πŸ”„ Coordination and synchronization are essential for managing the lack of shared clock and memory, ensuring smooth operation and data consistency across nodes.
  • πŸ—οΈ Architectural models in distributed systems, such as layered, object-based, data center, and event-driven, dictate how nodes are organized and interact.
  • 🌟 Advantages of distributed systems include reliability, scalability, fault tolerance, resource sharing, and enhanced performance.
  • 🚧 Challenges in distributed systems include failure detection, redundancy, consistency issues, and potential performance bottlenecks, necessitating careful design and management.

Q & A

  • What is a distributed system?

    -A distributed system is a collection of separate and independent software or hardware components called nodes that are linked together by a network and work together coherently by coordinating and communicating through message passing or events to fulfill a common goal. The complexities of the system are hidden from the end-user, making the whole system appear as a single computer.

  • Why is nearly all software today considered to some extent distributed or involving distributed computing?

    -Nearly all software today is considered distributed because many applications, such as Google search engine, Amazon platforms, Netflix, blockchain, online gaming, money transfer, and online banking, inherently involve distributed computing to provide their services effectively and efficiently across different locations and devices.

  • What is the simplest example of a distributed system?

    -The simplest example of a distributed system is the client-server model, where the client and server communicate over a network to perform tasks and share resources.

  • What are the two main conditions for a system to be considered distributed rather than centralized or parallel?

    -For a system to be considered distributed, there should be no shared clock and no shared memory among the components. Each element in the system must have its own processor, and harmony is achieved through coordination and synchronization.

  • What is an overlay network in the context of distributed systems?

    -An overlay network is a virtual network built on top of an underlying network infrastructure. It is a network on top of another network, such as peer-to-peer networks like blockchain and BitTorrent, or voice over IP, which is an overlay network over the Internet.

  • What is the role of middleware in a distributed system?

    -Middleware in a distributed system is a layer that connects the nodes together and makes them appear as one single, supercomputer. It is a logical layer on top of the whole system that manages resources, provides communication and security services, and handles barriers and complexities of distributed computing.

  • What is the difference between concurrency and coordination in distributed systems?

    -Concurrency refers to the fact that multiple operations and activities are executed in parallel, potentially interacting with each other. Coordination, on the other hand, ensures the smooth collaboration between operations and activities, helping to achieve agreement among them.

  • What are the main reasons for preferring a distributed system over a single supercomputer?

    -The main reasons for preferring a distributed system include the need for geographical dispersion, resource sharing, scalability, fault tolerance, increased performance, and the ability to handle large repositories of data and significant computing power requirements.

  • What are the two main types of distributed computing in terms of scale?

    -The two main types of distributed computing in terms of scale are cluster computing and grid computing. Cluster computing uses closely connected, identical computers with local and centralized management, while grid computing involves heterogeneous nodes dispersed over a large area with decentralized administration.

  • What are some of the challenges associated with distributed systems?

    -Some of the challenges associated with distributed systems include failure detection, redundancy, achieving consistency among nodes, and performance bottlenecks. These challenges often arise from the complexities of managing a system that is designed to be robust and scalable.

  • What is the 'design for failure' principle in the context of building distributed systems?

    -The 'design for failure' principle is a crucial approach in developing distributed systems where developers expect and plan for the worst-case scenarios in every aspect of system operation. This includes anticipating and mitigating potential failures to ensure the system remains robust and reliable.

Outlines

00:00

🌐 Introduction to Distributed Systems

This paragraph introduces the concept of distributed systems, emphasizing their ubiquity in modern technology such as Google, Amazon, and Netflix. It clarifies that distributed systems consist of independent nodes that communicate over a network to achieve a common goal, appearing as a single entity to the user. The importance of understanding that two programs on the same computer do not constitute a distributed system is highlighted, and the necessity for nodes to have their own processors and memory is explained. The paragraph sets the stage for a deeper dive into the topic by outlining the basic characteristics and requirements of distributed systems.

05:01

πŸ” Key Concepts of Distributed Computing

The second paragraph delves into the fundamental concepts of distributed computing, which extends beyond the structure of distributed systems to include computing models and algorithms. It introduces cloud computing as a modern example and discusses the basic elements such as nodes, resources, and middleware that facilitate communication and resource management within distributed systems. The paragraph also covers concepts like distribution transparency, concurrency, coordination, synchronization, and architectural models, which are crucial for understanding how distributed systems operate and are organized. The advantages of using distributed systems, such as scalability and reliability, are briefly mentioned, setting up the discussion for the subsequent paragraph.

10:03

πŸ›  Types and Considerations in Distributed Systems

This paragraph explores the different types of distributed systems based on scale and architecture, such as cluster and grid computing, and architectural styles like layered, object-based, data center, and event-driven. It discusses the advantages of distributed computing, including reliability, scalability, fault tolerance, resource sharing, and performance. The paragraph also addresses the challenges associated with distributed systems, such as failure detection, redundancy, consistency, and performance bottlenecks. The importance of designing for failure is emphasized, highlighting the need to expect and plan for the worst-case scenarios in system operation.

15:05

πŸ“š Conclusion and Final Thoughts

The final paragraph concludes the video script by summarizing the key points discussed in the video and highlighting the difference between a distributed system and a simple network. It emphasizes the robustness and security of distributed systems compared to networks and encourages viewers to subscribe for more content. The paragraph leaves the audience with a comprehensive understanding of distributed systems and their significance in contemporary computing environments.

Mindmap

Keywords

πŸ’‘Distributed Systems

Distributed Systems refer to a collection of separate and independent software or hardware components, known as nodes, that are linked by a network and work together coherently. They are essential to the video's theme as they form the basis for discussing various concepts like client-server model, nodes, and system architecture. The script mentions examples such as Google, Amazon, and Netflix to illustrate the ubiquity of distributed systems in modern technology.

πŸ’‘Distributed Computing

Distributed Computing is a broader term that encompasses the building of computing models and algorithms for distributed systems. It is distinguished from the concept of a distributed system by focusing on the computational aspect. The video discusses distributed computing in the context of cloud computing and other services like PaaS and IaaS, emphasizing its importance in modern technology solutions.

πŸ’‘Nodes

In the context of the video, nodes are the individual software or hardware components of a distributed system that have their own processors and memory. They are key to the operation of distributed systems, as they communicate and coordinate with each other to achieve a common goal. The script explains that nodes can be either part of open or closed groups, with the Internet serving as an example of an open group of nodes.

πŸ’‘Client-Server Model

The Client-Server Model is a fundamental example of a distributed system architecture where the client makes requests and the server provides responses. The video script uses this model to demonstrate a simple form of distributed systems, highlighting its prevalence and the need for understanding it as a basis for more complex distributed systems.

πŸ’‘Resource

A resource in distributed systems is any asset that can be accessed remotely by nodes or users of the distributed applications. The script mentions that resources can include files, services, storage facilities, and other networks, emphasizing their importance in the functionality of distributed systems by providing the necessary assets for operations.

πŸ’‘Middleware

Middleware in distributed systems is a layer that connects nodes together, making the system appear as a single, unified entity. It manages resources, communication, and security services, and handles complexities of distributed computing. The video script describes middleware as an essential component that allows for the development and operation of distributed applications by abstracting the underlying distributed nature of the system.

πŸ’‘Concurrency

Concurrency in the video is described as the execution of multiple operations and activities in parallel within a distributed system. It is an intrinsic property of distributed systems that allows for efficient task execution and is illustrated in the script with a diagram showing different phases of a distributed program where tasks are performed concurrently.

πŸ’‘Coordination and Synchronization

Coordination and synchronization are concepts that address the challenges of managing processes in a distributed system without a shared clock. Coordination ensures smooth collaboration between operations, while synchronization controls access to shared resources to prevent data corruption and inconsistency. The script discusses these concepts as essential for maintaining system integrity and performance in distributed computing.

πŸ’‘Architectural Model

The architectural model in distributed systems defines how nodes are organized and how they communicate and interact. The video script explains different architectural styles such as layered, object-based, data center, and event-driven architectures, each with its own approach to organizing and managing distributed systems for optimal performance and scalability.

πŸ’‘Global State

Global state in distributed systems represents the collective state of all separate processes, providing a unified view of the system's properties at a specific point in time. The script mentions global state as an important concept that helps in understanding the overall status of a distributed system, akin to a global object containing all the system's global variables.

πŸ’‘Scalability

Scalability is the ability of a distributed system to handle growth, either by adding more nodes or by expanding existing resources. The video script highlights scalability as one of the main advantages of distributed systems, allowing for horizontal scaling to meet increased demand or workload without significant reconfiguration.

πŸ’‘Failure Detection

Failure detection in distributed systems is the process of identifying when a node or component has stopped functioning properly. The script points out that failure detection can be challenging, especially in large and evolving systems, and is an important consideration in designing robust distributed systems.

πŸ’‘Design for Failure

Design for failure is a principle in developing distributed systems that involves anticipating and planning for potential failures in every aspect of system operation. The video script emphasizes this principle as crucial for creating systems that are resilient and can continue to operate reliably even when components fail.

Highlights

Introduction to distributed systems and distributed computing.

Explanation of how nearly all modern software involves some form of distributed computing.

Client-server model as the simplest example of a distributed system.

Detailed definition of a distributed system: a collection of independent nodes coordinated to fulfill a common goal.

Importance of no shared clock and no shared memory in distributed systems.

Discussion on the concepts of concurrency, heterogeneity, and loose coupling in distributed systems.

Overview of open and closed groups in distributed systems, with examples like the Internet and intranets.

Introduction to overlay networks, such as blockchain and BitTorrent, which operate on top of the Internet.

Explanation of the middleware layer that connects nodes and makes them appear as a single supercomputer.

Description of key concepts like nodes, resources, distribution transparency, and global state in distributed computing.

Discussion on the motives for using distributed systems, including resource sharing, scalability, and fault tolerance.

Comparison of cluster computing and grid computing based on scale and coupling.

Overview of architectural styles in distributed systems: layered, object-based, data center, and event-driven.

Advantages of distributed systems, including reliability, scalability, and increased performance.

Challenges of distributed systems, such as failure detection, redundancy, and consistency issues.

Transcripts

play00:00

hello geeks this is me a year from a

play00:02

bonus video about distributed systems in

play00:04

this video I try to provide a concise

play00:06

overview about distributed systems and

play00:08

distributed computing as an extra video

play00:10

listen to the architectural patterns

play00:12

series so without further ado let's dive

play00:14

in into the topic first let's explain

play00:16

and clarify what a distributed system is

play00:18

and what it's not but before that let me

play00:20

tell you something that you may not be

play00:22

aware of nearly all the software we use

play00:24

today is to an extent distributed or

play00:27

involve distributed computing how you're

play00:29

gonna know the answer in a bit for now

play00:30

let me just give you some examples

play00:32

distributed systems or distributed

play00:34

computing is all around us

play00:36

Google search engine Amazon platforms

play00:38

Netflix blockchain online gaming money

play00:41

transfer and online banking and the list

play00:44

goes on probably the most

play00:45

straightforward and the simplest example

play00:47

of distributed systems is the

play00:49

client-server model which I assume you

play00:51

are familiar with and if not you can

play00:53

check my short video about it I'll go

play00:55

back to this model for the sake of

play00:57

demonstration later for now let's go

play00:59

back to the fundamental question and see

play01:01

what exactly a distributed system is a

play01:03

distributed system is a collection of

play01:05

separate and independent software or

play01:07

hardware components called nodes that

play01:09

are linked together by means of a

play01:11

network and work together coherently by

play01:14

coordinating and communicating through a

play01:15

message passing or events to fulfill one

play01:18

and goal nodes of the system could be

play01:20

unstructured or highly structured

play01:22

depending on the system requirements in

play01:24

any case the complexities of the system

play01:26

remain hidden to the end-user be it a

play01:28

human being or a computer and the whole

play01:31

system appeared as a single computer to

play01:33

its users alright let me repeat with the

play01:35

written words now a distributed system

play01:37

is a collection of separate and

play01:38

independent software or hardware

play01:40

components called nodes that are

play01:42

networked hidden work together

play01:43

coherently by coordinating and

play01:45

communicating through a message passing

play01:47

or events to fulfill one and goal nodes

play01:50

could be instructed or highly structured

play01:52

depending on the system requirements and

play01:54

the complexities of the system are

play01:55

hidden to the end user making the whole

play01:57

system appear as a single computer to

play01:59

its users so basically it's just a bunch

play02:02

of independent computers that cooperate

play02:04

to solve a problem together I know it

play02:06

sounds simple but it's a hell of a world

play02:08

under the hood before we continue though

play02:10

I just want to say that two programs

play02:12

communic

play02:12

with each other on the same computer is

play02:14

not necessarily a distributed system

play02:16

even though they work together to

play02:18

achieve the same goal a client-server

play02:19

model that uses the same computer is not

play02:22

a distributed system this is important

play02:24

to know of course there is the exception

play02:25

of parallel multiprocessor computers but

play02:28

for the sake of simplicity in clarity

play02:29

it's not tackle complicated examples

play02:32

that's because for systems be called

play02:34

distributed as opposed to centralized or

play02:36

parallel the following conditions needs

play02:38

to be true first no shared clock

play02:40

computers have clocks also called timers

play02:43

which are critical electronic devices

play02:45

that keep track of oscillations and they

play02:48

help the computer to have its own notion

play02:50

of time this in turn helps to determine

play02:53

the order between events and regulates

play02:55

at the time and speed of the computer

play02:56

operations if two programs communicate

play02:59

using the same computer they basically

play03:01

have the same clock this is as to

play03:03

another requirement for distribution

play03:04

systems which is that each element in

play03:07

this system has to have its own

play03:09

processor and harmony is achieved

play03:11

through coordination and synchronization

play03:13

the second principle is no shared memory

play03:15

this is another key feature of

play03:16

distributed systems this means nearly

play03:18

each process has its own independent

play03:21

memory to work with and States is

play03:23

distributed throughout the system

play03:25

concurrency is another important

play03:27

characteristic of distributed systems

play03:29

which means that software and hardware

play03:31

components of the system also called

play03:33

processes are autonomous and execute

play03:36

tasks concurrently and last but not

play03:38

least heterogeneity and lose copy which

play03:40

means the processors are independent and

play03:43

separate from each other and they have

play03:44

different speeds even though

play03:46

heterogeneity in loose coupling are not

play03:47

necessary almost invariably in nodes in

play03:50

distributed systems run different

play03:52

operating systems and components can be

play03:54

built with different technologies and

play03:56

run on different platforms before moving

play03:58

on to basic concepts about distributed

play04:00

computing I just want to mention a

play04:01

couple of notes first distributed system

play04:04

is a dynamic system that allows

play04:06

computers or nodes to join and leave at

play04:09

well this has many advantages as we'll

play04:11

see later but also it introduces some

play04:13

challenges in overhead such as in case

play04:15

of open distributed systems security

play04:17

issues and the extra work of managing

play04:20

the organization and membership of nodes

play04:22

the second thing I want to say is the

play04:24

nearly all existing large distributed

play04:26

systems especially modern ones are

play04:28

overlaying networks what in the universe

play04:30

is an overlay network and not real a

play04:32

network is a virtual network that was

play04:34

possible to build thanks to an

play04:36

underlying network infrastructure but

play04:38

simply an overlay network is just a

play04:40

network on top of another network for

play04:43

instance PHP networks such as blockchain

play04:45

and BitTorrent and overlay networks that

play04:47

is to say there are networks on top of

play04:49

the Internet

play04:50

voice over IP is another network over

play04:52

the Internet so it's also called an

play04:54

online network ok I hope by now you have

play04:56

a fair idea about what a distributed

play04:59

system is and can tell whether system is

play05:01

distributed or not good now let's talk

play05:03

about some important basic concepts

play05:05

about distributed computing okay so

play05:07

distributed computing is a type of

play05:09

computing over distributed systems right

play05:11

so this means that distributed computing

play05:14

is more than distributed systems it's a

play05:16

broader term and it is concerned with

play05:17

building and establishing computing

play05:19

models for distributed systems and

play05:21

working out algorithms to solve problems

play05:24

related to such systems cloud computing

play05:26

is a good modern example of distributed

play05:28

computing other examples of distributed

play05:30

computing solutions are platform as a

play05:32

service infrastructure as a service

play05:34

server LS etc now we will keep things

play05:37

simple and don't call me about basic

play05:38

distributed computing concepts all right

play05:40

so one of the very basic concepts that

play05:42

you should know about is the notion of a

play05:44

node and notice the software or hardware

play05:46

components that has its own processor a

play05:48

memory and is able to communicate with

play05:50

the rest of the system nodes form open

play05:52

groups that is to say a network of nodes

play05:54

that is open to the external world and

play05:56

thus join and the network is easy and

play05:58

also external entities can communicate

play06:00

with the system easily the internet is

play06:02

one big giant distributed system that

play06:04

falls under this category nodes can also

play06:06

form closed groups which are restricted

play06:08

in terms of membership authentication

play06:11

and resource accessibility internets an

play06:13

example of that of course nodes can

play06:15

communicate via messaging mechanisms

play06:16

such as RPC calls brest services etc

play06:19

another important notion is what is

play06:21

referred to as a resource a resource is

play06:23

an asset in the distributed system that

play06:26

could be accessed remotely by nodes in

play06:27

the network or users of the distributed

play06:30

applications that are over the

play06:31

distributed system resources can be

play06:33

virtually anything such as files

play06:35

services storage facilities other

play06:37

networks etc basically a resource is

play06:40

anything that a node can take advantage

play06:42

of or use distribution transparency is

play06:45

another important concept which denotes

play06:47

that everything that happens under the

play06:49

hood should stay invisible to the end

play06:51

users of the system in other words the

play06:54

dispersion of resources the failure of

play06:56

nodes and fail overs migration and

play06:58

replication operations etc all should be

play07:01

invisible to users of the system the way

play07:03

to achieve this is through an important

play07:05

component called the middleware and

play07:07

speaking of which a middleware in this

play07:09

context is a distributed systems layer

play07:11

that connects the nodes together and

play07:14

make them appear as one single

play07:15

supercomputer it is a logical layer on

play07:18

top of the whole system think of it as

play07:20

an operating system that runs over the

play07:22

nodes collectively once this layer is

play07:24

established distributed applications

play07:27

could be built and run over it this

play07:29

middleware layer manages resources

play07:31

provides communication and security

play07:32

services handles barriers and the other

play07:35

complexities of distributed computing

play07:37

etc next is concurrency we have talked

play07:40

about this concept before in the

play07:42

characteristics in simple words

play07:43

concurrency is the fact that multiple

play07:46

operations and activities are executed

play07:48

in parallel these activities can

play07:49

interact among each other to perform a

play07:51

particular operation in this diagram for

play07:54

example a simple distributed program is

play07:56

visualized we could see that in phase 1

play07:58

task 1 and 2 are executed in parallel

play08:01

and there is a simple interaction

play08:03

between them phase 2 has three

play08:05

operations in parallel in one

play08:06

cooperation between two of them and as

play08:08

we saw earlier concurrency is an

play08:10

intrinsic property of distributed

play08:12

systems all right

play08:13

coordination and synchronization these

play08:16

are two important concepts that tackle

play08:18

the problems of no shared clock between

play08:20

processes and also they solve the

play08:22

problem of data corruption and

play08:23

inconsistency if two entities try to

play08:26

access data at the same time

play08:27

coordination ensure the smooth

play08:29

collaboration between operations and

play08:31

activities and help achieve agreement

play08:33

among them synchronization on the other

play08:35

hand orders and controls access to

play08:37

shared resources

play08:38

the next concept is the architectural

play08:40

model the architectural model dictates

play08:42

how the nodes in the system are

play08:44

organized it defines the structure of

play08:46

the network as well as how knows

play08:47

communicate and interact the

play08:49

architectural model is extremely

play08:51

important

play08:51

in distributed computing for the sake of

play08:53

better management of the complexities of

play08:55

such systems and also for ease of

play08:57

maintenance mainly the architecture is

play08:59

needed for software components and

play09:01

that's because as we said earlier most

play09:03

distributed systems are overlay networks

play09:05

the last concept I want to talk about is

play09:07

global state global state in distributed

play09:10

systems is the union of the states of

play09:12

the separate processes it is sort of a

play09:14

global view of the system that describes

play09:16

its properties at a particular point in

play09:18

time it's sort of the equivalent of a

play09:20

global objects that contains all the

play09:22

global variables used by the software

play09:24

system now why not use one single

play09:27

supercomputer that could do everything

play09:29

we want and save ourselves the trouble

play09:31

why use instead of that several

play09:33

computers and add the overhead of

play09:35

managing and maintaining them that's

play09:37

actually a good question

play09:38

and the answer is that the motives to

play09:40

use a distributed system instead of a

play09:42

single computer are many one of the most

play09:44

common ones is the need for a solution

play09:46

where we need to reach a consensus among

play09:48

parties that are dispersed

play09:50

geographically examples of such cases

play09:52

are online banking blockchain barian

play09:54

platforms etc resource sharing is

play09:57

another reason why we need distributed

play09:58

system such as databases or distributed

play10:01

file systems another example that falls

play10:03

under the same reason are peer-to-peer

play10:04

systems like the BitTorrent Network etc

play10:07

another case where we need a distributed

play10:09

system is one we can not or it's

play10:11

inefficient to replicate data using one

play10:13

computer also when scalability is of

play10:16

crucial importance a distributed system

play10:18

is probably the optimal solution of

play10:20

course there are other reasons why one

play10:22

would choose a distributed system such

play10:24

as availability reliability etc so these

play10:27

are the main reasons why one would

play10:29

prefer to go for a distributed system

play10:31

related to the motives for using such

play10:33

systems are the advantages of

play10:35

distributed computing but before talking

play10:37

about the advantages and challenges of

play10:39

distributed systems let's briefly talk

play10:41

about their types when talking about

play10:43

types of distributed systems or any kind

play10:45

of systems it's important to understand

play10:47

that classification depends on the

play10:48

context and on the level of complexity

play10:50

we're taking into account are we talking

play10:52

about architecture

play10:53

are we classifying the system based on

play10:55

the end goal is the context related to

play10:57

the topology is it related to how couple

play11:00

at the nodes are etc in this section I'm

play11:02

going to address two types of

play11:03

classification the first is general

play11:05

and relates to the type of coupling and

play11:07

scale and the second is related to the

play11:09

architectural model of the whole system

play11:10

when talking about distributed systems

play11:12

in terms of scale there are two main

play11:14

types of distributed computing cluster

play11:16

computing and grid computing in cluster

play11:18

computing systems the underlying

play11:20

infrastructure is composed of identical

play11:21

computers that are closely connected and

play11:24

the management is local and centralized

play11:26

cluster computing is used to achieve

play11:27

high performance and minimize downtime

play11:29

grid computing on the other hand is a

play11:31

type of systems in which heterogeneity

play11:33

is the norm in terms of hardware

play11:35

software and technology nodes of

play11:37

dispersed over a very large area and

play11:39

administration is decentralized such

play11:41

systems are used when a large repository

play11:43

of data is involved and a lot of

play11:44

computing power is required all right

play11:46

and if we're talking about architecture

play11:48

styles on the other hand distributed

play11:50

systems fall under one of the following

play11:52

categories first layered architecture in

play11:54

this architectural model nodes are

play11:56

grouped into separate layers each with a

play11:58

specific goal to achieve an example of a

play12:00

simple layer distributed system is the

play12:02

client-server model next the object

play12:04

based architecture knows in subsystems

play12:06

are less structured and loosely coupled

play12:08

than the layered model communication is

play12:10

a synchronous and the elements of the

play12:11

system can directly interact with other

play12:13

elements through direct calls the third

play12:15

architectural model is the data center

play12:16

architecture in such systems nodes

play12:18

communicate through a common repository

play12:20

the system is based on a data center

play12:22

through which trimeric communication

play12:24

happens and the last one which is more

play12:26

common one is the advanced driven

play12:28

architecture model eventual driven

play12:29

systems achieve their goals by means of

play12:31

events nodes communicate and perform

play12:33

operations through the propagation of

play12:35

and the reaction to events feel free to

play12:37

check my video about the event driven

play12:39

architecture pattern to know more so

play12:41

these are the main architectural styles

play12:43

for distributed systems in a nutshell

play12:44

all right and let's talk now about the

play12:46

pros and cons of distributed computing

play12:48

as always let's start with the

play12:49

advantages the first advantage I want to

play12:51

talk about is reliability a defining

play12:53

characteristic of distributed systems is

play12:55

the reliable interconnection and

play12:57

cooperation between nodes in the whole

play12:59

system this makes it easy to share data

play13:01

between node another great advantage is

play13:02

scalability in fact this is one of the

play13:04

main reasons as to why someone or an

play13:07

organization would opt for a distributed

play13:09

system in distributed computing

play13:10

scalability is a matter of adding more

play13:12

nodes to the system at the correspondent

play13:14

layer or level or what is referred to as

play13:16

horizontal scaling and

play13:18

common advantages for tolerance it means

play13:20

the system and its services will still

play13:22

be operational and reliable even when

play13:24

parts of the system goes down of course

play13:26

as we said before resource sharing

play13:28

becomes not only possible but also easy

play13:30

in subsistence and last but not least

play13:31

increased performance but as all matters

play13:34

of life distributed systems are not a

play13:36

silver bullet and actually talking about

play13:38

the downsides of distributes computing

play13:40

is a separate topic in itself first

play13:42

failure detection failure detection is

play13:44

almost impossible in distributed systems

play13:46

especially if the system is large and

play13:48

evolves over time very elaborate

play13:50

measures need to be taken to mitigate

play13:51

risks of this issue redundancy is a

play13:53

common issue among distributed systems

play13:55

as well another challenge or problem is

play13:57

the difficulty to achieve consistency

play13:59

among nodes and finally performance

play14:01

bottlenecks is a serious issue as well

play14:03

actually when it comes to distributed

play14:05

systems the more we design for failure

play14:07

any kind of failure at all levels the

play14:09

less problems we will have this leads us

play14:11

to the final section issues and

play14:13

considerations of the most important

play14:15

pitfalls when building distributed

play14:16

systems is the four assumptions made by

play14:18

developers such as the network is

play14:20

reliable and secure or the topology of

play14:22

the underlying network doesn't change or

play14:24

that latency is zero this leads to a

play14:26

poor and fragile system that breaks

play14:28

easily and actually one of the crucial

play14:30

principles developers and architects

play14:32

abide by when designing and developing

play14:34

distributed systems is the design for

play14:36

failure principle under this rule there

play14:37

are a lot of considerations to take into

play14:39

account but generally speaking designed

play14:41

for failure is expecting the worst-case

play14:43

scenario in each and every aspect when

play14:46

the system is operational and planned

play14:48

for that all right this should be enough

play14:50

for a brief overview of distributed

play14:51

systems the last thing I want to say is

play14:53

that unlike distributed systems nodes in

play14:56

a network are explicitly visible and

play14:58

have to be explicitly addressed also a

play15:00

network in itself doesn't have to have a

play15:02

specific end goal and it's usually not

play15:05

robust and secure as a distributed

play15:07

system that's difference between a

play15:08

distributed system and a network alright

play15:11

I hope you've enjoyed this video and

play15:13

learned something new don't forget to

play15:14

subscribe until the next video stay

play15:16

tuned

Rate This
β˜…
β˜…
β˜…
β˜…
β˜…

5.0 / 5 (0 votes)

Related Tags
Distributed SystemsDistributed ComputingClient-ServerCloud ComputingConcurrencyScalabilityReliabilityResource SharingArchitectural ModelsMiddlewareEvent-Driven