We may earn an affiliate commission when you visit our partners.
Course image
Nader Medhat

Building distributed systems involves the design and implementation of software architectures that operate across multiple computers, which may be located in the same physical location or spread across various geographical locations. These systems are characterized by their ability to work collaboratively to achieve a common goal, often providing enhanced performance, reliability, and scalability compared to traditional centralized systems.

Key aspects of building distributed systems include:

Read more

Building distributed systems involves the design and implementation of software architectures that operate across multiple computers, which may be located in the same physical location or spread across various geographical locations. These systems are characterized by their ability to work collaboratively to achieve a common goal, often providing enhanced performance, reliability, and scalability compared to traditional centralized systems.

Key aspects of building distributed systems include:

  1. Communication: Implementing robust communication protocols (like HTTP, gRPC, or message queues) to facilitate interaction between distributed components while managing latency and ensuring data integrity.

  2. Architecture Design: Choosing the right architecture that best fits the application requirements, ensuring efficient communication and data sharing among components.

  3. Data Management: Designing strategies for data consistency, replication, and partitioning to handle the challenges posed by having data distributed across multiple nodes.

  4. Fault Tolerance: Creating systems that can gracefully handle failures, ensuring that the overall system remains operational even when individual components fail.

  5. Scalability: Ensuring that the system can grow and handle increased loads by adding more nodes or resources without significant reconfiguration

  6. Monitoring and Maintenance: Establishing effective monitoring tools and practices to track system performance, detect anomalies, and facilitate maintenance.

By addressing these challenges, developers can create distributed systems that are resilient, efficient, and capable of meeting the demands of modern applications.

Enroll now

What's inside

Learning objectives

  • Building distributed systems
  • Distributed systems fundamentals
  • Distributed systems patterns
  • Devolpe trad-offs analysis skills
  • System design practice

Syllabus

Understanding these fundamentals helps in designing, implementing, and managing distributed systems effectively.
Introduction
What are distributed systems?
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Covers communication protocols like HTTP, gRPC, and message queues, which are essential for building robust distributed systems
Explores data consistency, replication, and partitioning strategies, which are crucial for managing data across multiple nodes in distributed systems
Examines fault tolerance techniques, enabling the creation of systems that remain operational even when individual components fail, a critical aspect of distributed systems
Discusses scalability considerations, ensuring that systems can handle increased loads by adding more nodes or resources without significant reconfiguration
Includes tools like Redis, RabbitMQ, Apache Kafka, and Cassandra, which are widely used in the industry for building distributed systems
Requires familiarity with fundamental concepts such as the CAP Theorem, consistency models, and coordination techniques, which may necessitate prior coursework or experience

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

أساس نظري وتصميم عملي للأنظمة الموزعة

