Modern Distributed Systems

بواسطة: edX

Overview

Modern IT infrastructure is built as distributed systems, an exciting concept that started with the first computers and evolved rapidly into its present form. From online video meetings to internet services, from social media platforms to online games, we all use and interact with distributed systems on a daily basis and increasingly depend on them. Designing and operating such large-scale distributed systems, however, is complex and typically involves making reasonable compromises. There are fundamental technical barriers as well as economic arguments why we cannot make these systems behave as if they were running on a single, perfectly reliable machine..

In this course, learners will be introduced to the essential functional and non-functional concerns of distributed systems and the common problems encountered while designing them, such as consistency, availability, elasticity, and scalability. A variety of practical solutions that have been established in the leading tech industry in recent years will be reviewed. These provide re-usable building blocks to create new large-scale applications. These recent developments, especially around cloud computing, large-scale data processing, distributed machine learning, and other fields are often not reflected in textbooks and are absent from many traditional curricula but are at the heart of this course.

The course will therefore provide learners with the fundamental understanding (theoretical and practical foundations) of how cloud, edge, and big data processing systems work and how they address common challenges for distributed systems such as performance, resilience, and scalability.

The learning progress is assessed through a variety of different activities including quizzes, design exercises, experiments, and open questions, with peer review of other students’ solutions. In the final project, learners will design a distributed system based on the learners’ own experience and interests and describe the functional and non-functional properties of the system.

Syllabus

Module 1: Introduction to Distributed Systems

● Parallel vs. Distributed Systems

● Challenges in Distributed Systems

● The CAP Theorem

● Example 1: Online Gaming

● Example 2: Scientific Computing

Module 2: Functional Requirements

● Functional vs. Non–Functional Properties

● Naming

● Replication

● Consistency

● Consensus

Module 3: Non-Functional Requirements

● Importance of Performance

● Measuring NFRs: Metrics

● Scalability and Elasticity

● Amdahl’s Law

● Gustafson’s Law

● Benchmarking

Module 4: Resource Management and Scheduling

● Scheduling in the Small: Processor Scheduling

● Scheduling in the Large: Scheduling for Distributed Systems

● Workloads in DS

● Centralized Schedulers: Kubernetes, etc.

● Decentralized Schedulers: (HTCondor) etc.

● Portfolio Scheduling

Module 5: System Architectures and Programming Models

● Trade-offs between SAs and PMs

● Programming Models

● System Architectures: communication, big data, machine learning

● Layering

Module 6: Distributed Ecosystems

● Introduction to massive processing

● Theory of ecosystems

● Super-distribution principle

● Distributed ecosystems in science and engineering: cloud, edge, big data

● Distributed ecosystems in online gaming

● The future of distributed ecosystems

Taught by

Alexandru Iosup and Jan Rellermeyer

Modern Distributed Systems
الذهاب الي الدورة

Modern Distributed Systems

بواسطة: edX

  • edX
  • مجانية
  • الإنجليزية
  • متاح شهادة
  • أيام محددة
  • intermediate
  • English
