Made first half translation
parent
52b68cf016
commit
a6f83be653
|
@ -1,8 +1,7 @@
|
||||||
{
|
{
|
||||||
"ExpandedNodes": [
|
"ExpandedNodes": [
|
||||||
"",
|
""
|
||||||
"\\images"
|
|
||||||
],
|
],
|
||||||
"SelectedNode": "\\README.md",
|
"SelectedNode": "\\README-ar.md",
|
||||||
"PreviewInSolutionExplorer": false
|
"PreviewInSolutionExplorer": false
|
||||||
}
|
}
|
BIN
.vs/slnx.sqlite
BIN
.vs/slnx.sqlite
Binary file not shown.
Binary file not shown.
680
README-ar.md
680
README-ar.md
|
@ -85,358 +85,358 @@
|
||||||
|
|
||||||
راجع ال [المبادئ التوجيهية للمساهمة](CONTRIBUTING.md).
|
راجع ال [المبادئ التوجيهية للمساهمة](CONTRIBUTING.md).
|
||||||
|
|
||||||
## Index of system design topics
|
## فهرس موضوعات تصميم النظام
|
||||||
|
|
||||||
> Summaries of various system design topics, including pros and cons. **Everything is a trade-off**.
|
> ملخصات لموضوعات تصميم النظام المختلفة ، بما في ذلك الإيجابيات والسلبيات. ** كل شيء هو مقايضة **.
|
||||||
>
|
>
|
||||||
> Each section contains links to more in-depth resources.
|
> يحتوي كل قسم على روابط لمزيد من الموارد المتعمقة.
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="images/jrUBAF7.png">
|
<img src="images/jrUBAF7.png">
|
||||||
<br/>
|
<br/>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
* [System design topics: start here](#system-design-topics-start-here)
|
* [مواضيع تصميم النظام: ابدأ من هنا](#system-design-topics-start-here)
|
||||||
* [Step 1: Review the scalability video lecture](#step-1-review-the-scalability-video-lecture)
|
* [الخطوة 1: راجع محاضرة فيديو قابلية التوسع](#step-1-review-the-scalability-video-lecture)
|
||||||
* [Step 2: Review the scalability article](#step-2-review-the-scalability-article)
|
* [الخطوة 2: راجع مقالة قابلية التوسع](#step-2-review-the-scalability-article)
|
||||||
* [Next steps](#next-steps)
|
* [الخطوات التالية](#next-steps)
|
||||||
* [Performance vs scalability](#performance-vs-scalability)
|
* [الأداء مقابل قابلية التوسع](#performance-vs-scalability)
|
||||||
* [Latency vs throughput](#latency-vs-throughput)
|
* [الكمون مقابل الإنتاجية](#latency-vs-throughput)
|
||||||
* [Availability vs consistency](#availability-vs-consistency)
|
* [التوافر مقابل الاتساق](#availability-vs-consistency)
|
||||||
* [CAP theorem](#cap-theorem)
|
* [نظرية CAP](#cap-theorem)
|
||||||
* [CP - consistency and partition tolerance](#cp---consistency-and-partition-tolerance)
|
* [CP - الاتساق والتسامح في التقسيم](#cp---consistency-and-partition-tolerance)
|
||||||
* [AP - availability and partition tolerance](#ap---availability-and-partition-tolerance)
|
* [AP - التوافر والتسامح في التقسيم](#ap---availability-and-partition-tolerance)
|
||||||
* [Consistency patterns](#consistency-patterns)
|
* [أنماط الاتساق](#consistency-patterns)
|
||||||
* [Weak consistency](#weak-consistency)
|
* [تناسق ضعيف](#weak-consistency)
|
||||||
* [Eventual consistency](#eventual-consistency)
|
* [الاتساق في نهاية المطاف](#eventual-consistency)
|
||||||
* [Strong consistency](#strong-consistency)
|
* [اتساق قوي](#strong-consistency)
|
||||||
* [Availability patterns](#availability-patterns)
|
* [أنماط التوفر](#availability-patterns)
|
||||||
* [Fail-over](#fail-over)
|
* [تجاوز الفشل](#fail-over)
|
||||||
* [Replication](#replication)
|
* [تكرار](#replication)
|
||||||
* [Availability in numbers](#availability-in-numbers)
|
* [التوافر بالأرقام](#availability-in-numbers)
|
||||||
* [Domain name system](#domain-name-system)
|
* [نظام اسم المجال](#domain-name-system)
|
||||||
* [Content delivery network](#content-delivery-network)
|
* [شبكة توصيل المحتوى](#content-delivery-network)
|
||||||
* [Push CDNs](#push-cdns)
|
* [دفع CDNs](#push-cdns)
|
||||||
* [Pull CDNs](#pull-cdns)
|
* [سحب شبكات CDN](#pull-cdns)
|
||||||
* [Load balancer](#load-balancer)
|
* [موازن الحمل](#load-balancer)
|
||||||
* [Active-passive](#active-passive)
|
* [نشط سلبي](#active-passive)
|
||||||
* [Active-active](#active-active)
|
* [نشط نشط](#active-active)
|
||||||
* [Layer 4 load balancing](#layer-4-load-balancing)
|
* [موازنة حمل الطبقة الرابعة](#layer-4-load-balancing)
|
||||||
* [Layer 7 load balancing](#layer-7-load-balancing)
|
* [موازنة تحميل الطبقة السابعة](#layer-7-load-balancing)
|
||||||
* [Horizontal scaling](#horizontal-scaling)
|
* [التحجيم الأفقي](#horizontal-scaling)
|
||||||
* [Reverse proxy (web server)](#reverse-proxy-web-server)
|
* [وكيل عكسي (خادم الويب)](#reverse-proxy-web-server)
|
||||||
* [Load balancer vs reverse proxy](#load-balancer-vs-reverse-proxy)
|
* [موازن التحميل مقابل الوكيل العكسي](#load-balancer-vs-reverse-proxy)
|
||||||
* [Application layer](#application-layer)
|
* [طبقة التطبيقات](#application-layer)
|
||||||
* [Microservices](#microservices)
|
* [الخدمات المصغرة](#microservices)
|
||||||
* [Service discovery](#service-discovery)
|
* [اكتشاف الخدمة](#service-discovery)
|
||||||
* [Database](#database)
|
* [قاعدة البيانات](#database)
|
||||||
* [Relational database management system (RDBMS)](#relational-database-management-system-rdbms)
|
* [نظام إدارة قواعد البيانات الارتباطية (RDBMS)](#relational-database-management-system-rdbms)
|
||||||
* [Master-slave replication](#master-slave-replication)
|
* [تكرار السيد والخادم](#master-slave-replication)
|
||||||
* [Master-master replication](#master-master-replication)
|
* [تكرار السيد السيد](#master-master-replication)
|
||||||
* [Federation](#federation)
|
* [الاتحاد](#federation)
|
||||||
* [Sharding](#sharding)
|
* [التشرذم](#sharding)
|
||||||
* [Denormalization](#denormalization)
|
* [عدم التطابق](#denormalization)
|
||||||
* [SQL tuning](#sql-tuning)
|
* [ضبط SQL](#sql-tuning)
|
||||||
* [NoSQL](#nosql)
|
* [لا SQL](#nosql)
|
||||||
* [Key-value store](#key-value-store)
|
* [مخزن مفتاح-قيمة](#key-value-store)
|
||||||
* [Document store](#document-store)
|
* [مخزن المستندات](#document-store)
|
||||||
* [Wide column store](#wide-column-store)
|
* [مخزن العمود الواسع](#wide-column-store)
|
||||||
* [Graph Database](#graph-database)
|
* [قاعدة بيانات الرسم البياني](#graph-database)
|
||||||
* [SQL or NoSQL](#sql-or-nosql)
|
* [SQL أو لا SQL](#sql-or-nosql)
|
||||||
* [Cache](#cache)
|
* [مخزن مؤقت](#cache)
|
||||||
* [Client caching](#client-caching)
|
* [التخزين المؤقت للعميل](#client-caching)
|
||||||
* [CDN caching](#cdn-caching)
|
* [تخزين CDN المؤقت](#cdn-caching)
|
||||||
* [Web server caching](#web-server-caching)
|
* [التخزين المؤقت لخادم الويب](#web-server-caching)
|
||||||
* [Database caching](#database-caching)
|
* [التخزين المؤقت لقاعدة البيانات](#database-caching)
|
||||||
* [Application caching](#application-caching)
|
* [التخزين المؤقت للتطبيق](#application-caching)
|
||||||
* [Caching at the database query level](#caching-at-the-database-query-level)
|
* [التخزين المؤقت على مستوى استعلام قاعدة البيانات](#caching-at-the-database-query-level)
|
||||||
* [Caching at the object level](#caching-at-the-object-level)
|
* [التخزين المؤقت على مستوى الكائن](#caching-at-the-object-level)
|
||||||
* [When to update the cache](#when-to-update-the-cache)
|
* [متى يتم تحديث ذاكرة التخزين المؤقت](#when-to-update-the-cache)
|
||||||
* [Cache-aside](#cache-aside)
|
* [تخزين مؤقت جانبي](#cache-aside)
|
||||||
* [Write-through](#write-through)
|
* [الكتابة من خلال](#write-through)
|
||||||
* [Write-behind (write-back)](#write-behind-write-back)
|
* [الكتابة الخلفية (إعادة الكتابة)](#write-behind-write-back)
|
||||||
* [Refresh-ahead](#refresh-ahead)
|
* [تحديث للأمام](#refresh-ahead)
|
||||||
* [Asynchronism](#asynchronism)
|
* [عدم التزامن](#asynchronism)
|
||||||
* [Message queues](#message-queues)
|
* [قوائم انتظار الرسائل](#message-queues)
|
||||||
* [Task queues](#task-queues)
|
* [قوائم انتظار المهام](#task-queues)
|
||||||
* [Back pressure](#back-pressure)
|
* [الضغط الخلفي](#back-pressure)
|
||||||
* [Communication](#communication)
|
* [تواصل](#communication)
|
||||||
* [Transmission control protocol (TCP)](#transmission-control-protocol-tcp)
|
* [بروتوكول التحكم في الإرسال (TCP)](#transmission-control-protocol-tcp)
|
||||||
* [User datagram protocol (UDP)](#user-datagram-protocol-udp)
|
* [بروتوكول مخطط بيانات المستخدم (UDP)](#user-datagram-protocol-udp)
|
||||||
* [Remote procedure call (RPC)](#remote-procedure-call-rpc)
|
* [استدعاء الإجراء البعيد (RPC)](#remote-procedure-call-rpc)
|
||||||
* [Representational state transfer (REST)](#representational-state-transfer-rest)
|
* [نقل الحالة التمثيلية (REST)](#representational-state-transfer-rest)
|
||||||
* [Security](#security)
|
* [حماية](#security)
|
||||||
* [Appendix](#appendix)
|
* [زائدة](#appendix)
|
||||||
* [Powers of two table](#powers-of-two-table)
|
* [صلاحيات اثنين من الجدول](#powers-of-two-table)
|
||||||
* [Latency numbers every programmer should know](#latency-numbers-every-programmer-should-know)
|
* [أرقام التأخير يجب أن يعرفها كل مبرمج](#latency-numbers-every-programmer-should-know)
|
||||||
* [Additional system design interview questions](#additional-system-design-interview-questions)
|
* [أسئلة مقابلة تصميم النظام الإضافية](#additional-system-design-interview-questions)
|
||||||
* [Real world architectures](#real-world-architectures)
|
* [أبنية العالم الحقيقي](#real-world-architectures)
|
||||||
* [Company architectures](#company-architectures)
|
* [معماريات الشركة](#company-architectures)
|
||||||
* [Company engineering blogs](#company-engineering-blogs)
|
* [مدونات هندسة الشركة](#company-engineering-blogs)
|
||||||
* [Under development](#under-development)
|
* [تحت التطوير](#under-development)
|
||||||
* [Credits](#credits)
|
* [الاعتمادات](#credits)
|
||||||
* [Contact info](#contact-info)
|
* [معلومات الاتصال](#contact-info)
|
||||||
* [License](#license)
|
* [ترخيص](#license)
|
||||||
|
|
||||||
## Study guide
|
## دليل الدراسة
|
||||||
|
|
||||||
> Suggested topics to review based on your interview timeline (short, medium, long).
|
> الموضوعات المقترحة للمراجعة بناءً على الجدول الزمني للمقابلة (قصير ، متوسط ، طويل).
|
||||||
|
|
||||||
![Imgur](images/OfVllex.png)
|
![Imgur](images/OfVllex.png)
|
||||||
|
|
||||||
**Q: For interviews, do I need to know everything here?**
|
**س: لإجراء المقابلات ، هل أحتاج إلى معرفة كل شيء هنا؟ **
|
||||||
|
|
||||||
**A: No, you don't need to know everything here to prepare for the interview**.
|
**ج: لا ، لست بحاجة إلى معرفة كل شيء هنا للاستعداد للمقابلة **.
|
||||||
|
|
||||||
What you are asked in an interview depends on variables such as:
|
يعتمد ما يُطلب منك في المقابلة على متغيرات مثل:
|
||||||
|
|
||||||
* How much experience you have
|
* ما مدى خبرتك
|
||||||
* What your technical background is
|
* ما هي خلفيتك التقنية
|
||||||
* What positions you are interviewing for
|
* ما هي المواقف التي تجري مقابلات معها
|
||||||
* Which companies you are interviewing with
|
* ما هي الشركات التي تجري مقابلات معها
|
||||||
* Luck
|
* حظ
|
||||||
|
|
||||||
More experienced candidates are generally expected to know more about system design. Architects or team leads might be expected to know more than individual contributors. Top tech companies are likely to have one or more design interview rounds.
|
من المتوقع عمومًا أن يعرف المرشحون الأكثر خبرة المزيد عن تصميم النظام. من المتوقع أن يعرف المهندسون المعماريون أو قادة الفريق أكثر من المساهمين الفرديين. من المرجح أن تجري شركات التكنولوجيا الكبرى جولة أو أكثر من مقابلات التصميم.
|
||||||
|
|
||||||
Start broad and go deeper in a few areas. It helps to know a little about various key system design topics. Adjust the following guide based on your timeline, experience, what positions you are interviewing for, and which companies you are interviewing with.
|
ابدأ على نطاق واسع وتعمق في مناطق قليلة. من المفيد معرفة القليل عن مواضيع تصميم النظام الرئيسية المختلفة. اضبط الدليل التالي بناءً على جدولك الزمني وخبرتك والوظائف التي تجري مقابلة معها والشركات التي تجري مقابلات معها.
|
||||||
|
|
||||||
* **Short timeline** - Aim for **breadth** with system design topics. Practice by solving **some** interview questions.
|
* ** جدول زمني قصير ** - استهدف ** اتساع نطاق ** بمواضيع تصميم النظام. تدرب على حل ** بعض ** أسئلة المقابلة.
|
||||||
* **Medium timeline** - Aim for **breadth** and **some depth** with system design topics. Practice by solving **many** interview questions.
|
* ** مخطط زمني متوسط ** - استهدف ** اتساع نطاق ** و ** بعض العمق ** مع مواضيع تصميم النظام. الممارسة عن طريق حل ** العديد ** أسئلة المقابلة.
|
||||||
* **Long timeline** - Aim for **breadth** and **more depth** with system design topics. Practice by solving **most** interview questions.
|
* ** جدول زمني طويل ** - استهدف ** اتساع نطاق ** و ** مزيد من العمق ** مع مواضيع تصميم النظام. تدرب على حل ** معظم ** أسئلة المقابلة.
|
||||||
|
|
||||||
| | Short | Medium | Long |
|
| | قصيرة | وسط | طويلة |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| Read through the [System design topics](#index-of-system-design-topics) to get a broad understanding of how systems work | :+1: | :+1: | :+1: |
|
| اقرأ من خلال [موضوعات تصميم النظام](#index-of-system-design-topics) للحصول على فهم واسع لكيفية عمل الأنظمة | :+1: | :+1: | :+1: |
|
||||||
| Read through a few articles in the [Company engineering blogs](#company-engineering-blogs) for the companies you are interviewing with | :+1: | :+1: | :+1: |
|
| اقرأ بعض المقالات في [مدونات الشركة الهندسية](#company-engineering-blogs) للشركات التي تجري مقابلات معها | :+1: | :+1: | :+1: |
|
||||||
| Read through a few [Real world architectures](#real-world-architectures) | :+1: | :+1: | :+1: |
|
| اقرأ بعضًا من [أبنية العالم الحقيقي](#real-world-architectures) | :+1: | :+1: | :+1: |
|
||||||
| Review [How to approach a system design interview question](#how-to-approach-a-system-design-interview-question) | :+1: | :+1: | :+1: |
|
| مراجعة [كيفية التعامل مع سؤال مقابلة تصميم النظام](#how-to-approach-a-system-design-interview-question) | :+1: | :+1: | :+1: |
|
||||||
| Work through [System design interview questions with solutions](#system-design-interview-questions-with-solutions) | Some | Many | Most |
|
| العمل من خلال [أسئلة مقابلة تصميم النظام مع الحلول](#system-design-interview-questions-with-solutions) | بعض | كثير | أغلب |
|
||||||
| Work through [Object-oriented design interview questions with solutions](#object-oriented-design-interview-questions-with-solutions) | Some | Many | Most |
|
| العمل من خلال [أسئلة مقابلة التصميم الموجه للكائنات مع الحلول](#object-oriented-design-interview-questions-with-solutions) | بعض | كثير | أغلب |
|
||||||
| Review [Additional system design interview questions](#additional-system-design-interview-questions) | Some | Many | Most |
|
| مراجعة [أسئلة مقابلة تصميم النظام الإضافية](#additional-system-design-interview-questions) | بعض | كثير | أغلب |
|
||||||
|
|
||||||
## How to approach a system design interview question
|
## كيفية التعامل مع سؤال مقابلة تصميم النظام
|
||||||
|
|
||||||
> How to tackle a system design interview question.
|
> كيفية معالجة سؤال مقابلة تصميم النظام.
|
||||||
|
|
||||||
The system design interview is an **open-ended conversation**. You are expected to lead it.
|
مقابلة تصميم النظام هي ** محادثة مفتوحة **. من المتوقع أن تقودها.
|
||||||
|
|
||||||
You can use the following steps to guide the discussion. To help solidify this process, work through the [System design interview questions with solutions](#system-design-interview-questions-with-solutions) section using the following steps.
|
يمكنك استخدام الخطوات التالية لتوجيه المناقشة. للمساعدة في ترسيخ هذه العملية ، اعمل من خلال [أسئلة مقابلة تصميم النظام مع حلول](#system-design-interview-questions-with-solutions) باستخدام الخطوات التالية.
|
||||||
|
|
||||||
### Step 1: Outline use cases, constraints, and assumptions
|
### الخطوة الأولى: حدد حالات الاستخدام والقيود والافتراضات
|
||||||
|
|
||||||
Gather requirements and scope the problem. Ask questions to clarify use cases and constraints. Discuss assumptions.
|
اجمع المتطلبات وحدد نطاق المشكلة. اطرح أسئلة لتوضيح حالات الاستخدام والقيود. ناقش الافتراضات.
|
||||||
|
|
||||||
* Who is going to use it?
|
* من سيستخدمها؟
|
||||||
* How are they going to use it?
|
* كيف سيستخدمونها؟
|
||||||
* How many users are there?
|
* كم عدد المستخدمين هناك؟
|
||||||
* What does the system do?
|
* ماذا يفعل النظام؟
|
||||||
* What are the inputs and outputs of the system?
|
* ما هي مداخل ومخرجات النظام؟
|
||||||
* How much data do we expect to handle?
|
* ما مقدار البيانات التي نتوقع معالجتها؟
|
||||||
* How many requests per second do we expect?
|
* كم عدد الطلبات التي نتوقعها في الثانية؟
|
||||||
* What is the expected read to write ratio?
|
* ما هي نسبة القراءة إلى الكتابة المتوقعة؟
|
||||||
|
|
||||||
### Step 2: Create a high level design
|
### الخطوة الثانية: إنشاء تصميم عالي المستوى
|
||||||
|
|
||||||
Outline a high level design with all important components.
|
حدد تصميمًا عالي المستوى مع جميع المكونات المهمة.
|
||||||
|
|
||||||
* Sketch the main components and connections
|
* رسم المكونات والتوصيلات الرئيسية
|
||||||
* Justify your ideas
|
* برر أفكارك
|
||||||
|
|
||||||
### Step 3: Design core components
|
### الخطوة الثالثة: تصميم المكونات الأساسية
|
||||||
|
|
||||||
Dive into details for each core component. For example, if you were asked to [design a url shortening service](solutions/system_design/pastebin/README.md), discuss:
|
الغوص في التفاصيل لكل مكون أساسي. على سبيل المثال ، إذا طُلب منك [تصميم خدمة تقصير عناوين url](solutions/system_design/pastebin/README.md), ناقش:
|
||||||
|
|
||||||
* Generating and storing a hash of the full url
|
* إنشاء وتخزين تجزئة عنوان url الكامل
|
||||||
* [MD5](solutions/system_design/pastebin/README.md) and [Base62](solutions/system_design/pastebin/README.md)
|
* [MD5](Solutions/system_design/pastebin/README.md) و [Base62](Solutions/system_design/pastebin/README.md)
|
||||||
* Hash collisions
|
* تجزئة الاصطدامات
|
||||||
* SQL or NoSQL
|
* SQL أو NoSQL
|
||||||
* Database schema
|
* مخطط قاعدة البيانات
|
||||||
* Translating a hashed url to the full url
|
* ترجمة عنوان url مجزأ إلى عنوان url الكامل
|
||||||
* Database lookup
|
* البحث في قاعدة البيانات
|
||||||
* API and object-oriented design
|
* API والتصميم الشيئي
|
||||||
|
|
||||||
### Step 4: Scale the design
|
### الخطوة 4: قياس التصميم
|
||||||
|
|
||||||
Identify and address bottlenecks, given the constraints. For example, do you need the following to address scalability issues?
|
تحديد ومعالجة الاختناقات ، في ضوء القيود. على سبيل المثال ، هل تحتاج إلى ما يلي لمعالجة مشكلات قابلية التوسع؟
|
||||||
|
|
||||||
* Load balancer
|
* موازن التحميل
|
||||||
* Horizontal scaling
|
* التحجيم الأفقي
|
||||||
* Caching
|
* التخزين المؤقت
|
||||||
* Database sharding
|
* تقسيم قاعدة البيانات
|
||||||
|
|
||||||
Discuss potential solutions and trade-offs. Everything is a trade-off. Address bottlenecks using [principles of scalable system design](#index-of-system-design-topics).
|
ناقش الحلول والمفاضلات المحتملة. كل شيء هو مقايضة. قم بمعالجة الاختناقات باستخدام [مبادئ تصميم النظام القابل للتطوير](#index-of-system-design-topics).
|
||||||
|
|
||||||
### Back-of-the-envelope calculations
|
### حسابات ظهر المغلف
|
||||||
|
|
||||||
You might be asked to do some estimates by hand. Refer to the [Appendix](#appendix) for the following resources:
|
قد يُطلب منك القيام ببعض التقديرات يدويًا. راجع [الملحق] (# الملحق) للحصول على الموارد التالية:
|
||||||
|
|
||||||
* [Use back of the envelope calculations](http://highscalability.com/blog/2011/1/26/google-pro-tip-use-back-of-the-envelope-calculations-to-choo.html)
|
* [استخدم الجزء الخلفي من حسابات المغلف] (http://highscalability.com/blog/2011/1/26/google-pro-tip-use-back-of-the-envelope-calculations-to-choo.html)
|
||||||
* [Powers of two table](#powers-of-two-table)
|
* [صلاحيات جدولين](#powers-of-two-table)
|
||||||
* [Latency numbers every programmer should know](#latency-numbers-every-programmer-should-know)
|
* [أرقام زمن الانتقال التي يجب على كل مبرمج معرفتها](# latency-number-every-programmer-should-know)
|
||||||
|
|
||||||
### Source(s) and further reading
|
### المصدر (المصادر) وقراءات أخرى
|
||||||
|
|
||||||
Check out the following links to get a better idea of what to expect:
|
تحقق من الروابط التالية للحصول على فكرة أفضل عما يمكن توقعه:
|
||||||
|
|
||||||
* [How to ace a systems design interview](https://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/)
|
* [كيفية الحصول على مقابلة تصميم الأنظمة](https://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/)
|
||||||
* [The system design interview](http://www.hiredintech.com/system-design)
|
* [مقابلة تصميم النظام](http://www.hiredintech.com/system-design)
|
||||||
* [Intro to Architecture and Systems Design Interviews](https://www.youtube.com/watch?v=ZgdS0EUmn70)
|
* [مقدمة لمقابلات تصميم النظم والنظم المعمارية](https://www.youtube.com/watch?v=ZgdS0EUmn70)
|
||||||
* [System design template](https://leetcode.com/discuss/career/229177/My-System-Design-Template)
|
* [نموذج تصميم النظام](https://leetcode.com/discuss/career/229177/My-System-Design-Template)
|
||||||
|
|
||||||
## System design interview questions with solutions
|
## أسئلة مقابلة تصميم النظام مع الحلول
|
||||||
|
|
||||||
> Common system design interview questions with sample discussions, code, and diagrams.
|
> أسئلة مقابلة تصميم النظام الشائعة مع نماذج المناقشات ، والتعليمات البرمجية ، والرسوم التخطيطية.
|
||||||
>
|
>
|
||||||
> Solutions linked to content in the `solutions/` folder.
|
> حلول مرتبطة بالمحتوى في مجلد `` Solutions / `.
|
||||||
|
|
||||||
| Question | |
|
| سؤال | |
|
||||||
|---|---|
|
|---|---|
|
||||||
| Design Pastebin.com (or Bit.ly) | [Solution](solutions/system_design/pastebin/README.md) |
|
| صمم Pastebin.com (or Bit.ly) | [الحل](solutions/system_design/pastebin/README.md) |
|
||||||
| Design the Twitter timeline and search (or Facebook feed and search) | [Solution](solutions/system_design/twitter/README.md) |
|
| صمم الجدول الزمني والبحث في Twitter (أو موجز Facebook والبحث) | [الحل](solutions/system_design/twitter/README.md) |
|
||||||
| Design a web crawler | [Solution](solutions/system_design/web_crawler/README.md) |
|
| صمم web crawler | [الحل](solutions/system_design/web_crawler/README.md) |
|
||||||
| Design Mint.com | [Solution](solutions/system_design/mint/README.md) |
|
| صمم Mint.com | [الحل](solutions/system_design/mint/README.md) |
|
||||||
| Design the data structures for a social network | [Solution](solutions/system_design/social_graph/README.md) |
|
| صمم هياكل البيانات لشبكة اجتماعية | [الحل](solutions/system_design/social_graph/README.md) |
|
||||||
| Design a key-value store for a search engine | [Solution](solutions/system_design/query_cache/README.md) |
|
| صمم مخزن مفتاح-قيمة لمحرك بحث | [الحل](solutions/system_design/query_cache/README.md) |
|
||||||
| Design Amazon's sales ranking by category feature | [Solution](solutions/system_design/sales_rank/README.md) |
|
| صمم ترتيب مبيعات أمازون حسب ميزة الفئة | [الحل](solutions/system_design/sales_rank/README.md) |
|
||||||
| Design a system that scales to millions of users on AWS | [Solution](solutions/system_design/scaling_aws/README.md) |
|
| صمم نظام يتسع لملايين المستخدمين على AWS | [الحل](solutions/system_design/scaling_aws/README.md) |
|
||||||
| Add a system design question | [Contribute](#contributing) |
|
| أضف سؤال تصميم النظام | [المساهمة](#contributing) |
|
||||||
|
|
||||||
### Design Pastebin.com (or Bit.ly)
|
### تصميم Pastebin.com (أو Bit.ly)
|
||||||
|
|
||||||
[View exercise and solution](solutions/system_design/pastebin/README.md)
|
[عرض التمرين والحل](solutions/system_design/pastebin/README.md)
|
||||||
|
|
||||||
![Imgur](images/4edXG0T.png)
|
![Imgur](images/4edXG0T.png)
|
||||||
|
|
||||||
### Design the Twitter timeline and search (or Facebook feed and search)
|
### تصميم الجدول الزمني على Twitter والبحث (أو موجز Facebook والبحث)
|
||||||
|
|
||||||
[View exercise and solution](solutions/system_design/twitter/README.md)
|
[عرض التمرين والحل](solutions/system_design/twitter/README.md)
|
||||||
|
|
||||||
![Imgur](images/jrUBAF7.png)
|
![Imgur](images/jrUBAF7.png)
|
||||||
|
|
||||||
### Design a web crawler
|
### تصميم زاحف الويب
|
||||||
|
|
||||||
[View exercise and solution](solutions/system_design/web_crawler/README.md)
|
[عرض التمرين والحل](solutions/system_design/web_crawler/README.md)
|
||||||
|
|
||||||
![Imgur](images/bWxPtQA.png)
|
![Imgur](images/bWxPtQA.png)
|
||||||
|
|
||||||
### Design Mint.com
|
### صمم Mint.com
|
||||||
|
|
||||||
[View exercise and solution](solutions/system_design/mint/README.md)
|
[عرض التمرين والحل](solutions/system_design/mint/README.md)
|
||||||
|
|
||||||
![Imgur](images/V5q57vU.png)
|
![Imgur](images/V5q57vU.png)
|
||||||
|
|
||||||
### Design the data structures for a social network
|
### تصميم هياكل البيانات لشبكة اجتماعية
|
||||||
|
|
||||||
[View exercise and solution](solutions/system_design/social_graph/README.md)
|
[عرض التمرين والحل](solutions/system_design/social_graph/README.md)
|
||||||
|
|
||||||
![Imgur](images/cdCv5g7.png)
|
![Imgur](images/cdCv5g7.png)
|
||||||
|
|
||||||
### Design a key-value store for a search engine
|
### تصميم متجر ذي قيمة رئيسية لمحرك بحث
|
||||||
|
|
||||||
[View exercise and solution](solutions/system_design/query_cache/README.md)
|
[عرض التمرين والحل](solutions/system_design/query_cache/README.md)
|
||||||
|
|
||||||
![Imgur](images/4j99mhe.png)
|
![Imgur](images/4j99mhe.png)
|
||||||
|
|
||||||
### Design Amazon's sales ranking by category feature
|
### تصميم ترتيب مبيعات أمازون حسب ميزة الفئة
|
||||||
|
|
||||||
[View exercise and solution](solutions/system_design/sales_rank/README.md)
|
[عرض التمرين والحل](solutions/system_design/sales_rank/README.md)
|
||||||
|
|
||||||
![Imgur](images/MzExP06.png)
|
![Imgur](images/MzExP06.png)
|
||||||
|
|
||||||
### Design a system that scales to millions of users on AWS
|
### تصميم نظام يتسع لملايين المستخدمين على AWS
|
||||||
|
|
||||||
[View exercise and solution](solutions/system_design/scaling_aws/README.md)
|
[عرض التمرين والحل](solutions/system_design/scaling_aws/README.md)
|
||||||
|
|
||||||
![Imgur](images/jj3A5N8.png)
|
![Imgur](images/jj3A5N8.png)
|
||||||
|
|
||||||
## Object-oriented design interview questions with solutions
|
## أسئلة مقابلة التصميم الموجه مع الحلول
|
||||||
|
|
||||||
> Common object-oriented design interview questions with sample discussions, code, and diagrams.
|
> أسئلة مقابلة التصميم الموجه للكائنات الشائعة مع نماذج المناقشات ، والتعليمات البرمجية ، والرسوم التخطيطية.
|
||||||
>
|
>
|
||||||
> Solutions linked to content in the `solutions/` folder.
|
> حلول مرتبطة بالمحتوى في مجلد `` Solutions / `.
|
||||||
|
|
||||||
>**Note: This section is under development**
|
> ** ملاحظة: هذا القسم قيد التطوير **
|
||||||
|
|
||||||
| Question | |
|
| Question | |
|
||||||
|---|---|
|
|---|---|
|
||||||
| Design a hash map | [Solution](solutions/object_oriented_design/hash_table/hash_map.ipynb) |
|
| تصميم خريطة التجزئة | [الحل](solutions/object_oriented_design/hash_table/hash_map.ipynb) |
|
||||||
| Design a least recently used cache | [Solution](solutions/object_oriented_design/lru_cache/lru_cache.ipynb) |
|
| تصميم ذاكرة التخزين المؤقت الأقل استخدامًا مؤخرًا | [الحل](solutions/object_oriented_design/lru_cache/lru_cache.ipynb) |
|
||||||
| Design a call center | [Solution](solutions/object_oriented_design/call_center/call_center.ipynb) |
|
| تصميم مركز اتصال | [الحل](solutions/object_oriented_design/call_center/call_center.ipynb) |
|
||||||
| Design a deck of cards | [Solution](solutions/object_oriented_design/deck_of_cards/deck_of_cards.ipynb) |
|
| صمم مجموعة من البطاقات | [الحل](solutions/object_oriented_design/deck_of_cards/deck_of_cards.ipynb) |
|
||||||
| Design a parking lot | [Solution](solutions/object_oriented_design/parking_lot/parking_lot.ipynb) |
|
| تصميم موقف للسيارات | [الحل](solutions/object_oriented_design/parking_lot/parking_lot.ipynb) |
|
||||||
| Design a chat server | [Solution](solutions/object_oriented_design/online_chat/online_chat.ipynb) |
|
| صمم خادم دردشة | [الحل](solutions/object_oriented_design/online_chat/online_chat.ipynb) |
|
||||||
| Design a circular array | [Contribute](#contributing) |
|
| تصميم مصفوفة دائرية | [المساهمة](#contributing) |
|
||||||
| Add an object-oriented design question | [Contribute](#contributing) |
|
| أضف سؤال تصميم موجه للكائنات | [المساهمة](#contributing) |
|
||||||
|
|
||||||
## System design topics: start here
|
## مواضيع تصميم النظام: ابدأ من هنا
|
||||||
|
|
||||||
New to system design?
|
جديد في تصميم النظام؟
|
||||||
|
|
||||||
First, you'll need a basic understanding of common principles, learning about what they are, how they are used, and their pros and cons.
|
أولاً ، ستحتاج إلى فهم أساسي للمبادئ المشتركة ، والتعرف على ماهيتها وكيفية استخدامها ومزاياها وعيوبها.
|
||||||
|
|
||||||
### Step 1: Review the scalability video lecture
|
### الخطوة الأولى: مراجعة محاضرة الفيديو حول قابلية التوسع
|
||||||
|
|
||||||
[Scalability Lecture at Harvard](https://www.youtube.com/watch?v=-W9F__D3oY4)
|
[محاضرة حول قابلية التوسع في جامعة هارفارد](https://www.youtube.com/watch?v=-W9F__D3oY4)
|
||||||
|
|
||||||
|
* المواضيع التي تمت تغطيتها:
|
||||||
|
* التحجيم العمودي
|
||||||
|
* التحجيم الأفقي
|
||||||
|
* التخزين المؤقت
|
||||||
|
* توزيع الحمل
|
||||||
|
* تكرار قاعدة البيانات
|
||||||
|
* تقسيم قاعدة البيانات
|
||||||
|
|
||||||
|
### الخطوة الثانية: مراجعة مقالة قابلية التوسع
|
||||||
|
|
||||||
|
[قابلية التوسع](http://www.lecloud.net/tagged/scalability/chrono)
|
||||||
|
|
||||||
* Topics covered:
|
* Topics covered:
|
||||||
* Vertical scaling
|
* [النُسَخ](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones)
|
||||||
* Horizontal scaling
|
* [قواعد البيانات](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database)
|
||||||
* Caching
|
* [تخزينات مؤقتة](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache)
|
||||||
* Load balancing
|
* [عدم التزامن](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism)
|
||||||
* Database replication
|
|
||||||
* Database partitioning
|
|
||||||
|
|
||||||
### Step 2: Review the scalability article
|
### الخطوات التالية
|
||||||
|
|
||||||
[Scalability](http://www.lecloud.net/tagged/scalability/chrono)
|
بعد ذلك ، سنلقي نظرة على المقايضات عالية المستوى:
|
||||||
|
|
||||||
* Topics covered:
|
* ** الأداء ** مقابل ** قابلية التوسع **
|
||||||
* [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones)
|
* ** الكمون ** مقابل ** الإنتاجية **
|
||||||
* [Databases](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database)
|
* ** التوفر ** مقابل ** الاتساق **
|
||||||
* [Caches](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache)
|
|
||||||
* [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism)
|
|
||||||
|
|
||||||
### Next steps
|
ضع في اعتبارك أن ** كل شيء هو مقايضة **.
|
||||||
|
|
||||||
Next, we'll look at high-level trade-offs:
|
ثم سنغوص في مواضيع أكثر تحديدًا مثل DNS و CDNs وموازنات التحميل.
|
||||||
|
|
||||||
* **Performance** vs **scalability**
|
## الأداء مقابل قابلية التوسع
|
||||||
* **Latency** vs **throughput**
|
|
||||||
* **Availability** vs **consistency**
|
|
||||||
|
|
||||||
Keep in mind that **everything is a trade-off**.
|
تكون الخدمة ** قابلة للتطوير ** إذا أدت إلى زيادة ** الأداء ** بطريقة تتناسب مع الموارد المضافة. بشكل عام ، تعني زيادة الأداء خدمة المزيد من وحدات العمل ، ولكن يمكن أيضًا التعامل مع وحدات عمل أكبر ، مثل عندما تنمو مجموعات البيانات. <sup><a href=http://www.allthingsdistributed.com/2006/03/a_word_on_scalability.html>1</a></sup>
|
||||||
|
|
||||||
Then we'll dive into more specific topics such as DNS, CDNs, and load balancers.
|
طريقة أخرى للنظر إلى الأداء مقابل قابلية التوسع:
|
||||||
|
|
||||||
## Performance vs scalability
|
* إذا كانت لديك مشكلة ** في الأداء ** ، فهذا يعني أن نظامك بطيء لمستخدم واحد.
|
||||||
|
* إذا كانت لديك مشكلة ** قابلية التوسع ** ، فإن نظامك سريع لمستخدم واحد ولكنه بطيء في ظل الحمل الثقيل.
|
||||||
|
|
||||||
A service is **scalable** if it results in increased **performance** in a manner proportional to resources added. Generally, increasing performance means serving more units of work, but it can also be to handle larger units of work, such as when datasets grow.<sup><a href=http://www.allthingsdistributed.com/2006/03/a_word_on_scalability.html>1</a></sup>
|
### المصدر (المصادر) وقراءات أخرى
|
||||||
|
|
||||||
Another way to look at performance vs scalability:
|
* [كلمة عن قابلية التوسع](http://www.allthingsdistributed.com/2006/03/a_word_on_scalability.html)
|
||||||
|
* [قابلية التوسع ، التوافر ، الاستقرار ، الأنماط](http://www.slideshare.net/jboner/scalability-availability-stability-patterns/)
|
||||||
|
|
||||||
* If you have a **performance** problem, your system is slow for a single user.
|
## الكمون مقابل الإنتاجية
|
||||||
* If you have a **scalability** problem, your system is fast for a single user but slow under heavy load.
|
|
||||||
|
|
||||||
### Source(s) and further reading
|
** الكمون ** هو الوقت المناسب للقيام ببعض الإجراءات أو لإنتاج بعض النتائج.
|
||||||
|
|
||||||
* [A word on scalability](http://www.allthingsdistributed.com/2006/03/a_word_on_scalability.html)
|
** الإنتاجية ** هي عدد هذه الإجراءات أو النتائج لكل وحدة زمنية.
|
||||||
* [Scalability, availability, stability, patterns](http://www.slideshare.net/jboner/scalability-availability-stability-patterns/)
|
|
||||||
|
|
||||||
## Latency vs throughput
|
بشكل عام ، يجب أن تهدف إلى تحقيق ** أقصى قدر من الإنتاجية ** مع ** زمن انتقال مقبول **.
|
||||||
|
|
||||||
**Latency** is the time to perform some action or to produce some result.
|
### المصدر (المصادر) وقراءات أخرى
|
||||||
|
|
||||||
**Throughput** is the number of such actions or results per unit of time.
|
* [فهم وقت الاستجابة مقابل الإنتاجية](https://community.cadence.com/cadence_blogs_8/b/sd/archive/2010/09/13/understanding-latency-vs-throughput)
|
||||||
|
|
||||||
Generally, you should aim for **maximal throughput** with **acceptable latency**.
|
## التوافر مقابل الاتساق
|
||||||
|
|
||||||
### Source(s) and further reading
|
### نظرية CAP
|
||||||
|
|
||||||
* [Understanding latency vs throughput](https://community.cadence.com/cadence_blogs_8/b/sd/archive/2010/09/13/understanding-latency-vs-throughput)
|
|
||||||
|
|
||||||
## Availability vs consistency
|
|
||||||
|
|
||||||
### CAP theorem
|
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="images/bgLMI2u.png">
|
<img src="images/bgLMI2u.png">
|
||||||
|
@ -444,140 +444,140 @@ Generally, you should aim for **maximal throughput** with **acceptable latency**
|
||||||
<i><a href=http://robertgreiner.com/2014/08/cap-theorem-revisited>Source: CAP theorem revisited</a></i>
|
<i><a href=http://robertgreiner.com/2014/08/cap-theorem-revisited>Source: CAP theorem revisited</a></i>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
In a distributed computer system, you can only support two of the following guarantees:
|
في نظام الكمبيوتر الموزع ، يمكنك فقط دعم اثنين من الضمانات التالية:
|
||||||
|
|
||||||
* **Consistency** - Every read receives the most recent write or an error
|
* ** الاتساق ** - تتلقى كل قراءة أحدث كتابة أو خطأ
|
||||||
* **Availability** - Every request receives a response, without guarantee that it contains the most recent version of the information
|
* ** التوفر ** - يتلقى كل طلب استجابة ، دون ضمان احتوائه على أحدث نسخة من المعلومات
|
||||||
* **Partition Tolerance** - The system continues to operate despite arbitrary partitioning due to network failures
|
* ** التسامح التقسيم ** - يستمر النظام في العمل على الرغم من التقسيم التعسفي بسبب أعطال الشبكة
|
||||||
|
|
||||||
*Networks aren't reliable, so you'll need to support partition tolerance. You'll need to make a software tradeoff between consistency and availability.*
|
* الشبكات ليست موثوقة ، لذا ستحتاج إلى دعم تسامح التقسيم. ستحتاج إلى مقايضة البرامج بين الاتساق والتوافر. *
|
||||||
|
|
||||||
#### CP - consistency and partition tolerance
|
#### CP - الاتساق والتسامح في التقسيم
|
||||||
|
|
||||||
Waiting for a response from the partitioned node might result in a timeout error. CP is a good choice if your business needs require atomic reads and writes.
|
قد يؤدي انتظار استجابة من العقدة المقسمة إلى حدوث خطأ انتهاء المهلة. يعد CP خيارًا جيدًا إذا كانت احتياجات عملك تتطلب قراءة وكتابة ذرية.
|
||||||
|
|
||||||
#### AP - availability and partition tolerance
|
#### AP - التوافر والتسامح في القسم
|
||||||
|
|
||||||
Responses return the most readily available version of the data available on any node, which might not be the latest. Writes might take some time to propagate when the partition is resolved.
|
تُرجع الردود النسخة الأكثر توفرًا من البيانات المتاحة على أي عقدة ، والتي قد لا تكون الأحدث. قد يستغرق نشر عمليات الكتابة عند حل القسم بعض الوقت.
|
||||||
|
|
||||||
AP is a good choice if the business needs allow for [eventual consistency](#eventual-consistency) or when the system needs to continue working despite external errors.
|
AP هو اختيار جيد إذا سمحت احتياجات العمل بذلك [الاتساق في نهاية المطاف](#eventual-consistency) أو عندما يحتاج النظام إلى مواصلة العمل بالرغم من الأخطاء الخارجية.
|
||||||
|
|
||||||
### Source(s) and further reading
|
### المصدر (المصادر) وقراءات أخرى
|
||||||
|
|
||||||
* [CAP theorem revisited](http://robertgreiner.com/2014/08/cap-theorem-revisited/)
|
* [إعادة النظر في نظرية CAP](http://robertgreiner.com/2014/08/cap-theorem-revisited/)
|
||||||
* [A plain english introduction to CAP theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem)
|
* [مقدمة إنجليزية بسيطة لنظرية CAP](http://ksat.me/a-plain-english-introduction-to-cap-theorem)
|
||||||
* [CAP FAQ](https://github.com/henryr/cap-faq)
|
* [الأسئلة الشائعة حول CAP](https://github.com/henryr/cap-faq)
|
||||||
* [The CAP theorem](https://www.youtube.com/watch?v=k-Yaq8AHlFA)
|
* [نظرية CAP](https://www.youtube.com/watch?v=k-Yaq8AHlFA)
|
||||||
|
|
||||||
## Consistency patterns
|
## أنماط الاتساق
|
||||||
|
|
||||||
With multiple copies of the same data, we are faced with options on how to synchronize them so clients have a consistent view of the data. Recall the definition of consistency from the [CAP theorem](#cap-theorem) - Every read receives the most recent write or an error.
|
من خلال نسخ متعددة من نفس البيانات ، نواجه خيارات حول كيفية مزامنتها بحيث يكون لدى العملاء عرض متسق للبيانات. تذكر تعريف التناسق من [نظرية CAP](#cap-theorem) - كل قراءة تتلقى أحدث كتابة أو خطأ.
|
||||||
|
|
||||||
### Weak consistency
|
### تناسق ضعيف
|
||||||
|
|
||||||
After a write, reads may or may not see it. A best effort approach is taken.
|
بعد الكتابة ، قد تراه أو لا تراه. يتم اتباع نهج أفضل جهد.
|
||||||
|
|
||||||
This approach is seen in systems such as memcached. Weak consistency works well in real time use cases such as VoIP, video chat, and realtime multiplayer games. For example, if you are on a phone call and lose reception for a few seconds, when you regain connection you do not hear what was spoken during connection loss.
|
يظهر هذا النهج في أنظمة مثل memcached. يعمل التناسق الضعيف بشكل جيد في حالات الاستخدام في الوقت الفعلي مثل VoIP ودردشة الفيديو والألعاب متعددة اللاعبين في الوقت الفعلي. على سبيل المثال ، إذا كنت تجري مكالمة هاتفية وفقدت الاستقبال لبضع ثوان ، فعند استعادة الاتصال ، لا تسمع ما تم التحدث به أثناء فقدان الاتصال.
|
||||||
|
|
||||||
### Eventual consistency
|
### الاتساق في نهاية المطاف
|
||||||
|
|
||||||
After a write, reads will eventually see it (typically within milliseconds). Data is replicated asynchronously.
|
بعد الكتابة ، ستراها القراءات في النهاية (عادةً في غضون مللي ثانية). يتم نسخ البيانات بشكل غير متزامن.
|
||||||
|
|
||||||
This approach is seen in systems such as DNS and email. Eventual consistency works well in highly available systems.
|
يظهر هذا النهج في أنظمة مثل DNS والبريد الإلكتروني. يعمل الاتساق النهائي بشكل جيد في الأنظمة المتاحة للغاية.
|
||||||
|
|
||||||
### Strong consistency
|
### الاتساق القوي
|
||||||
|
|
||||||
After a write, reads will see it. Data is replicated synchronously.
|
بعد الكتابة ، ستراها القراءات. يتم نسخ البيانات بشكل متزامن.
|
||||||
|
|
||||||
This approach is seen in file systems and RDBMSes. Strong consistency works well in systems that need transactions.
|
يظهر هذا النهج في أنظمة الملفات و RDBMSes. يعمل الاتساق القوي بشكل جيد في الأنظمة التي تحتاج إلى معاملات.
|
||||||
|
|
||||||
### Source(s) and further reading
|
### المصدر (المصادر) وقراءات أخرى
|
||||||
|
|
||||||
* [Transactions across data centers](http://snarfed.org/transactions_across_datacenters_io.html)
|
* [المعاملات عبر مراكز البيانات](http://snarfed.org/transactions_across_datacenters_io.html)
|
||||||
|
|
||||||
## Availability patterns
|
## أنماط التوفر
|
||||||
|
|
||||||
There are two complementary patterns to support high availability: **fail-over** and **replication**.
|
هناك نوعان من الأنماط التكميلية لدعم الإتاحة العالية: ** تجاوز الفشل ** و ** النسخ المتماثل **.
|
||||||
|
|
||||||
### Fail-over
|
### الفشل
|
||||||
|
|
||||||
#### Active-passive
|
#### المبني للمجهول
|
||||||
|
|
||||||
With active-passive fail-over, heartbeats are sent between the active and the passive server on standby. If the heartbeat is interrupted, the passive server takes over the active's IP address and resumes service.
|
مع تجاوز الفشل السلبي النشط ، يتم إرسال دقات القلب بين الخادم النشط والخادم الخامل في وضع الاستعداد. في حالة مقاطعة نبضات القلب ، يتولى الخادم الخامل عنوان IP الخاص بالنشط ويستأنف الخدمة.
|
||||||
|
|
||||||
The length of downtime is determined by whether the passive server is already running in 'hot' standby or whether it needs to start up from 'cold' standby. Only the active server handles traffic.
|
يتم تحديد مدة التعطل من خلال ما إذا كان الخادم الخامل يعمل بالفعل في وضع الاستعداد "الساخن" أو ما إذا كان يحتاج إلى بدء التشغيل من وضع الاستعداد "البارد". فقط الخادم النشط يتعامل مع حركة المرور.
|
||||||
|
|
||||||
Active-passive failover can also be referred to as master-slave failover.
|
يمكن أيضًا الإشارة إلى تجاوز الفشل النشط والسلبي باسم تجاوز الفشل الرئيسي والعبد.
|
||||||
|
|
||||||
#### Active-active
|
#### النشط النشط
|
||||||
|
|
||||||
In active-active, both servers are managing traffic, spreading the load between them.
|
في حالة النشاط النشط ، يقوم كلا الخادمين بإدارة حركة المرور ، وتوزيع الحمل بينهما.
|
||||||
|
|
||||||
If the servers are public-facing, the DNS would need to know about the public IPs of both servers. If the servers are internal-facing, application logic would need to know about both servers.
|
إذا كانت الخوادم تواجه الجمهور ، فسيحتاج DNS إلى معرفة عناوين IP العامة لكلا الخادمين. إذا كانت الخوادم مواجهة داخلية ، فسيحتاج منطق التطبيق إلى معرفة كلا الخادمين.
|
||||||
|
|
||||||
Active-active failover can also be referred to as master-master failover.
|
يمكن أيضًا الإشارة إلى تجاوز الفشل النشط النشط باسم تجاوز الفشل الرئيسي / الرئيسي.
|
||||||
|
|
||||||
### Disadvantage(s): failover
|
### العيوب: تجاوز الفشل
|
||||||
|
|
||||||
* Fail-over adds more hardware and additional complexity.
|
* يضيف تجاوز الفشل مزيدًا من الأجهزة وتعقيدًا إضافيًا.
|
||||||
* There is a potential for loss of data if the active system fails before any newly written data can be replicated to the passive.
|
* هناك احتمال لفقدان البيانات في حالة فشل النظام النشط قبل نسخ أي بيانات مكتوبة حديثًا إلى الخامل.
|
||||||
|
|
||||||
### Replication
|
### تكرار
|
||||||
|
|
||||||
#### Master-slave and master-master
|
#### السيد والخادم والسيد السيد
|
||||||
|
|
||||||
This topic is further discussed in the [Database](#database) section:
|
تمت مناقشة هذا الموضوع بمزيد من التفصيل في فصل [قاعدة البيانات](#database):
|
||||||
|
|
||||||
* [Master-slave replication](#master-slave-replication)
|
* [إستنساخ السيد والخادم](#master-slave-replication)
|
||||||
* [Master-master replication](#master-master-replication)
|
* [إستنساخ السيد السيد](#master-master-replication)
|
||||||
|
|
||||||
### Availability in numbers
|
### التوافرية بالأعداد
|
||||||
|
|
||||||
Availability is often quantified by uptime (or downtime) as a percentage of time the service is available. Availability is generally measured in number of 9s--a service with 99.99% availability is described as having four 9s.
|
غالبًا ما يتم تحديد مدى التوفر حسب وقت التشغيل (أو وقت التوقف عن العمل) كنسبة مئوية من الوقت الذي تتوفر فيه الخدمة. يُقاس التوافر عمومًا بعدد 9 ثوانٍ - توصف خدمة توفر بنسبة 99.99٪ بأنها تحتوي على أربع 9 ثوانٍ.
|
||||||
|
|
||||||
#### 99.9% availability - three 9s
|
#### توفر بنسبة 99.9٪ - ثلاث 9 ثوانٍ
|
||||||
|
|
||||||
| Duration | Acceptable downtime|
|
| المدة | وقت التوقف المقبول|
|
||||||
|---------------------|--------------------|
|
|---------------------|--------------------|
|
||||||
| Downtime per year | 8h 45min 57s |
|
| التوقف عن العمل في السنة | 8 س 45 د 57 ث |
|
||||||
| Downtime per month | 43m 49.7s |
|
| تعطل في الشهر | 43 م 49.7 ث |
|
||||||
| Downtime per week | 10m 4.8s |
|
| التوقف في الأسبوع | 10 م 4.8 ث |
|
||||||
| Downtime per day | 1m 26.4s |
|
| التوقف عن العمل في اليوم | 1 م و 26.4 ث |
|
||||||
|
|
||||||
#### 99.99% availability - four 9s
|
#### التوفر بنسبة 99.99٪ - أربع 9 ثوانٍ
|
||||||
|
|
||||||
| Duration | Acceptable downtime|
|
| المدة | وقت التوقف المقبول |
|
||||||
|---------------------|--------------------|
|
| --------------------- | -------------------- |
|
||||||
| Downtime per year | 52min 35.7s |
|
| التوقف عن العمل في السنة | 52 دقيقة و 35.7 ثانية |
|
||||||
| Downtime per month | 4m 23s |
|
| تعطل في الشهر | 4 م 23 ث |
|
||||||
| Downtime per week | 1m 5s |
|
| التوقف في الأسبوع | 1 م 5 ث |
|
||||||
| Downtime per day | 8.6s |
|
| التوقف عن العمل في اليوم | 8.6 ثانية |
|
||||||
|
|
||||||
#### Availability in parallel vs in sequence
|
#### التوفر بالتوازي مقابل التسلسل
|
||||||
|
|
||||||
If a service consists of multiple components prone to failure, the service's overall availability depends on whether the components are in sequence or in parallel.
|
إذا كانت الخدمة تتكون من مكونات متعددة معرضة للفشل ، فإن التوافر الكلي للخدمة يعتمد على ما إذا كانت المكونات متسلسلة أو متوازية.
|
||||||
|
|
||||||
###### In sequence
|
###### في تسلسل
|
||||||
|
|
||||||
Overall availability decreases when two components with availability < 100% are in sequence:
|
يتناقص التوافر الإجمالي عندما يكون هناك مكونان بتوفر <100٪ في تسلسل:
|
||||||
|
|
||||||
```
|
""
|
||||||
Availability (Total) = Availability (Foo) * Availability (Bar)
|
التوفر (الإجمالي) = التوفر (Foo) * التوفر (Bar)
|
||||||
```
|
""
|
||||||
|
|
||||||
If both `Foo` and `Bar` each had 99.9% availability, their total availability in sequence would be 99.8%.
|
إذا كان لكل من "Foo" و "Bar" توفرًا بنسبة 99.9٪ ، فسيكون إجمالي الإتاحة في التسلسل 99.8٪.
|
||||||
|
|
||||||
###### In parallel
|
###### بالتوازي
|
||||||
|
|
||||||
Overall availability increases when two components with availability < 100% are in parallel:
|
يزداد التوافر الإجمالي عندما يتوازى مكونان مع توفر <100٪:
|
||||||
|
|
||||||
```
|
""
|
||||||
Availability (Total) = 1 - (1 - Availability (Foo)) * (1 - Availability (Bar))
|
التوفر (الإجمالي) = 1 - (1 - التوفر (Foo)) * (1 - التوفر (Bar))
|
||||||
```
|
""
|
||||||
|
|
||||||
If both `Foo` and `Bar` each had 99.9% availability, their total availability in parallel would be 99.9999%.
|
إذا كان لكل من "Foo" و "Bar" توفرًا بنسبة 99.9٪ ، فإن الإتاحة الإجمالية على التوازي ستكون 99.9999٪.
|
||||||
|
|
||||||
## Domain name system
|
## نظام اسم المجال
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="images/IOyLj4i.jpg">
|
<img src="images/IOyLj4i.jpg">
|
||||||
|
@ -585,35 +585,35 @@ If both `Foo` and `Bar` each had 99.9% availability, their total availability in
|
||||||
<i><a href=http://www.slideshare.net/srikrupa5/dns-security-presentation-issa>Source: DNS security presentation</a></i>
|
<i><a href=http://www.slideshare.net/srikrupa5/dns-security-presentation-issa>Source: DNS security presentation</a></i>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
A Domain Name System (DNS) translates a domain name such as www.example.com to an IP address.
|
يترجم نظام اسم المجال (DNS) اسم مجال مثل www.example.com إلى عنوان IP.
|
||||||
|
|
||||||
DNS is hierarchical, with a few authoritative servers at the top level. Your router or ISP provides information about which DNS server(s) to contact when doing a lookup. Lower level DNS servers cache mappings, which could become stale due to DNS propagation delays. DNS results can also be cached by your browser or OS for a certain period of time, determined by the [time to live (TTL)](https://en.wikipedia.org/wiki/Time_to_live).
|
DNS هرمي ، مع وجود عدد قليل من الخوادم الموثوقة في المستوى الأعلى. يوفر جهاز التوجيه أو موفر خدمة الإنترنت معلومات حول خادم (خوادم) DNS الذي يجب الاتصال به عند إجراء بحث. تعيينات ذاكرة التخزين المؤقت لخوادم DNS ذات المستوى الأدنى ، والتي قد تصبح قديمة بسبب تأخيرات انتشار DNS. يمكن أيضًا تخزين نتائج نظام أسماء النطاقات مؤقتًا بواسطة المتصفح أو نظام التشغيل لفترة زمنية معينة ، يتم تحديدها بواسطة [وقت البقاء (TTL)](https://en.wikipedia.org/wiki/Time_to_live).
|
||||||
|
|
||||||
* **NS record (name server)** - Specifies the DNS servers for your domain/subdomain.
|
* ** سجل NS (خادم الاسم) ** - يحدد خوادم DNS للمجال / المجال الفرعي الخاص بك.
|
||||||
* **MX record (mail exchange)** - Specifies the mail servers for accepting messages.
|
* ** سجل MX (تبادل البريد) ** - يحدد خوادم البريد لقبول الرسائل.
|
||||||
* **A record (address)** - Points a name to an IP address.
|
* ** سجل (العنوان) ** - يشير اسمًا إلى عنوان IP.
|
||||||
* **CNAME (canonical)** - Points a name to another name or `CNAME` (example.com to www.example.com) or to an `A` record.
|
* ** CNAME (أساسي) ** - يشير اسمًا إلى اسم آخر أو "CNAME" (example.com إلى www.example.com) أو إلى سجل "A".
|
||||||
|
|
||||||
Services such as [CloudFlare](https://www.cloudflare.com/dns/) and [Route 53](https://aws.amazon.com/route53/) provide managed DNS services. Some DNS services can route traffic through various methods:
|
خدمات مثل[CloudFlare](https://www.cloudflare.com/dns/) و [Route 53](https://aws.amazon.com/route53/) تقدم خدمات DNS المُدارة. يمكن لبعض خدمات DNS توجيه حركة المرور من خلال طرق مختلفة:
|
||||||
|
|
||||||
* [Weighted round robin](https://www.g33kinfo.com/info/round-robin-vs-weighted-round-robin-lb)
|
* [بمعيار round robin](https://www.g33kinfo.com/info/round-robin-vs-weighted-round-robin-lb)
|
||||||
* Prevent traffic from going to servers under maintenance
|
* منع حركة المرور من الذهاب إلى الخوادم تحت الصيانة
|
||||||
* Balance between varying cluster sizes
|
* التوازن بين أحجام الكتلة المختلفة
|
||||||
* A/B testing
|
* اختبار أ / ب
|
||||||
* [Latency-based](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-latency)
|
* [معتمدة على التأخير](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-latency)
|
||||||
* [Geolocation-based](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-geo)
|
* [معتمدة عالموقع الجغرافي](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-geo)
|
||||||
|
|
||||||
### Disadvantage(s): DNS
|
### العيوب: DNS
|
||||||
|
|
||||||
* Accessing a DNS server introduces a slight delay, although mitigated by caching described above.
|
* يؤدي الوصول إلى خادم DNS إلى تأخير طفيف ، على الرغم من التخفيف من حدته عن طريق التخزين المؤقت الموضح أعلاه.
|
||||||
* DNS server management could be complex and is generally managed by [governments, ISPs, and large companies](http://superuser.com/questions/472695/who-controls-the-dns-servers/472729).
|
* قد تكون إدارة خادم DNS معقدة وتتم إدارتها بشكل عام بواسطة [الحكومات ومزودي خدمة الإنترنت والشركات الكبيرة](http://superuser.com/questions/472695/who-controls-the-dns-servers/472729).
|
||||||
* DNS services have recently come under [DDoS attack](http://dyn.com/blog/dyn-analysis-summary-of-friday-october-21-attack/), preventing users from accessing websites such as Twitter without knowing Twitter's IP address(es).
|
* تعرضت خدمات DNS مؤخرًا إلى [هجوم DDoS](http://dyn.com/blog/dyn-analysis-summary-of-friday-october-21-attack/) ، مما يمنع المستخدمين من الوصول إلى مواقع الويب مثل Twitter دون معرفة عنوان (عناوين) IP الخاص بتويتر.
|
||||||
|
|
||||||
### Source(s) and further reading
|
### المصدر (المصادر) وقراءات أخرى
|
||||||
|
|
||||||
* [DNS architecture](https://technet.microsoft.com/en-us/library/dd197427(v=ws.10).aspx)
|
* [هندسة DNS](https://technet.microsoft.com/en-us/library/dd197427 (v = ws.10) .aspx)
|
||||||
* [Wikipedia](https://en.wikipedia.org/wiki/Domain_Name_System)
|
* [ويكيبيديا](https://en.wikipedia.org/wiki/Domain_Name_System)
|
||||||
* [DNS articles](https://support.dnsimple.com/categories/dns/)
|
* [مقالات DNS](https://support.dnsimple.com/categories/dns/)
|
||||||
|
|
||||||
## Content delivery network
|
## Content delivery network
|
||||||
|
|
||||||
|
@ -1673,7 +1673,7 @@ Handy metrics based on numbers above:
|
||||||
| Design a garbage collection system | [stuffwithstuff.com](http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/)<br/>[washington.edu](http://courses.cs.washington.edu/courses/csep521/07wi/prj/rick.pdf) |
|
| Design a garbage collection system | [stuffwithstuff.com](http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/)<br/>[washington.edu](http://courses.cs.washington.edu/courses/csep521/07wi/prj/rick.pdf) |
|
||||||
| Design an API rate limiter | [https://stripe.com/blog/](https://stripe.com/blog/rate-limiters) |
|
| Design an API rate limiter | [https://stripe.com/blog/](https://stripe.com/blog/rate-limiters) |
|
||||||
| Design a Stock Exchange (like NASDAQ or Binance) | [Jane Street](https://youtu.be/b1e4t2k2KJY)<br/>[Golang Implementation](https://around25.com/blog/building-a-trading-engine-for-a-crypto-exchange/)<br/>[Go Implemenation](http://bhomnick.net/building-a-simple-limit-order-in-go/) |
|
| Design a Stock Exchange (like NASDAQ or Binance) | [Jane Street](https://youtu.be/b1e4t2k2KJY)<br/>[Golang Implementation](https://around25.com/blog/building-a-trading-engine-for-a-crypto-exchange/)<br/>[Go Implemenation](http://bhomnick.net/building-a-simple-limit-order-in-go/) |
|
||||||
| Add a system design question | [Contribute](#contributing) |
|
| Add a system design question | [المساهمة](#contributing) |
|
||||||
|
|
||||||
### Real world architectures
|
### Real world architectures
|
||||||
|
|
||||||
|
@ -1713,7 +1713,7 @@ Handy metrics based on numbers above:
|
||||||
| Misc | **Dapper** - Distributed systems tracing infrastructure | [research.google.com](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36356.pdf)
|
| Misc | **Dapper** - Distributed systems tracing infrastructure | [research.google.com](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36356.pdf)
|
||||||
| Misc | **Kafka** - Pub/sub message queue from LinkedIn | [slideshare.net](http://www.slideshare.net/mumrah/kafka-talk-tri-hug) |
|
| Misc | **Kafka** - Pub/sub message queue from LinkedIn | [slideshare.net](http://www.slideshare.net/mumrah/kafka-talk-tri-hug) |
|
||||||
| Misc | **Zookeeper** - Centralized infrastructure and services enabling synchronization | [slideshare.net](http://www.slideshare.net/sauravhaloi/introduction-to-apache-zookeeper) |
|
| Misc | **Zookeeper** - Centralized infrastructure and services enabling synchronization | [slideshare.net](http://www.slideshare.net/sauravhaloi/introduction-to-apache-zookeeper) |
|
||||||
| | Add an architecture | [Contribute](#contributing) |
|
| | Add an architecture | [المساهمة](#contributing) |
|
||||||
|
|
||||||
### Company architectures
|
### Company architectures
|
||||||
|
|
||||||
|
@ -1797,12 +1797,12 @@ Looking to add a blog? To avoid duplicating work, consider adding your company
|
||||||
|
|
||||||
## Under development
|
## Under development
|
||||||
|
|
||||||
Interested in adding a section or helping complete one in-progress? [Contribute](#contributing)!
|
Interested in adding a section or helping complete one in-progress? [المساهمة](#contributing)!
|
||||||
|
|
||||||
* Distributed computing with MapReduce
|
* Distributed computing with MapReduce
|
||||||
* Consistent hashing
|
* Consistent hashing
|
||||||
* Scatter gather
|
* Scatter gather
|
||||||
* [Contribute](#contributing)
|
* [المساهمة](#contributing)
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue