Fault Tolerance

Fault Tolerance: The ability of a system to continue to operate properly and without interruption if one or more of its components were to fail.

There are a few factors you need to confirm to decide if a system is fault tolerant or not. Think of each device/point as a pool, and the lines as pipes.

If to answer to all of these are “Yes,” then the system is Fault Tolerant.

Redundancy: Fault Tolerant networks typically have extra components and pathways to ensure reliability, making them have redundancy.

“Essential Knowledges” from College Board

Examples:

image-2.png

image.png

image-3.png

Popcorn Hack #1 (True or False)

image.png

Answer here: False

What are the benefits of having a Fault Tolerant Network?

ferferf

Popcorn Hack #2 (Multiple Choice)

image.png

Is this network above Fault Tolerant? If not, what changes can you make that can make this a fault tolerant network?

- A: connection from *A ---> B*
- B: connection from *B ---> D*
- C: connection from *E ---> F*
- D: connection from *B ---> C*

Answer here: A

Parallel and Distributed Computing

Computer Tasks: All of the tasks that are operated on the computer has to be handled by the computer. These tasks are scheduled by the operating system.

Because computers have many tasks to manage, they need to balance the tasks so all CPUs are being utilized evenly and fully.

Sequential Computing: Tasks are done one after the other; operations are performed one at a time.

Parallel Computing: tasks are done simultaneously.

image.png

Speedup Time: The speedup of a parallel solution is measured in the time it takes to complete the task sequentially divided by the time it takes to complete the task in parallel. Example Sequential time is 120 ms, parallel time is 60 ms, speedup time is 2 ms

Distributed Computing: sending of tasks from one computer to another; multiple devices are used to run a program. Requires a network.

image.png

For example, when you search something up on google, Google sends the request to thousands of servers in the backround for your answers.

Web Services: Standards on how computers can ask for tast execution over the web, including protocols

Beowolf Clusters: special software grouping different computers together

Essential Knowledges from College Board:

Popcorn Hack #3

Explain the difference between Sequential, Parallel, and Distributive computing in 1-2 sentences. Try to not look at answers above, and put it in your own words.

HOMEWORK

Fault Tolerance:

Make two data flowcharts like the examples above, you can use MS paint, canva, any design website. Make one Fault Tolerant and one not fault tolerant, and explain what needs to be changed to the flowchart in order to make the network fault tolerant. Doing these will get you over a .90:

Parallel and Distributed Computing:

# Sequential code:
for i in range(10):
    print(i * i-1)
-1
0
3
8
15
24
35
48
63
80
#Parallel Code
import concurrent.futures
def parallel_task(i):
    result = i * i - 1
    print(result)
    return result
def parallel_loop():
    with concurrent.futures.ThreadPoolExecutor() as executor:
        futures = [executor.submit(parallel_task, i) for i in range(10)]
        results = [future.result() for future in concurrent.futures.as_completed(futures)]
parallel_loop()

-1
0
3
8
15
24
35
48
63
80