وفقًا للمتعلمين، تقدم هذه الدورة أساسًا نظريًا قويًا لفهم الأنظمة الموزعة، حيث تُشرح مفاهيم أساسية ومعقدة مثل CAP Theorem والاتساق بوضوح. يُثنى العديد على أمثلة تصميم الأنظمة العملية التي تُطبق المفاهيم على سيناريوهات واقعية، معتبرين إياها الجزء الأكثر فائدة وتحديًا. كما تُعتبر التغطية للأدوات مثل Kafka وCassandra وRedis نقطة إيجابية. ومع ذلك، يُشير عدد كبير من المراجعين إلى أن الدورة تتطلب خلفية تقنية قوية في البرمجة والأنظمة وليست مناسبة للمبتدئين. كما يُبدي البعض رغبتهم في المزيد من العمق في تفاصيل التطبيق العملي والكود الفعلي.
ليست للمبتدئين وتتطلب معرفة مسبقة.
"بالتأكيد أنصح بها لمن لديه خلفية برمجية جيدة ويريد فهم هذا المجال."
"تحتاج لخلفية قوية جداً في الشبكات وقواعد البيانات الموزعة للاستفادة القصوى."
"قد تكون صعبة للمبتدئين تماماً. تحتاج بعض الخلفية لغالبية المفاهيم."
"تحتاج لتركيز كبير وخلفية جيدة."
"الدورة تتطلب مستوى معين من الخبرة."
تطبيق المفاهيم عبر بناء أنظمة واقعية.
"أمثلة بناء الأنظمة مثل نظام الحجز. المحاضرات واضحة ومفيدة."
"الجزء العملي في بناء الأنظمة كان جيداً جداً."
"أمثلة بناء الأنظمة كانت التحدي الممتع والأكثر فائدة."
"أمثلة تصميم الأنظمة معقدة وواقعية وتجبرك على التفكير بعمق."
توفر فهماً معمقاً للمفاهيم الأساسية.
"الدورة ممتازة في شرح المفاهيم النظرية مثل CAP Theorem والاتساق."
"أساس نظري قوي تم تقديمه، مما يساعد على فهم التحديات."
"شرح المفاهيم مثل الإجماع والاستنساخ كان واضحًا جدًا."
"شرح ممتاز للمفاهيم النظرية والتحديات في الأنظمة الموزعة."
النظرية جيدة، ولكن التطبيق يحتاج تفاصيل.
"تمنيت لو كان هناك المزيد من التمارين العملية أو الكود الفعلي للتطبيق على نطاق أوسع."
"الدورة لم تقدم تفاصيل كافية عن كيفية تطبيق هذه المفاهيم في العالم الحقيقي."
"الأمثلة التطبيقية سطحية ولا تدخل في التفاصيل التقنية اللازمة."
"الجانب النظري مغطى بشكل ممتاز، لكن الجانب العملي التطبيقي يمكن تحسينه."
"يشعر البعض أن الدورة تركز أكثر على 'لماذا' وليس على 'كيف' بالتفصيل التقني."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Building Distributed Systems with these activities:
مراجعة أساسيات الشبكات
تساعد مراجعة أساسيات الشبكات على فهم أفضل لكيفية تواصل الأنظمة الموزعة.
Browse courses on TCP/IP
Show steps
  • راجع مفاهيم بروتوكولات الشبكات الشائعة.
  • اختبر معلوماتك من خلال اختبارات قصيرة عبر الإنترنت.
قراءة 'الأنظمة الموزعة: المفاهيم والتصميم'
يوفر هذا الكتاب نظرة عامة شاملة على المفاهيم الأساسية في الأنظمة الموزعة.
View Melania on Amazon
Show steps
  • اقرأ الفصول المتعلقة بالاتصال والتزامن.
  • ناقش المفاهيم مع الزملاء في المنتديات.
قراءة 'تصميم تطبيقات كثيفة البيانات'
يوفر هذا الكتاب فهمًا شاملاً للتحديات والحلول في تصميم الأنظمة الموزعة.
View Melania on Amazon
Show steps
  • اقرأ الفصول المتعلقة بالاتساق والتسامح مع الأخطاء.
  • ناقش المفاهيم مع الزملاء في المنتديات.
Four other activities
Expand to see all activities and additional details
Show all seven activities
إنشاء مدونة حول CAP Theorem
يساعد إنشاء مدونة حول CAP Theorem على تعزيز فهمك لهذا المفهوم الأساسي.
Show steps
  • ابحث عن CAP Theorem ومكوناته (الاتساق، التوفر، التسامح مع التقسيم).
  • اكتب شرحًا واضحًا وموجزًا لـ CAP Theorem.
  • قدم أمثلة واقعية لكيفية تطبيق CAP Theorem في الأنظمة الموزعة.
  • انشر المدونة وشاركها مع الآخرين.