8.1.2PHP Version295msRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (182ms)
    • Application (112ms)
    • 1 x Booting (61.72%)
      181.97ms
      1 x Application (38.03%)
      112.13ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET ar/الدورات/{slug}
      middleware
      web, localize:ar
      controller
      App\Http\Controllers\CourseController@show
      as
      ar.courses.show
      namespace
      prefix
      /ar
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      7 statements were executed5.18ms
      • select * from `courses` where `slug_ar` = 'modern-distributed-systems' limit 1
        3.71ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. modern-distributed-systems
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-04-14 01:59:23' where `id` = 763
        450μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-04-14 01:59:23
        • 1. 763
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (35)
        220μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        200μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `institutions` where `institutions`.`id` in (51) and `institutions`.`deleted_at` is null
        230μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (1) and `providers`.`deleted_at` is null
        170μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 757 limit 1
        200μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 757
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Institution
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        QhUYFTYrS6dlxSyeyA7RA0PcDmdQeprsz7miQpNm
        locale
        ar
        _previous
        array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/modern...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/modern-distributed-systems
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "priority" => array:1 [ 0 => "u=0, i" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "18.188.38.17" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "x-forwarded-for" => array:1 [ 0 => "18.188.38.17" ] "cf-ray" => array:1 [ 0 => "92ff9a7e7f4ea0b6-ORD" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_PRIORITY" => "u=0, i" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "18.188.38.17" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_X_FORWARDED_FOR" => "18.188.38.17" "HTTP_CF_RAY" => "92ff9a7e7f4ea0b6-ORD" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "30442" "REMOTE_ADDR" => "172.69.17.65" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/modern-distributed-systems" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1744595962.8807 "REQUEST_TIME" => 1744595962 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Mon, 14 Apr 2025 01:59:23 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IjFnbmVWMEQ1cXBTOTJBbjJmWVFIR0E9PSIsInZhbHVlIjoiU3RyeGtndnRyRUw1UTl5VzhUcmhoQUlsbWZEVTMwYjhPT2dJNVpJQ2xHdllwRzFXenF5RUZGbHJOY2R2SCs2Q0N6QS9uTEhkd1E1a2hTWW9CSTJ1ZFNQM05HVVA3UFdyeW4zeTBQbG5xQVd3SndVMFpKMHNQcHZ4c3ZJUndldFkiLCJtYWMiOiIxZWFiYzFjMDEzYWYwMWMyYjU1YjhiZjJmNTk4YTQ4YTgxY2IyNDQwOTg5NmMwZTM5ODJjYzBmOTk5ZWZiMTdhIiwidGFnIjoiIn0%3D; expires=Mon, 14 Apr 2025 03:59:23 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IjFnbmVWMEQ1cXBTOTJBbjJmWVFIR0E9PSIsInZhbHVlIjoiU3RyeGtndnRyRUw1UTl5VzhUcmhoQUlsbWZEVTMwYjhPT2dJNVpJQ2xHdllwRzFXenF5RUZGbHJOY2R2SCs2Q0N6QS9uT" 1 => "laravel_session=eyJpdiI6Ik80SHVWOEZ1dis5U2tkc3NaNzAwT3c9PSIsInZhbHVlIjoiWEI2ZDFRWTRtd2tPVGh4RW9wSFlsaDAwQ3o4bWRzL291QTNWTHlnMFBQMjYyVUtET3ZKdExvNDRUblc0WFZNb2FCcGo5cDY2UmRmRCtmZnJWVWRON043Ry9vcTZTblFZWU55YlYzbUxwZnBubDZIeWhDVFRwRklZZSsyY1lZMXYiLCJtYWMiOiI4ODFlOGQ4Zjk3N2M3YzA1MDNiNjhhMzIxMzNmZjZkZjU3NWU0NWQxODUzZWExN2FjY2RiNzg2NzNmZTdjZTIyIiwidGFnIjoiIn0%3D; expires=Mon, 14 Apr 2025 03:59:23 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6Ik80SHVWOEZ1dis5U2tkc3NaNzAwT3c9PSIsInZhbHVlIjoiWEI2ZDFRWTRtd2tPVGh4RW9wSFlsaDAwQ3o4bWRzL291QTNWTHlnMFBQMjYyVUtET3ZKdExvNDRUblc0WFZNb2FC" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IjFnbmVWMEQ1cXBTOTJBbjJmWVFIR0E9PSIsInZhbHVlIjoiU3RyeGtndnRyRUw1UTl5VzhUcmhoQUlsbWZEVTMwYjhPT2dJNVpJQ2xHdllwRzFXenF5RUZGbHJOY2R2SCs2Q0N6QS9uTEhkd1E1a2hTWW9CSTJ1ZFNQM05HVVA3UFdyeW4zeTBQbG5xQVd3SndVMFpKMHNQcHZ4c3ZJUndldFkiLCJtYWMiOiIxZWFiYzFjMDEzYWYwMWMyYjU1YjhiZjJmNTk4YTQ4YTgxY2IyNDQwOTg5NmMwZTM5ODJjYzBmOTk5ZWZiMTdhIiwidGFnIjoiIn0%3D; expires=Mon, 14-Apr-2025 03:59:23 GMT; path=/XSRF-TOKEN=eyJpdiI6IjFnbmVWMEQ1cXBTOTJBbjJmWVFIR0E9PSIsInZhbHVlIjoiU3RyeGtndnRyRUw1UTl5VzhUcmhoQUlsbWZEVTMwYjhPT2dJNVpJQ2xHdllwRzFXenF5RUZGbHJOY2R2SCs2Q0N6QS9uT" 1 => "laravel_session=eyJpdiI6Ik80SHVWOEZ1dis5U2tkc3NaNzAwT3c9PSIsInZhbHVlIjoiWEI2ZDFRWTRtd2tPVGh4RW9wSFlsaDAwQ3o4bWRzL291QTNWTHlnMFBQMjYyVUtET3ZKdExvNDRUblc0WFZNb2FCcGo5cDY2UmRmRCtmZnJWVWRON043Ry9vcTZTblFZWU55YlYzbUxwZnBubDZIeWhDVFRwRklZZSsyY1lZMXYiLCJtYWMiOiI4ODFlOGQ4Zjk3N2M3YzA1MDNiNjhhMzIxMzNmZjZkZjU3NWU0NWQxODUzZWExN2FjY2RiNzg2NzNmZTdjZTIyIiwidGFnIjoiIn0%3D; expires=Mon, 14-Apr-2025 03:59:23 GMT; path=/; httponlylaravel_session=eyJpdiI6Ik80SHVWOEZ1dis5U2tkc3NaNzAwT3c9PSIsInZhbHVlIjoiWEI2ZDFRWTRtd2tPVGh4RW9wSFlsaDAwQ3o4bWRzL291QTNWTHlnMFBQMjYyVUtET3ZKdExvNDRUblc0WFZNb2FC" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "QhUYFTYrS6dlxSyeyA7RA0PcDmdQeprsz7miQpNm" "locale" => "ar" "_previous" => array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/modern-distributed-systems" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]