What is the difference between this process and a distributed system?

I have the following code taking an array containing 0-100 as values and incrementing those values by one through 200 threads. Question: If I were to build a (leader-follower) distributed system, what aspects of building the system would remain similar to the distributed process I currently have, contained below? What will change moving from the distributed process to a distributed system?
My code follows:

import os

if os.name == 'posix':
     import resource
import multiprocessing as mp
from multiprocessing import Process, Array, Lock 

PROCESSES = 200

def add_to_each_element_in_list(l,a):
    l.acquire()
    for i in range(len(a)):
       a[i] += 1
    l.release()
     
if __name__ == '__main__':
    if os.name == 'posix':
       resource.setrlimit(resource.RLIMIT_NOFILE,(20000, 20000))
    
    arr = Array('i',range(101))
    # Create new processes
    ctx=mp.get_context('spawn')
    lock=Lock()
    process_num=0
    processList=[]

    print("Creating Processes")
    for process_num in range(PROCESSES):
       p=ctx.Process(target=add_to_each_element_in_list,args=(lock,arr))
       processList.append(p)

    print("Starting Processes")  
    for p in processList:
        p.start()

    print("Waiting for Processes to finish")  
    for p in processList:
        p.join()

    #print final list
    print("Final list: ")
    print(arr[:])
2 Likes

In a distributed system, the architecture and patterns are more complex. You would have to consider aspects such as scalability, robustness, and fault tolerance. Additionally, maintaining a distributed system involves numerous considerations around infrastructure, deployment strategies, monitoring, and maintenance.

1 Like