بناء نظام دردشة موزع بسيط
يساعد بناء نظام دردشة موزع بسيط على تطبيق المفاهيم النظرية المكتسبة في الدورة.
Show steps
  • اختر لغة برمجة وإطار عمل مناسبين.
  • صمم بنية النظام، مع مراعاة الاتساق والتسامح مع الأخطاء.
  • نفذ المكونات الأساسية، مثل خادم الدردشة والعملاء.
  • اختبر النظام بشكل شامل.
إنشاء عرض تقديمي حول اختيار أدوات الأنظمة الموزعة
يساعد إنشاء عرض تقديمي حول اختيار الأدوات على فهم الميزات والعيوب لكل أداة.
Show steps
  • ابحث عن أدوات الأنظمة الموزعة الشائعة، مثل Redis و Kafka و Cassandra.
  • قارن بين هذه الأدوات بناءً على الميزات والأداء والتكلفة.
  • أنشئ عرضًا تقديميًا يقدم توصيات حول اختيار الأدوات المناسبة لحالات استخدام مختلفة.
  • قدم العرض التقديمي لزملائك أو في حدث تقني.
تدرب على خوارزميات التوافق
يساعد التدرب على خوارزميات التوافق على فهم كيفية عمل هذه الخوارزميات في الأنظمة الموزعة.
Show steps
  • ادرس خوارزميات التوافق الشائعة، مثل Paxos و Raft.
  • نفذ هذه الخوارزميات في بيئة محاكاة.
  • اختبر الخوارزميات في ظل ظروف مختلفة.

Career center

Learners who complete Building Distributed Systems will develop knowledge and skills that may be useful to these careers:
مطور برمجيات
يضع مطور البرمجيات التعليمات البرمجية التي تشغل تطبيقاتنا وأجهزتنا. وهو دور متعدد الأوجه يتطلب الفهم، وغالباً ما يتطلب الخبرة، في الأنظمة الموزعة. هذا المسار يزود المطورين بالمعرفة الأساسية اللازمة لتصميم وبناء تطبيقات موثوقة وقابلة للتطوير تعمل عبر أجهزة متعددة. يوفر هذا المسار للمطورين فهمًا للأنظمة الموزعة مثل Apache Kafka و Cassandra، مما يجعلهم أكثر فاعلية في بناء حلول حديثة. كما أن بناء أنظمة توزيعية باستخدام أدوات مثل Redis وRabbitMQ وApache Kafka يعمق من فهم المطورين ومساهمتهم.
مهندس برمجيات موجه نحو الأنظمة الموزعة
يلعب مهندس البرمجيات الموجه نحو الأنظمة الموزعة دوراً حيوياً في تصميم وتطوير وتنفيذ الأنظمة التي تعمل عبر شبكة من الحواسيب. هذا المسار يساعد في فهم كيفية بناء هذه الأنظمة، مع التركيز على جوانب مثل التواصل، والمرونة، وقواعد البيانات الموزعة. هذا المسار يغطي أساسيات الأنظمة الموزعة، وأنماطها، ويتعمق في التحديات المعمارية، واستراتيجيات إدارة البيانات المتسقة والمتكررة. من خلال دراسة كيفية بناء أنظمة مثل نظام الدردشة، ونظام الحجز، ومحرك بحث للمناقشات، يكتسب المهندسون الخبرة العملية اللازمة. معرفة كيفية بناء أنظمة توزيعية باستخدام أدوات مثل Redis وRabbitMQ وApache Kafka تعمق من فهم المهندسين ومساهمتهم.
مهندس بيانات
يركز مهندس البيانات على تصميم وإنشاء وإدارة البنية التحتية للبيانات الخاصة بالمؤسسة. هذا المسار يقدم رؤى في إدارة البيانات الموزعة، وهو أمر ضروري للتعامل مع مجموعات البيانات الكبيرة والمعقدة. من خلال فهم كيفية عمل قواعد البيانات الموزعة مثل Cassandra، يمكن لمهندسي البيانات تصميم حلول تخزين فعالة وقابلة للتطوير. من خلال دراسة المواضيع المشمولة مثل تجزئة البيانات والتكرار، يمكن للمهندسين تحسين أداء النظام ومرونته. كما أن دراسة كيفية بناء محرك بحث للمناقشات توضح أهمية إدارة البيانات في الأنظمة الموزعة. كما أن بناء أنظمة توزيعية باستخدام أدوات مثل Redis وRabbitMQ وApache Kafka يعمق من فهم المهندسين ومساهمتهم.
مهندس بلوكتشين
يقوم مهندس البلوكتشين بتصميم وتطوير وتنفيذ تطبيقات و حلول البلوكتشين، والتي تعتمد بشكل كبير على مبادئ الأنظمة الموزعة. يساعد هذا المسار في فهم آليات الإجماع، وتجزئة البيانات، والمرونة، وهي كلها مكونات مهمة لأي نظام بلوكتشين. من خلال فهم كيفية عمل قواعد البيانات الموزعة مثل Cassandra، يمكن لمهندسي البلوكتشين تصميم حلول تخزين فعالة وقابلة للتطوير. من خلال دراسة المواضيع المشمولة مثل تجزئة البيانات والتكرار، يمكن للمهندسين تحسين أداء النظام ومرونته. كما أن دراسة كيفية بناء نظام الدردشة ونظام الحجز توضح أهمية إدارة البيانات في الأنظمة الموزعة. كما أن بناء أنظمة توزيعية باستخدام أدوات مثل Redis وRabbitMQ وApache Kafka يعمق من فهم المهندسين ومساهمتهم.
مهندس أنظمة
يشمل عمل مهندس الأنظمة تصميم وتنفيذ وإدارة البنية التحتية لتكنولوجيا المعلومات الخاصة بالمؤسسة. هذا المسار يغطي الجوانب الأساسية للأنظمة الموزعة، ويساهم في بناء أنظمة مرنة وقابلة للتطوير. يمكن لمهندسي الأنظمة فهم أساسيات التواصل والمرونة، من خلال دراسة مفاهيم مثل نظرية CAP والتناسق، وهو أمر بالغ الأهمية لتصميم وصيانة الأنظمة الموزعة. يتيح بناء أنظمة مثل نظام الدردشة ونظام الحجز للمهندسين تطبيق هذه المفاهيم عملياً. إن بناء أنظمة توزيعية باستخدام أدوات مثلRedis وRabbitMQ وApache Kafka يعمق من فهم المهندسين ومساهمتهم.
مهندس الذكاء الاصطناعي
يقوم مهندس الذكاء الاصطناعي بتصميم وتطوير وتنفيذ حلول الذكاء الاصطناعي، والتي تتطلب غالبًا معالجة كميات كبيرة من البيانات عبر أنظمة موزعة. يساعد هذا المسار في فهم كيفية بناء أنظمة قابلة للتطوير ومرنة يمكنها التعامل مع متطلبات تطبيقات الذكاء الاصطناعي. يساعد هذا المسار في فهم أنظمة توزيعية مثل Apache Kafka و Cassandra، والتي تستخدم بشكل متكرر في خطوط أنابيب تعلم الآلة. علاوة على ذلك، من خلال دراسة كيفية بناء أنظمة مثل محرك بحث للمناقشات أو نظام قائمة الأكثر رواجاً، يمكن للمهندسين تطبيق مبادئ الأنظمة الموزعة على تطبيقات الذكاء الاصطناعي. كما أن بناء أنظمة توزيعية باستخدام أدوات مثل Redis وRabbitMQ وApache Kafka يعمق من فهم المهندسين ومساهمتهم.
مهندس سحابة
يقوم مهندس السحابة بإدارة وصيانة البنية التحتية للحوسبة السحابية للمؤسسة. قد يكون هذا المسار مفيداً بشكل خاص لفهم كيفية تصميم الأنظمة الموزعة وتنفيذها ونشرها في البيئات السحابية. يركز مهندس السحابة على كيفية بناء أنظمة توزيعية باستخدام أدوات مثل Redis وRabbitMQ وApache Kafka وهو أمر بالغ الأهمية لتصميم وصيانة الأنظمة الموزعة. كما أن دراسة كيفية بناء نظام الدردشة ونظام الحجز ونظام قائمة الأكثر رواجاً توضح أهمية إدارة البيانات في الأنظمة الموزعة.
مهندس موثوقية الموقع
يهتم مهندس موثوقية الموقع بضمان توافر وموثوقية وأداء الأنظمة والخدمات. هذا المسار يعزز فهم المرونة والتسامح مع الأخطاء في الأنظمة الموزعة. من خلال تغطية مفاهيم مثل نظرية CAP والإجماع، يطور المهندسون المهارات اللازمة لبناء أنظمة يمكنها التعامل مع حالات الفشل والحفاظ على التشغيل الأمثل. يركز مهندس موثوقية الموقع على كيفية مراقبة وصيانة الأنظمة الموزعة، وهو أمر بالغ الأهمية لتحديد المشاكل وحلها. من خلال فهم كيفية بناء أنظمة مثل نظام الدردشة ونظام الحجز يكتسب المهندسون الخبرة العملية اللازمة. كما أن بناء أنظمة توزيعية باستخدام أدوات مثلRedis وRabbitMQ وApache Kafka يعمق من فهم المهندسين ومساهمتهم.
مختبر الاختراق
يقوم مختبر الاختراق بتقييم أمن الأنظمة والتطبيقات عن طريق محاكاة الهجمات السيبرانية. قد يكون هذا المسار مفيدًا لفهم كيفية عمل الأنظمة الموزعة من أجل تحديد نقاط الضعف المحتملة. من خلال دراسة المواضيع المشمولة مثل نظرية CAP والإجماع، يمكن للمهندسين تصميم أنظمة تتعامل مع حالات الفشل والحفاظ على الأداء الأمثل. كما أن بناء أنظمة توزيعية باستخدام أدوات مثل Redis وRabbitMQ وApache Kafka يعمق من فهم المهندسين ومساهمتهم.
مهندس تعلم الآلة
يقوم مهندس تعلم الآلة بتصميم وتطوير ونشر نماذج تعلم الآلة القابلة للتطوير والإنتاج. هذا المسار يساعد في فهم كيفية بناء أنظمة تعلم الآلة الموزعة القادرة على معالجة كميات كبيرة من البيانات بكفاءة. هذا المسار يقدم فهم أنظمة توزيعية مثل Apache Kafka و Cassandra، والتي تستخدم بشكل متكرر في خطوط أنابيب تعلم الآلة. علاوة على ذلك، من خلال دراسة كيفية بناء أنظمة مثل محرك بحث للمناقشات أو نظام قائمة الأكثر رواجاً، يمكن للمهندسين تطبيق مبادئ الأنظمة الموزعة على تطبيقات تعلم الآلة. من خلال دراسة المواضيع المشمولة مثل تجزئة البيانات والتكرار، يمكن للمهندسين تحسين أداء النظام ومرونته. كما أن بناء أنظمة توزيعية باستخدام أدوات مثل Redis وRabbitMQ وApache Kafka يعمق من فهم المهندسين ومساهمتهم.
مهندس تكامل
يركز مهندس التكامل على ربط الأنظمة والخدمات المختلفة لضمان التواصل السلس وتبادل البيانات. يوفر هذا المسار المعرفة والمهارات اللازمة لتصميم وتنفيذ حلول التكامل في البيئات الموزعة. من خلال فهم بروتوكولات الاتصال وأنماط تصميم النظام، يمكن لمهندسي التكامل بناء أنظمة مرنة وقابلة للتطوير تدمج مكونات مختلفة بسلاسة. يمكن لمهندس التكامل بناء أنظمة توزيعية باستخدام أدوات مثل Redis وRabbitMQ وApache Kafka. كما أن دراسة كيفية بناء نظام الدردشة ونظام الحجز توضح أهمية التكامل في الأنظمة الموزعة.
مهندس أمن التطبيقات
يهتم مهندس أمن التطبيقات بحماية التطبيقات من التهديدات. يعرض هذا المسار فهم كيفية تصميم وبناء أنظمة آمنة ومحمية في البيئات الموزَّعة. من خلال فهم كيفية عمل الأنظمة الموزَّعة، يمكن لمهندسي أمن التطبيقات تحديد ومعالجة الثغرات الأمنية المحتملة بشكل أفضل. من خلال دراسة المواضيع المشمولة مثل نظريَّة CAP والإجماع، يمكن للمهندسين تصميم أنظمة تتعامل مع حالات الفشل والحفاظ على الأداء الأمثل. كما أن بناء أنظمة توزيعية باستخدام أدوات مثل Redis وRabbitMQ وApache Kafka يعمق من فهم المهندسين ومساهمتهم.
محلل بيانات
يركز المحلل على فحص مجموعات البيانات الكبيرة وتفسيرها لتحديد الاتجاهات واستخلاص رؤى قيِّمة. قد يكون هذا المسار مفيدًا لفهم كيفية الوصول إلى البيانات الموزعة وتخزينها ومعالجتها بكفاءة. من خلال فهم بروتوكولات الاتصال وأنماط تصميم النظام، يمكن لمحللي البيانات بناء أنظمة مرنة وقابلة للتطوير تدمج مكونات مختلفة بسلاسة. علاوة على ذلك، من خلال دراسة كيفية بناء أنظمة مثل نظام قائمة الأكثر رواجاً أو محرك بحث للمناقشات، يمكن للمحللين تطبيق مبادئ الأنظمة الموزعة على تطبيقات تحليل البيانات. هذا المسار يوفر للمحللين فهمًا للأنظمة الموزَّعة مثل Apache Kafka و Cassandra، مما يجعلهم أكثر فاعلية في تحليل البيانات في البيئات الحديثة.
مستشار تكنولوجيا المعلومات
يقدم مستشار تكنولوجيا المعلومات الخبرة الإستراتيجية والعملية للمؤسسات لمساعدتهم على الاستفادة من التكنولوجيا لتحقيق أهدافهم التجارية. قد يكون هذا المسار مفيدًا لفهم كيفية تصميم وتنفيذ وإدارة الأنظمة الموزعة من أجل تحديد المشاكل وحلها. يمكن لمستشار تكنولوجيا المعلومات بناء أنظمة توزيعية باستخدام أدوات مثل Redis وRabbitMQ وApache Kafka وهو أمر بالغ الأهمية لتصميم وصيانة الأنظمة الموزعة. كما أن دراسة كيفية بناء نظام الدردشة ونظام الحجز ونظام قائمة الأكثر رواجاً توضح أهمية إدارة البيانات في الأنظمة الموزَّعة.
مدير منتج
يشرف مدير المنتج على دورة حياة المنتج بأكملها، من التصور إلى الإطلاق. قد يكون هذا المسار مفيدًا لفهم الجوانب الفنية للأنظمة الموزعة من أجل اتخاذ قرارات مستنيرة بشأن تطوير المنتج. من خلال فهم أساسيات التواصل والمرونة، من خلال دراسة مفاهيم مثل نظرية CAP والتناسق، وهو أمر بالغ الأهمية لتصميم وصيانة الأنظمة الموزعة. يمكن لمدير المنتج بناء أنظمة توزيعية باستخدام أدوات مثل Redis وRabbitMQ وApache Kafka. كما أن دراسة كيفية بناء نظام الدردشة ونظام الحجز ونظام قائمة الأكثر رواجاً توضح أهمية إدارة البيانات في الأنظمة الموزعة.

Reading list

We've selected one books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Building Distributed Systems.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser