diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
new file mode 100644
index 00000000..c95f569a
--- /dev/null
+++ b/.github/workflows/deploy.yml
@@ -0,0 +1,27 @@
+name: Deploy MkDocs to GitHub Pages
+
+on:
+ push:
+ branches:
+ - main # Trigger on pushes to main branch
+
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: 📥 Checkout repository
+ uses: actions/checkout@v3
+
+ - name: 🐍 Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: '3.10'
+
+ - name: 📦 Install dependencies
+ run: |
+ pip install mkdocs-material
+
+ - name: 🚀 Deploy to GitHub Pages
+ run: |
+ mkdocs gh-deploy --force
diff --git a/docs/ar/design-glance.md b/docs/ar/design-glance.md
index dce5ae04..bc6ae05b 100644
--- a/docs/ar/design-glance.md
+++ b/docs/ar/design-glance.md
@@ -5,7 +5,7 @@
# دليل تصميم النظم (System Design Primer)
-
+
@@ -43,7 +43,7 @@
## بطاقات Anki التعليمية
-
+
@@ -60,7 +60,7 @@
هل تبحث عن موارد للمساعدة في التحضير لـ [**مقابلات البرمجة**](https://github.com/donnemartin/interactive-coding-challenges)؟
-
+
@@ -89,7 +89,7 @@
> كل قسم يحتوي على روابط لمصادر أكثر تفصيلاً.
-
+
@@ -136,7 +136,7 @@
> المواضيع المقترحة للمراجعة بناءً على الجدول الزمني لمقابلتك (قصير، متوسط، طويل).
-
+
**س: هل يجب أن أعرف كل شيء هنا للمقابلة؟**
@@ -258,49 +258,49 @@
[عرض التمرين والحل](solutions/system_design/pastebin/README.md)
-
+
### تصميم الجدول الزمني والبحث في Twitter (أو خلاصة Facebook والبحث)
[عرض التمرين والحل](solutions/system_design/twitter/README.md)
-
+
### تصميم متصفح ويب
[عرض التمرين والحل](solutions/system_design/web_crawler/README.md)
-
+
### تصميم Mint.com
[عرض التمرين والحل](solutions/system_design/mint/README.md)
-
+
### تصميم هياكل البيانات لشبكة اجتماعية
[عرض التمرين والحل](solutions/system_design/social_graph/README.md)
-
+
### تصميم مخزن key-value لمحرك بحث
[عرض التمرين والحل](solutions/system_design/query_cache/README.md)
-
+
### تصميم ميزة تصنيف المبيعات حسب الفئة في Amazon
[عرض التمرين والحل](solutions/system_design/sales_rank/README.md)
-
+
### تصميم نظام يتطور لملايين المستخدمين على AWS
[عرض التمرين والحل](solutions/system_design/scaling_aws/README.md)
-
+
## أسئلة مقابلة التصميم الموجه للكائنات مع الحلول
@@ -391,7 +391,7 @@
### نظرية CAP
-
+
المصدر: مراجعة نظرية CAP
@@ -530,7 +530,7 @@ Availability (Total) = 1 - (1 - Availability (Foo)) * (1 - Availability (Bar))
## نظام أسماء النطاقات (Domain Name System)
-
+
المصدر: عرض تقديمي عن أمان DNS
@@ -568,7 +568,7 @@ Availability (Total) = 1 - (1 - Availability (Foo)) * (1 - Availability (Bar))
## شبكة توصيل المحتوى (CDN)
-
+
المصدر: لماذا نستخدم CDN
@@ -609,7 +609,7 @@ Availability (Total) = 1 - (1 - Availability (Foo)) * (1 - Availability (Bar))
## موازن التحميل (Load Balancer)
-
+
المصدر: أنماط تصميم النظم القابلة للتطوير
@@ -679,7 +679,7 @@ Availability (Total) = 1 - (1 - Availability (Foo)) * (1 - Availability (Bar))
## الوكيل العكسي (خادم الويب)
-
+
المصدر: ويكيبيديا
@@ -722,7 +722,7 @@ Availability (Total) = 1 - (1 - Availability (Foo)) * (1 - Availability (Bar))
## طبقة التطبيق
-
+
المصدر: مقدمة في تصميم الأنظمة للتطوير
@@ -757,7 +757,7 @@ Availability (Total) = 1 - (1 - Availability (Foo)) * (1 - Availability (Bar))
## قاعدة البيانات (Database)
-
+
المصدر: التطوير حتى 10 ملايين مستخدم
@@ -780,7 +780,7 @@ Availability (Total) = 1 - (1 - Availability (Foo)) * (1 - Availability (Bar))
يخدم الرئيسي عمليات القراءة والكتابة، مع نسخ عمليات الكتابة إلى تابع واحد أو أكثر، والتي تخدم القراءة فقط. يمكن للتوابع أيضاً النسخ إلى توابع إضافية في شكل شجري. إذا توقف الرئيسي عن العمل، يمكن للنظام الاستمرار في العمل في وضع القراءة فقط حتى يتم ترقية تابع ليصبح رئيسياً أو يتم توفير رئيسي جديد.
-
+
المصدر: أنماط قابلية التطوير والتوافر والاستقرار
@@ -795,7 +795,7 @@ Availability (Total) = 1 - (1 - Availability (Foo)) * (1 - Availability (Bar))
كلا الرئيسيين يخدمان القراءة والكتابة وينسقان مع بعضهما البعض في عمليات الكتابة. إذا توقف أي من الرئيسيين عن العمل، يمكن للنظام الاستمرار في العمل مع كل من القراءة والكتابة.
-
+
المصدر: أنماط قابلية التطوير والتوافر والاستقرار
@@ -823,7 +823,7 @@ Availability (Total) = 1 - (1 - Availability (Foo)) * (1 - Availability (Bar))
#### الفيدرالية (Federation)
-
+
المصدر: التطوير حتى 10 ملايين مستخدم
@@ -844,7 +844,7 @@ Availability (Total) = 1 - (1 - Availability (Foo)) * (1 - Availability (Bar))
#### التجزئة (Sharding)
-
+
المصدر: أنماط قابلية التطوير والتوافر والاستقرار
@@ -986,7 +986,7 @@ NoSQL هي مجموعة من عناصر البيانات ممثلة في **مخ
#### مخزن الأعمدة العريضة
-
+
المصدر: SQL & NoSQL، تاريخ موجز
@@ -1009,7 +1009,7 @@ NoSQL هي مجموعة من عناصر البيانات ممثلة في **مخ
#### قاعدة بيانات الرسوم البيانية
-
+
المصدر: قاعدة بيانات الرسوم البيانية
@@ -1037,7 +1037,7 @@ NoSQL هي مجموعة من عناصر البيانات ممثلة في **مخ
### SQL أم NoSQL
-
+
المصدر: الانتقال من RDBMS إلى NoSQL
@@ -1079,7 +1079,7 @@ NoSQL هي مجموعة من عناصر البيانات ممثلة في **مخ
## التخزين المؤقت
-
+
المصدر: أنماط تصميم النظام القابل للتوسع
@@ -1149,7 +1149,7 @@ NoSQL هي مجموعة من عناصر البيانات ممثلة في **مخ
#### التخزين المؤقت الجانبي (Cache-aside)
-
+
المصدر: من التخزين المؤقت إلى شبكة بيانات في الذاكرة
@@ -1184,7 +1184,7 @@ def get_user(self, user_id):
#### الكتابة المباشرة (Write-through)
-
+
المصدر: أنماط قابلية التوسع والتوافر والاستقرار
@@ -1219,7 +1219,7 @@ def set_user(user_id, values):
#### الكتابة المؤجلة (write-back)
-
+
المصدر: أنماط قابلية التوسع والتوافر والاستقرار
@@ -1237,7 +1237,7 @@ def set_user(user_id, values):
#### التحديث المسبق (Refresh-ahead)
-
+
المصدر: من التخزين المؤقت إلى شبكة البيانات في الذاكرة
@@ -1269,7 +1269,7 @@ def set_user(user_id, values):
## اللاتزامن (Asynchronism)
-
+
المصدر: مقدمة في تصميم الأنظمة للتوسع
@@ -1315,7 +1315,7 @@ def set_user(user_id, values):
## الاتصال
-
+
المصدر: نموذج OSI ذو الطبقات السبع
@@ -1347,7 +1347,7 @@ HTTP هو بروتوكول طبقة التطبيق يعتمد على بروتو
### بروتوكول التحكم بالإرسال (TCP)
-
+
المصدر: كيفية صنع لعبة متعددة اللاعبين
@@ -1371,7 +1371,7 @@ TCP مفيد للتطبيقات التي تتطلب موثوقية عالية و
### بروتوكول حزم المستخدم (UDP)
-
+
المصدر: كيفية صنع لعبة متعددة اللاعبين
@@ -1400,7 +1400,7 @@ UDP أقل موثوقية ولكنه يعمل بشكل جيد في حالات ا
### استدعاء الإجراء عن بعد (RPC)
-
+
المصدر: حل مقابلة تصميم النظام
@@ -1624,7 +1624,7 @@ Notes
> مقالات حول كيفية تصميم الأنظمة في العالم الحقيقي.
-
+
المصدر: الجداول الزمنية في Twitter على نطاق واسع
diff --git a/docs/en/design-glance.md b/docs/en/design-glance.md
index 15f26bee..b31cada9 100644
--- a/docs/en/design-glance.md
+++ b/docs/en/design-glance.md
@@ -5,7 +5,7 @@
# The System Design Primer
-
+
@@ -48,15 +48,15 @@ Additional topics for interview prep:
## Anki flashcards
-
+
-
+
-
+
The provided [Anki flashcard decks](https://apps.ankiweb.net/) use spaced repetition to help you retain key system design concepts.
@@ -74,7 +74,7 @@ Great for use while on-the-go.
Looking for resources to help you prep for the [**Coding Interview**](https://github.com/donnemartin/interactive-coding-challenges)?
-
+
@@ -111,99 +111,193 @@ Review the [Contributing Guidelines](CONTRIBUTING.md).
> Each section contains links to more in-depth resources.
-
+
-* [System design topics: start here](#system-design-topics-start-here)
- * [Step 1: Review the scalability video lecture](#step-1-review-the-scalability-video-lecture)
- * [Step 2: Review the scalability article](#step-2-review-the-scalability-article)
- * [Next steps](#next-steps)
-* [Performance vs scalability](#performance-vs-scalability)
-* [Latency vs throughput](#latency-vs-throughput)
-* [Availability vs consistency](#availability-vs-consistency)
- * [CAP theorem](#cap-theorem)
- * [CP - consistency and partition tolerance](#cp---consistency-and-partition-tolerance)
- * [AP - availability and partition tolerance](#ap---availability-and-partition-tolerance)
-* [Consistency patterns](#consistency-patterns)
- * [Weak consistency](#weak-consistency)
- * [Eventual consistency](#eventual-consistency)
- * [Strong consistency](#strong-consistency)
-* [Availability patterns](#availability-patterns)
- * [Fail-over](#fail-over)
- * [Active-passive](#active-passive)
- * [Active-active](#active-active)
- * [Replication](#replication)
- * [Availability in numbers](#availability-in-numbers)
-* [Domain name system](#domain-name-system)
-* [Content delivery network](#content-delivery-network)
- * [Push CDNs](#push-cdns)
- * [Pull CDNs](#pull-cdns)
-* [Load balancer](#load-balancer)
- * [Layer 4 load balancing](#layer-4-load-balancing)
- * [Layer 7 load balancing](#layer-7-load-balancing)
- * [Consistent Hashing](#consistent-hashing)
- * [Horizontal scaling](#horizontal-scaling)
-* [Reverse proxy (web server)](#reverse-proxy-web-server)
- * [Load balancer vs reverse proxy](#load-balancer-vs-reverse-proxy)
-* [Application layer](#application-layer)
- * [Microservices](#microservices)
- * [Service discovery](#service-discovery)
-* [Database](#database)
- * [Relational database management system (RDBMS)](#relational-database-management-system-rdbms)
- * [Master-slave replication](#master-slave-replication)
- * [Master-master replication](#master-master-replication)
- * [Federation](#federation)
- * [Sharding](#sharding)
- * [Denormalization](#denormalization)
- * [SQL tuning](#sql-tuning)
- * [NoSQL](#nosql)
- * [Key-value store](#key-value-store)
- * [Document store](#document-store)
- * [Wide column store](#wide-column-store)
- * [Graph Database](#graph-database)
- * [SQL or NoSQL](#sql-or-nosql)
-* [Cache](#cache)
- * [Client caching](#client-caching)
- * [CDN caching](#cdn-caching)
- * [Web server caching](#web-server-caching)
- * [Database caching](#database-caching)
- * [Application caching](#application-caching)
- * [Caching at the database query level](#caching-at-the-database-query-level)
- * [Caching at the object level](#caching-at-the-object-level)
- * [When to update the cache](#when-to-update-the-cache)
- * [Cache-aside](#cache-aside)
- * [Write-through](#write-through)
- * [Write-behind (write-back)](#write-behind-write-back)
- * [Refresh-ahead](#refresh-ahead)
-* [Asynchronism](#asynchronism)
- * [Message queues](#message-queues)
- * [Task queues](#task-queues)
- * [Back pressure](#back-pressure)
-* [Communication](#communication)
- * [Hypertext transfer protocol (HTTP)](#hypertext-transfer-protocol-http)
- * [Transmission control protocol (TCP)](#transmission-control-protocol-tcp)
- * [User datagram protocol (UDP)](#user-datagram-protocol-udp)
- * [Remote procedure call (RPC)](#remote-procedure-call-rpc)
- * [Representational state transfer (REST)](#representational-state-transfer-rest)
-* [Security](#security)
-* [Appendix](#appendix)
- * [Powers of two table](#powers-of-two-table)
- * [Latency numbers every programmer should know](#latency-numbers-every-programmer-should-know)
- * [Additional system design interview questions](#additional-system-design-interview-questions)
- * [Real world architectures](#real-world-architectures)
- * [Company architectures](#company-architectures)
- * [Company engineering blogs](#company-engineering-blogs)
-* [Under development](#under-development)
-* [Credits](#credits)
-* [Contact info](#contact-info)
-* [License](#license)
+- [The System Design Primer](#the-system-design-primer)
+ - [Motivation](#motivation)
+ - [Learn how to design large-scale systems](#learn-how-to-design-large-scale-systems)
+ - [Learn from the open source community](#learn-from-the-open-source-community)
+ - [Prep for the system design interview](#prep-for-the-system-design-interview)
+ - [Anki flashcards](#anki-flashcards)
+ - [Coding Resource: Interactive Coding Challenges](#coding-resource-interactive-coding-challenges)
+ - [Video Resources](#video-resources)
+ - [Contributing](#contributing)
+ - [Index of system design topics](#index-of-system-design-topics)
+ - [Study guide](#study-guide)
+ - [How to approach a system design interview question](#how-to-approach-a-system-design-interview-question)
+ - [Step 1: Outline use cases, constraints, and assumptions](#step-1-outline-use-cases-constraints-and-assumptions)
+ - [Step 2: Create a high level design](#step-2-create-a-high-level-design)
+ - [Step 3: Design core components](#step-3-design-core-components)
+ - [Step 4: Scale the design](#step-4-scale-the-design)
+ - [Back-of-the-envelope calculations](#back-of-the-envelope-calculations)
+ - [Source(s) and further reading](#sources-and-further-reading)
+ - [System design interview questions with solutions](#system-design-interview-questions-with-solutions)
+ - [Design Pastebin.com (or Bit.ly)](#design-pastebincom-or-bitly)
+ - [Design the Twitter timeline and search (or Facebook feed and search)](#design-the-twitter-timeline-and-search-or-facebook-feed-and-search)
+ - [Design a web crawler](#design-a-web-crawler)
+ - [Design Mint.com](#design-mintcom)
+ - [Design the data structures for a social network](#design-the-data-structures-for-a-social-network)
+ - [Design a key-value store for a search engine](#design-a-key-value-store-for-a-search-engine)
+ - [Design Amazon's sales ranking by category feature](#design-amazons-sales-ranking-by-category-feature)
+ - [Design a system that scales to millions of users on AWS](#design-a-system-that-scales-to-millions-of-users-on-aws)
+ - [Object-oriented design interview questions with solutions](#object-oriented-design-interview-questions-with-solutions)
+ - [System design topics: start here](#system-design-topics-start-here)
+ - [Step 1: Review the scalability video lecture](#step-1-review-the-scalability-video-lecture)
+ - [Step 2: Review the scalability article](#step-2-review-the-scalability-article)
+ - [Next steps](#next-steps)
+ - [Performance vs scalability](#performance-vs-scalability)
+ - [Source(s) and further reading](#sources-and-further-reading-1)
+ - [Latency vs throughput](#latency-vs-throughput)
+ - [Source(s) and further reading](#sources-and-further-reading-2)
+ - [Availability vs consistency](#availability-vs-consistency)
+ - [CAP theorem](#cap-theorem)
+ - [CP - consistency and partition tolerance](#cp---consistency-and-partition-tolerance)
+ - [AP - availability and partition tolerance](#ap---availability-and-partition-tolerance)
+ - [Source(s) and further reading](#sources-and-further-reading-3)
+ - [Consistency patterns](#consistency-patterns)
+ - [Weak consistency](#weak-consistency)
+ - [Eventual consistency](#eventual-consistency)
+ - [Strong consistency](#strong-consistency)
+ - [Source(s) and further reading](#sources-and-further-reading-4)
+ - [Availability patterns](#availability-patterns)
+ - [Fail-over](#fail-over)
+ - [Active-passive](#active-passive)
+ - [Active-active](#active-active)
+ - [Disadvantage(s): failover](#disadvantages-failover)
+ - [Replication](#replication)
+ - [Master-slave and master-master](#master-slave-and-master-master)
+ - [Availability in numbers](#availability-in-numbers)
+ - [99.9% availability - three 9s](#999-availability---three-9s)
+ - [99.99% availability - four 9s](#9999-availability---four-9s)
+ - [Availability in parallel vs in sequence](#availability-in-parallel-vs-in-sequence)
+ - [In sequence](#in-sequence)
+ - [In parallel](#in-parallel)
+ - [Domain name system](#domain-name-system)
+ - [Disadvantage(s): DNS](#disadvantages-dns)
+ - [Source(s) and further reading](#sources-and-further-reading-5)
+ - [Content delivery network](#content-delivery-network)
+ - [Push CDNs](#push-cdns)
+ - [Pull CDNs](#pull-cdns)
+ - [Disadvantage(s): CDN](#disadvantages-cdn)
+ - [Source(s) and further reading](#sources-and-further-reading-6)
+ - [Load balancer](#load-balancer)
+ - [Layer 4 load balancing](#layer-4-load-balancing)
+ - [Layer 7 load balancing](#layer-7-load-balancing)
+ - [Consistent Hashing](#consistent-hashing)
+ - [Horizontal scaling](#horizontal-scaling)
+ - [Disadvantage(s): horizontal scaling](#disadvantages-horizontal-scaling)
+ - [Disadvantage(s): load balancer](#disadvantages-load-balancer)
+ - [Source(s) and further reading](#sources-and-further-reading-7)
+ - [Reverse proxy (web server)](#reverse-proxy-web-server)
+ - [Load balancer vs reverse proxy](#load-balancer-vs-reverse-proxy)
+ - [Disadvantage(s): reverse proxy](#disadvantages-reverse-proxy)
+ - [Source(s) and further reading](#sources-and-further-reading-8)
+ - [Application layer](#application-layer)
+ - [Microservices](#microservices)
+ - [Service Discovery](#service-discovery)
+ - [Disadvantage(s): application layer](#disadvantages-application-layer)
+ - [Source(s) and further reading](#sources-and-further-reading-9)
+ - [Database](#database)
+ - [Relational database management system (RDBMS)](#relational-database-management-system-rdbms)
+ - [Master-slave replication](#master-slave-replication)
+ - [Disadvantage(s): master-slave replication](#disadvantages-master-slave-replication)
+ - [Master-master replication](#master-master-replication)
+ - [Disadvantage(s): master-master replication](#disadvantages-master-master-replication)
+ - [Disadvantage(s): replication](#disadvantages-replication)
+ - [Source(s) and further reading: replication](#sources-and-further-reading-replication)
+ - [Federation](#federation)
+ - [Disadvantage(s): federation](#disadvantages-federation)
+ - [Source(s) and further reading: federation](#sources-and-further-reading-federation)
+ - [Sharding](#sharding)
+ - [Disadvantage(s): sharding](#disadvantages-sharding)
+ - [Source(s) and further reading: sharding](#sources-and-further-reading-sharding)
+ - [Denormalization](#denormalization)
+ - [Disadvantage(s): denormalization](#disadvantages-denormalization)
+ - [Source(s) and further reading: denormalization](#sources-and-further-reading-denormalization)
+ - [SQL tuning](#sql-tuning)
+ - [Tighten up the schema](#tighten-up-the-schema)
+ - [Use good indices](#use-good-indices)
+ - [Avoid expensive joins](#avoid-expensive-joins)
+ - [Partition tables](#partition-tables)
+ - [Tune the query cache](#tune-the-query-cache)
+ - [Source(s) and further reading: SQL tuning](#sources-and-further-reading-sql-tuning)
+ - [NoSQL](#nosql)
+ - [Key-value store](#key-value-store)
+ - [Source(s) and further reading: key-value store](#sources-and-further-reading-key-value-store)
+ - [Document store](#document-store)
+ - [Source(s) and further reading: document store](#sources-and-further-reading-document-store)
+ - [Wide column store](#wide-column-store)
+ - [Source(s) and further reading: wide column store](#sources-and-further-reading-wide-column-store)
+ - [Graph database](#graph-database)
+ - [Source(s) and further reading: graph](#sources-and-further-reading-graph)
+ - [Source(s) and further reading: NoSQL](#sources-and-further-reading-nosql)
+ - [SQL or NoSQL](#sql-or-nosql)
+ - [Source(s) and further reading: SQL or NoSQL](#sources-and-further-reading-sql-or-nosql)
+ - [Cache](#cache)
+ - [Client caching](#client-caching)
+ - [CDN caching](#cdn-caching)
+ - [Web server caching](#web-server-caching)
+ - [Database caching](#database-caching)
+ - [Application caching](#application-caching)
+ - [Caching at the database query level](#caching-at-the-database-query-level)
+ - [Caching at the object level](#caching-at-the-object-level)
+ - [When to update the cache](#when-to-update-the-cache)
+ - [Cache-aside](#cache-aside)
+ - [Disadvantage(s): cache-aside](#disadvantages-cache-aside)
+ - [Write-through](#write-through)
+ - [Disadvantage(s): write through](#disadvantages-write-through)
+ - [Write-behind (write-back)](#write-behind-write-back)
+ - [Disadvantage(s): write-behind](#disadvantages-write-behind)
+ - [Refresh-ahead](#refresh-ahead)
+ - [Disadvantage(s): refresh-ahead](#disadvantages-refresh-ahead)
+ - [Disadvantage(s): cache](#disadvantages-cache)
+ - [Source(s) and further reading](#sources-and-further-reading-10)
+ - [Asynchronism](#asynchronism)
+ - [Message queues](#message-queues)
+ - [Task queues](#task-queues)
+ - [Back pressure](#back-pressure)
+ - [Transactional Messaging](#transactional-messaging)
+ - [Disadvantage(s): asynchronism](#disadvantages-asynchronism)
+ - [Source(s) and further reading](#sources-and-further-reading-11)
+ - [Communication](#communication)
+ - [Hypertext transfer protocol (HTTP)](#hypertext-transfer-protocol-http)
+ - [Source(s) and further reading: HTTP](#sources-and-further-reading-http)
+ - [Transmission control protocol (TCP)](#transmission-control-protocol-tcp)
+ - [User datagram protocol (UDP)](#user-datagram-protocol-udp)
+ - [Source(s) and further reading: TCP and UDP](#sources-and-further-reading-tcp-and-udp)
+ - [Remote procedure call (RPC)](#remote-procedure-call-rpc)
+ - [Disadvantage(s): RPC](#disadvantages-rpc)
+ - [Representational state transfer (REST)](#representational-state-transfer-rest)
+ - [Disadvantage(s): REST](#disadvantages-rest)
+ - [RPC and REST calls comparison](#rpc-and-rest-calls-comparison)
+ - [Source(s) and further reading: REST and RPC](#sources-and-further-reading-rest-and-rpc)
+ - [Security](#security)
+ - [Source(s) and further reading](#sources-and-further-reading-12)
+ - [Appendix](#appendix)
+ - [Powers of two table](#powers-of-two-table)
+ - [Source(s) and further reading](#sources-and-further-reading-13)
+ - [Latency numbers every programmer should know](#latency-numbers-every-programmer-should-know)
+ - [Latency numbers visualized](#latency-numbers-visualized)
+ - [Source(s) and further reading](#sources-and-further-reading-14)
+ - [Additional system design interview questions](#additional-system-design-interview-questions)
+ - [Real world architectures](#real-world-architectures)
+ - [Company architectures](#company-architectures)
+ - [Company engineering blogs](#company-engineering-blogs)
+ - [Source(s) and further reading](#sources-and-further-reading-15)
+ - [Interview preparation resources](#interview-preparation-resources)
+ - [Mock interviews](#mock-interviews)
+ - [Under development](#under-development)
+ - [Credits](#credits)
+ - [Contact info](#contact-info)
+ - [License](#license)
## Study guide
> Suggested topics to review based on your interview timeline (short, medium, long).
-
+
**Q: For interviews, do I need to know everything here?**
@@ -332,49 +426,49 @@ You can practice a few sample questions and discuss solutions with the community
[View exercise and solution](solutions/system_design/pastebin/README.md)
-
+
### Design the Twitter timeline and search (or Facebook feed and search)
[View exercise and solution](solutions/system_design/twitter/README.md)
-
+
### Design a web crawler
[View exercise and solution](solutions/system_design/web_crawler/README.md)
-
+
### Design Mint.com
[View exercise and solution](solutions/system_design/mint/README.md)
-
+
### Design the data structures for a social network
[View exercise and solution](solutions/system_design/social_graph/README.md)
-
+
### Design a key-value store for a search engine
[View exercise and solution](solutions/system_design/query_cache/README.md)
-
+
### Design Amazon's sales ranking by category feature
[View exercise and solution](solutions/system_design/sales_rank/README.md)
-
+
### Design a system that scales to millions of users on AWS
[View exercise and solution](solutions/system_design/scaling_aws/README.md)
-
+
## Object-oriented design interview questions with solutions
@@ -473,7 +567,7 @@ Generally, you should aim for **maximal throughput** with **acceptable latency**
### CAP theorem
-
+
Source: medium.com explaining-the-cap-theorem-and-its-limitations
@@ -615,7 +709,7 @@ If both `Foo` and `Bar` each had 99.9% availability, their total availability in
## Domain name system
-
+
Source: DNS security presentation
@@ -655,7 +749,7 @@ Services such as [CloudFlare](https://www.cloudflare.com/dns/) and [Route 53](ht
## Content delivery network
-
+
Source: Why use a CDN
@@ -697,7 +791,7 @@ Sites with heavy traffic work well with pull CDNs, as traffic is spread out more
## Load balancer
-
+
Source: Scalable system design patterns
@@ -752,7 +846,7 @@ Here's how it works:
* Scalability and Consistency: The key benefit of consistent hashing is its scalability. If a server is added or removed, only requests that map to the immediate vicinity of the affected server will be re-routed. Most requests will continue to be directed to the same servers as before. This minimizes data re-caching and avoids creating hotspots where certain servers become overloaded
-
+
@@ -786,7 +880,7 @@ Load balancers can also help with horizontal scaling, improving performance and
## Reverse proxy (web server)
-
+
Source: Wikipedia
@@ -831,7 +925,7 @@ Additional benefits include:
## Application layer
-
+
Source: Intro to architecting systems for scale
@@ -866,7 +960,7 @@ Systems such as [Consul](https://www.consul.io/docs/index.html), [Etcd](https://
## Database
-
+
Source: Scaling up to your first 10 million users
@@ -889,7 +983,7 @@ There are many techniques to scale a relational database: **master-slave replica
The master serves reads and writes, replicating writes to one or more slaves, which serve only reads. Slaves can also replicate to additional slaves in a tree-like fashion. If the master goes offline, the system can continue to operate in read-only mode until a slave is promoted to a master or a new master is provisioned.
-
+
Source: Scalability, availability, stability, patterns
@@ -904,7 +998,7 @@ The master serves reads and writes, replicating writes to one or more slaves, wh
Both masters serve reads and writes and coordinate with each other on writes. If either master goes down, the system can continue to operate with both reads and writes.
-
+
Source: Scalability, availability, stability, patterns
@@ -932,7 +1026,7 @@ Both masters serve reads and writes and coordinate with each other on writes. I
#### Federation
-
+
Source: Scaling up to your first 10 million users
@@ -953,7 +1047,7 @@ Federation (or functional partitioning) splits up databases by function. For ex
#### Sharding
-
+
Source: Scalability, availability, stability, patterns
@@ -1099,7 +1193,7 @@ Document stores provide high flexibility and are often used for working with occ
#### Wide column store
-
+
Source: SQL & NoSQL, a brief history
@@ -1122,7 +1216,7 @@ Wide column stores offer high availability and high scalability. They are often
#### Graph database
-
+
Source: Graph database
@@ -1151,7 +1245,7 @@ Graphs databases offer high performance for data models with complex relationshi
### SQL or NoSQL
-
+
Source: Transitioning from RDBMS to NoSQL
@@ -1193,7 +1287,7 @@ Sample data well-suited for **NoSQL**:
## Cache
-
+
Source: Scalable system design patterns
@@ -1264,7 +1358,7 @@ Since you can only store a limited amount of data in cache, you'll need to deter
#### Cache-aside
-
+
Source: From cache to in-memory data grid
@@ -1302,7 +1396,7 @@ Subsequent reads of data added to cache are fast. Cache-aside is also referred
#### Write-through
-
+
Source: Scalability, availability, stability, patterns
@@ -1337,7 +1431,7 @@ Write-through is a slow overall operation due to the write operation, but subseq
#### Write-behind (write-back)
-
+
Source: Scalability, availability, stability, patterns
@@ -1355,7 +1449,7 @@ In write-behind, the application does the following:
#### Refresh-ahead
-
+
Source: From cache to in-memory data grid
@@ -1387,7 +1481,7 @@ Refresh-ahead can result in reduced latency vs read-through if the cache can acc
## Asynchronism
-
+
Source: Intro to architecting systems for scale
@@ -1450,7 +1544,7 @@ Once the transaction is committed, a background worker reads the "process paymen
## Communication
-
+
Source: OSI 7 layer model
@@ -1482,7 +1576,7 @@ HTTP is an application layer protocol relying on lower-level protocols such as *
### Transmission control protocol (TCP)
-
+
Source: How to make a multiplayer game
@@ -1508,7 +1602,7 @@ Use TCP over UDP when:
### User datagram protocol (UDP)
-
+
Source: How to make a multiplayer game
@@ -1539,7 +1633,7 @@ Use UDP over TCP when:
### Remote procedure call (RPC)
-
+
Source: Crack the system design interview
@@ -1766,7 +1860,7 @@ Handy metrics based on numbers above:
> Articles on how real world systems are designed.
-
+
Source: Twitter timelines at scale
diff --git a/docs/en/index.md b/docs/en/index.md
index 9bc5805c..696ed395 100644
--- a/docs/en/index.md
+++ b/docs/en/index.md
@@ -27,7 +27,7 @@ Together, we can create a state-of-the-art primer that reflects the realities of
## What's New?
-See [System Design at a Glance]([./design-glance.md](https://github.com/ido777/system-design-primer-update/blob/main/CHANGELOG.md)) for a comprehensive list of changes.
+See [CHANGELOG](https://github.com/ido777/system-design-primer-update/blob/main/CHANGELOG.md) for a comprehensive list of changes.
diff --git a/docs/ja/design-glance.md b/docs/ja/design-glance.md
index ba0bb7a2..72c5fc72 100644
--- a/docs/ja/design-glance.md
+++ b/docs/ja/design-glance.md
@@ -3,7 +3,7 @@
# システム設計入門
-
+
@@ -44,7 +44,7 @@
## 暗記カード
-
+
@@ -61,7 +61,7 @@
コード技術面接用の問題は[**こちら**](https://github.com/donnemartin/interactive-coding-challenges)
-
+
@@ -91,96 +91,182 @@
> それぞれのセクションはより学びを深めるような他の文献へのリンクが貼られています。
-
+
-* [システム設計トピック: まずはここから](#システム設計トピックス-まずはここから)
- * [Step 1: スケーラビリティに関する動画を見る](#ステップ-1-スケーラビリティに関する動画を観て復習する)
- * [Step 2: スケーラビリティに関する記事を読む](#ステップ-2-スケーラビリティに関する資料を読んで復習する)
- * [次のステップ](#次のステップ)
-* [パフォーマンス vs スケーラビリティ](#パフォーマンス-vs-スケーラビリティ)
-* [レイテンシー vs スループット](#レイテンシー-vs-スループット)
-* [可用性 vs 一貫性](#可用性-vs-一貫性)
- * [CAP理論](#cap-理論)
- * [CP - 一貫性(consistency)と分割性(partition)耐性](#cp---一貫性と分断耐性consistency-and-partition-tolerance)
- * [AP - 可用性(availability)と分割性(partition)耐性](#ap---可用性と分断耐性availability-and-partition-tolerance)
-* [一貫性 パターン](#一貫性パターン)
- * [弱い一貫性](#弱い一貫性)
- * [結果整合性](#結果整合性)
- * [強い一貫性](#強い一貫性)
-* [可用性 パターン](#可用性パターン)
- * [フェイルオーバー](#フェイルオーバー)
- * [レプリケーション](#レプリケーション)
-* [ドメインネームシステム(DNS)](#ドメインネームシステム)
-* [コンテンツデリバリーネットワーク(CDN)](#コンテンツデリバリーネットワークcontent-delivery-network)
- * [プッシュCDN](#プッシュcdn)
- * [プルCDN](#プルcdn)
-* [ロードバランサー](#ロードバランサー)
- * [アクティブ/パッシブ構成](#アクティブパッシブ)
- * [アクティブ/アクティブ構成](#アクティブアクティブ)
- * [Layer 4 ロードバランシング](#layer-4-ロードバランシング)
- * [Layer 7 ロードバランシング](#layer-7-ロードバランシング)
- * [水平スケーリング](#水平スケーリング)
-* [リバースプロキシ (WEBサーバー)](#リバースプロキシwebサーバー)
- * [ロードバランサー vs リバースプロキシ](#ロードバランサー-vs-リバースプロキシ)
-* [アプリケーションレイヤー](#アプリケーション層)
- * [マイクロサービス](#マイクロサービス)
- * [サービスディスカバリー](#service-discovery)
-* [データベース](#データベース)
- * [リレーショナルデータベースマネジメントシステム (RDBMS)](#リレーショナルデータベースマネジメントシステム-rdbms)
- * [マスター/スレーブ レプリケーション](#マスタースレーブ-レプリケーション)
- * [マスター/マスター レプリケーション](#マスターマスター-レプリケーション)
- * [フェデレーション](#federation)
- * [シャーディング](#シャーディング)
- * [デノーマライゼーション](#非正規化)
- * [SQL チューニング](#sqlチューニング)
- * [NoSQL](#nosql)
- * [キー/バリューストア](#キーバリューストア)
- * [ドキュメントストア](#ドキュメントストア)
- * [ワイドカラムストア](#ワイドカラムストア)
- * [グラフ データベース](#グラフデータベース)
- * [SQL or NoSQL](#sqlかnosqlか)
-* [キャッシュ](#キャッシュ)
- * [クライアントキャッシング](#クライアントキャッシング)
- * [CDNキャッシング](#cdnキャッシング)
- * [Webサーバーキャッシング](#webサーバーキャッシング)
- * [データベースキャッシング](#データベースキャッシング)
- * [アプリケーションキャッシング](#アプリケーションキャッシング)
- * [データベースクエリレベルでキャッシングする](#データベースクエリレベルでのキャッシング)
- * [オブジェクトレベルでキャッシングする](#オブジェクトレベルでのキャッシング)
- * [いつキャッシュを更新するのか](#いつキャッシュを更新するか)
- * [キャッシュアサイド](#キャッシュアサイド)
- * [ライトスルー](#ライトスルー)
- * [ライトビハインド (ライトバック)](#ライトビハインド-ライトバック)
- * [リフレッシュアヘッド](#リフレッシュアヘッド)
-* [非同期処理](#非同期処理)
- * [メッセージキュー](#メッセージキュー)
- * [タスクキュー](#タスクキュー)
- * [バックプレッシャー](#バックプレッシャー)
-* [通信](#通信)
- * [伝送制御プロトコル (TCP)](#伝送制御プロトコル-tcp)
- * [ユーザデータグラムプロトコル (UDP)](#ユーザデータグラムプロトコル-udp)
- * [遠隔手続呼出 (RPC)](#遠隔手続呼出-rpc)
- * [Representational state transfer (REST)](#representational-state-transfer-rest)
-* [セキュリティ](#セキュリティ)
-* [補遺](#補遺)
- * [2の乗数表](#2の乗数表)
- * [全てのプログラマーが知るべきレイテンシー値](#全てのプログラマーが知るべきレイテンシー値)
- * [他のシステム設計面接例題](#他のシステム設計面接例題)
- * [実世界でのアーキテクチャ](#実世界のアーキテクチャ)
- * [各企業のアーキテクチャ](#各企業のアーキテクチャ)
- * [企業のエンジニアブログ](#企業のエンジニアブログ)
-* [作業中](#進行中の作業)
-* [クレジット](#クレジット)
-* [連絡情報](#contact-info)
-* [ライセンス](#license)
+- [システム設計入門](#システム設計入門)
+ - [動機・目的](#動機目的)
+ - [大規模システムの設計を学ぶ](#大規模システムの設計を学ぶ)
+ - [オープンソースコミュニティから学ぶ](#オープンソースコミュニティから学ぶ)
+ - [システム設計面接課題に備える](#システム設計面接課題に備える)
+ - [暗記カード](#暗記カード)
+ - [コーディング技術課題用の問題: 練習用インタラクティブアプリケーション](#コーディング技術課題用の問題-練習用インタラクティブアプリケーション)
+ - [コントリビュート](#コントリビュート)
+ - [システム設計目次](#システム設計目次)
+ - [学習指針](#学習指針)
+ - [システム設計面接にどのようにして臨めばいいか](#システム設計面接にどのようにして臨めばいいか)
+ - [ステップ 1: システム使用例の概要、制約、推計値等を聞き出し、まとめる](#ステップ-1-システム使用例の概要制約推計値等を聞き出しまとめる)
+ - [ステップ 2: 高レベルのシステム設計を組み立てる](#ステップ-2-高レベルのシステム設計を組み立てる)
+ - [ステップ 3: 核となるコンポーネントを設計する](#ステップ-3-核となるコンポーネントを設計する)
+ - [ステップ 4: システム設計のスケール](#ステップ-4-システム設計のスケール)
+ - [ちょっとした暗算問題](#ちょっとした暗算問題)
+ - [文献とその他の参考資料](#文献とその他の参考資料)
+ - [システム設計課題例とその解答](#システム設計課題例とその解答)
+ - [Pastebin.com (もしくは Bit.ly) の設計](#pastebincom-もしくは-bitly-の設計)
+ - [Twitterタイムライン\&検索 (もしくはFacebookフィード\&検索)の設計](#twitterタイムライン検索-もしくはfacebookフィード検索の設計)
+ - [ウェブクローラーの設計](#ウェブクローラーの設計)
+ - [Mint.comの設計](#mintcomの設計)
+ - [SNSサービスのデータ構造の設計](#snsサービスのデータ構造の設計)
+ - [検索エンジンのキー/バリュー構造の設計](#検索エンジンのキーバリュー構造の設計)
+ - [Amazonのカテゴリ毎の売り上げランキングの設計](#amazonのカテゴリ毎の売り上げランキングの設計)
+ - [AWS上で100万人規模のユーザーを捌くサービスの設計](#aws上で100万人規模のユーザーを捌くサービスの設計)
+ - [オブジェクト指向設計問題と解答](#オブジェクト指向設計問題と解答)
+ - [システム設計トピックス: まずはここから](#システム設計トピックス-まずはここから)
+ - [ステップ 1: スケーラビリティに関する動画を観て復習する](#ステップ-1-スケーラビリティに関する動画を観て復習する)
+ - [ステップ 2: スケーラビリティに関する資料を読んで復習する](#ステップ-2-スケーラビリティに関する資料を読んで復習する)
+ - [次のステップ](#次のステップ)
+ - [パフォーマンス vs スケーラビリティ](#パフォーマンス-vs-スケーラビリティ)
+ - [その他の参考資料、ページ](#その他の参考資料ページ)
+ - [レイテンシー vs スループット](#レイテンシー-vs-スループット)
+ - [その他の参考資料、ページ](#その他の参考資料ページ-1)
+ - [可用性 vs 一貫性](#可用性-vs-一貫性)
+ - [CAP 理論](#cap-理論)
+ - [CP - 一貫性と分断耐性(consistency and partition tolerance)](#cp---一貫性と分断耐性consistency-and-partition-tolerance)
+ - [AP - 可用性と分断耐性(availability and partition tolerance)](#ap---可用性と分断耐性availability-and-partition-tolerance)
+ - [その他の参考資料、ページ](#その他の参考資料ページ-2)
+ - [一貫性パターン](#一貫性パターン)
+ - [弱い一貫性](#弱い一貫性)
+ - [結果整合性](#結果整合性)
+ - [強い一貫性](#強い一貫性)
+ - [その他の参考資料、ページ](#その他の参考資料ページ-3)
+ - [可用性パターン](#可用性パターン)
+ - [フェイルオーバー](#フェイルオーバー)
+ - [アクティブ・パッシブ](#アクティブパッシブ)
+ - [アクティブ・アクティブ](#アクティブアクティブ)
+ - [短所: フェイルオーバー](#短所-フェイルオーバー)
+ - [レプリケーション](#レプリケーション)
+ - [マスター・スレーブ と マスター・マスター](#マスタースレーブとマスターマスター)
+ - [ドメインネームシステム](#ドメインネームシステム)
+ - [欠点: DNS](#欠点-dns)
+ - [その他の参考資料、ページ](#その他の参考資料ページ-4)
+ - [コンテンツデリバリーネットワーク(Content delivery network)](#コンテンツデリバリーネットワークcontent-delivery-network)
+ - [プッシュCDN](#プッシュcdn)
+ - [プルCDN](#プルcdn)
+ - [欠点: CDN](#欠点-cdn)
+ - [その他の参考資料、ページ](#その他の参考資料ページ-5)
+ - [ロードバランサー](#ロードバランサー)
+ - [Layer 4 ロードバランシング](#layer-4-ロードバランシング)
+ - [Layer 7 ロードバランシング](#layer-7-ロードバランシング)
+ - [水平スケーリング](#水平スケーリング)
+ - [欠点: 水平スケーリング](#欠点-水平スケーリング)
+ - [欠点: ロードバランサー](#欠点-ロードバランサー)
+ - [その他の参考資料、ページ](#その他の参考資料ページ-6)
+ - [リバースプロキシ(webサーバー)](#リバースプロキシwebサーバー)
+ - [ロードバランサー vs リバースプロキシ](#ロードバランサー-vs-リバースプロキシ)
+ - [欠点: リバースプロキシ](#欠点-リバースプロキシ)
+ - [その他の参考資料、ページ](#その他の参考資料ページ-7)
+ - [アプリケーション層](#アプリケーション層)
+ - [マイクロサービス](#マイクロサービス)
+ - [サービスディスカバリー](#サービスディスカバリー)
+ - [欠点: アプリケーション層](#欠点-アプリケーション層)
+ - [その他の参考資料、ページ](#その他の参考資料ページ-8)
+ - [データベース](#データベース)
+ - [リレーショナルデータベースマネジメントシステム (RDBMS)](#リレーショナルデータベースマネジメントシステム-rdbms)
+ - [マスタースレーブ レプリケーション](#マスタースレーブ-レプリケーション)
+ - [欠点: マスタースレーブ レプリケーション](#欠点-マスタースレーブ-レプリケーション)
+ - [マスターマスター レプリケーション](#マスターマスター-レプリケーション)
+ - [欠点: マスターマスター レプリケーション](#欠点-マスターマスター-レプリケーション)
+ - [欠点: レプリケーション](#欠点-レプリケーション)
+ - [その他の参考資料、ページ: レプリケーション](#その他の参考資料ページ-レプリケーション)
+ - [Federation](#federation)
+ - [欠点: federation](#欠点-federation)
+ - [その他の参考資料、ページ: federation](#その他の参考資料ページ-federation)
+ - [シャーディング](#シャーディング)
+ - [欠点: シャーディング](#欠点-シャーディング)
+ - [その他の参考資料、ページ: シャーディング](#その他の参考資料ページ-シャーディング)
+ - [非正規化](#非正規化)
+ - [欠点: 非正規化](#欠点-非正規化)
+ - [その他の参考資料、ページ: 非正規化](#その他の参考資料ページ-非正規化)
+ - [SQLチューニング](#sqlチューニング)
+ - [スキーマを絞る](#スキーマを絞る)
+ - [インデックスを効果的に用いる](#インデックスを効果的に用いる)
+ - [高負荷なジョインを避ける](#高負荷なジョインを避ける)
+ - [テーブルのパーティション](#テーブルのパーティション)
+ - [クエリキャッシュを調整する](#クエリキャッシュを調整する)
+ - [その他の参考資料、ページ: SQLチューニング](#その他の参考資料ページ-sqlチューニング)
+ - [NoSQL](#nosql)
+ - [キーバリューストア](#キーバリューストア)
+ - [その他の参考資料、ページ: キーバリューストア](#その他の参考資料ページ-キーバリューストア)
+ - [ドキュメントストア](#ドキュメントストア)
+ - [その他の参考資料、ページ: ドキュメントストア](#その他の参考資料ページ--ドキュメントストア)
+ - [ワイドカラムストア](#ワイドカラムストア)
+ - [その他の参考資料、ページ: ワイドカラムストア](#その他の参考資料ページ--ワイドカラムストア)
+ - [グラフデータベース](#グラフデータベース)
+ - [その他の参考資料、ページ: グラフ](#その他の参考資料ページ--グラフ)
+ - [その他の参考資料、ページ: NoSQL](#その他の参考資料ページ--nosql)
+ - [SQLか?NoSQLか?](#sqlかnosqlか)
+ - [その他の参考資料、ページ: SQLもしくはNoSQL](#その他の参考資料ページ--sqlもしくはnosql)
+ - [キャッシュ](#キャッシュ)
+ - [クライアントキャッシング](#クライアントキャッシング)
+ - [CDNキャッシング](#cdnキャッシング)
+ - [Webサーバーキャッシング](#webサーバーキャッシング)
+ - [データベースキャッシング](#データベースキャッシング)
+ - [アプリケーションキャッシング](#アプリケーションキャッシング)
+ - [データベースクエリレベルでのキャッシング](#データベースクエリレベルでのキャッシング)
+ - [オブジェクトレベルでのキャッシング](#オブジェクトレベルでのキャッシング)
+ - [いつキャッシュを更新するか](#いつキャッシュを更新するか)
+ - [キャッシュアサイド](#キャッシュアサイド)
+ - [欠点: キャッシュアサイド](#欠点-キャッシュアサイド)
+ - [ライトスルー](#ライトスルー)
+ - [欠点: ライトスルー](#欠点-ライトスルー)
+ - [ライトビハインド (ライトバック)](#ライトビハインド-ライトバック)
+ - [欠点: ライトビハインド](#欠点-ライトビハインド)
+ - [リフレッシュアヘッド](#リフレッシュアヘッド)
+ - [欠点: リフレッシュアヘッド](#欠点-リフレッシュアヘッド)
+ - [欠点: キャッシュ](#欠点-キャッシュ)
+ - [その他の参考資料、ページ](#その他の参考資料ページ-9)
+ - [非同期処理](#非同期処理)
+ - [メッセージキュー](#メッセージキュー)
+ - [タスクキュー](#タスクキュー)
+ - [バックプレッシャー](#バックプレッシャー)
+ - [欠点: 非同期処理](#欠点-非同期処理)
+ - [その他の参考資料、ページ](#その他の参考資料ページ-10)
+ - [通信](#通信)
+ - [Hypertext transfer protocol (HTTP)](#hypertext-transfer-protocol-http)
+ - [その他の参考資料、ページ: HTTP](#その他の参考資料ページ-http)
+ - [伝送制御プロトコル (TCP)](#伝送制御プロトコル-tcp)
+ - [ユーザデータグラムプロトコル (UDP)](#ユーザデータグラムプロトコル-udp)
+ - [その他の参考資料、ページ: TCP と UDP](#その他の参考資料ページ-tcp-と-udp)
+ - [遠隔手続呼出 (RPC)](#遠隔手続呼出-rpc)
+ - [欠点: RPC](#欠点-rpc)
+ - [Representational state transfer (REST)](#representational-state-transfer-rest)
+ - [欠点: REST](#欠点-rest)
+ - [RPCとREST比較](#rpcとrest比較)
+ - [その他の参考資料、ページ: REST と RPC](#その他の参考資料ページ-rest-と-rpc)
+ - [セキュリティ](#セキュリティ)
+ - [その他の参考資料、ページ:](#その他の参考資料ページ-11)
+ - [補遺](#補遺)
+ - [2の乗数表](#2の乗数表)
+ - [その他の参考資料、ページ:](#その他の参考資料ページ-12)
+ - [全てのプログラマーが知るべきレイテンシー値](#全てのプログラマーが知るべきレイテンシー値)
+ - [レイテンシーの視覚的表](#レイテンシーの視覚的表)
+ - [その他の参考資料、ページ:](#その他の参考資料ページ-13)
+ - [他のシステム設計面接例題](#他のシステム設計面接例題)
+ - [実世界のアーキテクチャ](#実世界のアーキテクチャ)
+ - [各企業のアーキテクチャ](#各企業のアーキテクチャ)
+ - [企業のエンジニアブログ](#企業のエンジニアブログ)
+ - [その他の参考資料、ページ:](#その他の参考資料ページ-14)
+ - [進行中の作業](#進行中の作業)
+ - [クレジット](#クレジット)
+ - [Contact info](#contact-info)
+ - [License](#license)
## 学習指針
> 学習スパンに応じてみるべきトピックス (short, medium, long)
-
+
**Q: 面接のためには、ここにあるものすべてをやらないといけないのでしょうか?**
@@ -302,49 +388,49 @@
[問題と解答を見る](solutions/system_design/pastebin/README.md)
-
+
### Twitterタイムライン&検索 (もしくはFacebookフィード&検索)の設計
[問題と解答を見る](solutions/system_design/twitter/README.md)
-
+
### ウェブクローラーの設計
[問題と解答を見る](solutions/system_design/web_crawler/README.md)
-
+
### Mint.comの設計
[問題と解答を見る](solutions/system_design/mint/README.md)
-
+
### SNSサービスのデータ構造の設計
[問題と解答を見る](solutions/system_design/social_graph/README.md)
-
+
### 検索エンジンのキー/バリュー構造の設計
[問題と解答を見る](solutions/system_design/query_cache/README.md)
-
+
### Amazonのカテゴリ毎の売り上げランキングの設計
[問題と解答を見る](solutions/system_design/sales_rank/README.md)
-
+
### AWS上で100万人規模のユーザーを捌くサービスの設計
[問題と解答を見る](solutions/system_design/scaling_aws/README.md)
-
+
## オブジェクト指向設計問題と解答
@@ -436,7 +522,7 @@
### CAP 理論
-
+
Source: CAP theorem revisited
@@ -531,7 +617,7 @@
## ドメインネームシステム
-
+
Source: DNS security presentation
@@ -569,7 +655,7 @@ DNSは少数のオーソライズされたサーバーが上位に位置する
## コンテンツデリバリーネットワーク(Content delivery network)
-
+
Source: Why use a CDN
@@ -610,7 +696,7 @@ CDNを用いてコンテンツを配信することで以下の二つの理由
## ロードバランサー
-
+
Source: Scalable system design patterns
@@ -680,7 +766,7 @@ Layer 7 ロードバランサーは [アプリケーションレイヤー](#通
## リバースプロキシ(webサーバー)
-
+
Source: Wikipedia
@@ -723,7 +809,7 @@ Layer 7 ロードバランサーは [アプリケーションレイヤー](#通
## アプリケーション層
-
+
Source: Intro to architecting systems for scale
@@ -760,7 +846,7 @@ Layer 7 ロードバランサーは [アプリケーションレイヤー](#通
## データベース
-
+
Source: Scaling up to your first 10 million users
@@ -783,7 +869,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ
マスターデータベースが読み取りと書き込みを処理し、書き込みを一つ以上のスレーブデータベースに複製します。スレーブデータベースは読み取りのみを処理します。スレーブデータベースは木構造のように追加のスレーブにデータを複製することもできます。マスターデータベースがオフラインになった場合には、いずれかのスレーブがマスターに昇格するか、新しいマスターデータベースが追加されるまでは読み取り専用モードで稼働します。
-
+
Source: Scalability, availability, stability, patterns
@@ -798,7 +884,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ
いずれのマスターも読み取り書き込みの両方に対応する。書き込みに関してはそれぞれ協調する。いずれかのマスターが落ちても、システム全体としては読み書き両方に対応したまま運用できる。
-
+
Source: Scalability, availability, stability, patterns
@@ -826,7 +912,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ
#### Federation
-
+
Source: Scaling up to your first 10 million users
@@ -847,7 +933,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ
#### シャーディング
-
+
Source: Scalability, availability, stability, patterns
@@ -991,7 +1077,7 @@ NoSQL は **key-value store**、 **document-store**、 **wide column store**、
#### ワイドカラムストア
-
+
Source: SQL & NoSQL, a brief history
@@ -1014,7 +1100,7 @@ Googleは[Bigtable](http://www.read.seas.harvard.edu/~kohler/class/cs239-w08/cha
#### グラフデータベース
-
+
Source: Graph database
@@ -1042,7 +1128,7 @@ Googleは[Bigtable](http://www.read.seas.harvard.edu/~kohler/class/cs239-w08/cha
### SQLか?NoSQLか?
-
+
Source: Transitioning from RDBMS to NoSQL
@@ -1084,7 +1170,7 @@ NoSQLに適するサンプルデータ:
## キャッシュ
-
+
Source: Scalable system design patterns
@@ -1155,7 +1241,7 @@ Redisはさらに以下のような機能を備えています:
#### キャッシュアサイド
-
+
Source: From cache to in-memory data grid
@@ -1191,7 +1277,7 @@ def get_user(self, user_id):
#### ライトスルー
-
+
Source: Scalability, availability, stability, patterns
@@ -1226,7 +1312,7 @@ def set_user(user_id, values):
#### ライトビハインド (ライトバック)
-
+
Source: Scalability, availability, stability, patterns
@@ -1244,7 +1330,7 @@ def set_user(user_id, values):
#### リフレッシュアヘッド
-
+
Source: From cache to in-memory data grid
@@ -1276,7 +1362,7 @@ def set_user(user_id, values):
## 非同期処理
-
+
Source: Intro to architecting systems for scale
@@ -1322,7 +1408,7 @@ def set_user(user_id, values):
## 通信
-
+
Source: OSI 7 layer model
@@ -1354,7 +1440,7 @@ HTTPは**TCP** や **UDP** などの低級プロトコルに依存している
### 伝送制御プロトコル (TCP)
-
+
Source: How to make a multiplayer game
@@ -1378,7 +1464,7 @@ TCPは高い依存性を要し、時間制約が厳しくないものに適し
### ユーザデータグラムプロトコル (UDP)
-
+
Source: How to make a multiplayer game
@@ -1407,7 +1493,7 @@ TCPよりもUDPを使うのは:
### 遠隔手続呼出 (RPC)
-
+
Source: Crack the system design interview
@@ -1633,7 +1719,7 @@ Notes
> 世の中のシステムがどのように設計されているかについての記事
-
+
Source: Twitter timelines at scale
diff --git a/docs/tr/design-glance.md b/docs/tr/design-glance.md
index 420b7c92..69e35dbe 100644
--- a/docs/tr/design-glance.md
+++ b/docs/tr/design-glance.md
@@ -5,7 +5,7 @@
# Sistem Tasarım Rehberi
-
+
@@ -46,7 +46,7 @@ Mülakata hazırlık için diğer konular:
## Anki bilgi kartları
-
+
@@ -63,7 +63,7 @@ Her zaman ve her yerde kullanılabilir.
[**Kodlama Mülakatları**](https://github.com/donnemartin/interactive-coding-challenges)na hazırlanmak için kaynak mı arıyorsunuz?
-
+
@@ -93,97 +93,188 @@ Lütfen [katkı kurallarını](CONTRIBUTING.md) inceleyin.
> Her bölüm, ek kaynaklara bağlantılar içerir.
-
+
-* [Sistem tasarımı konuları: buradan başlayın](#sistem-tasarımı-konuları-buradan-başlayın)
- * [1. Adım: Ölçeklenebilirlik video dersini inceleyin](#1-adım-ölçeklenebilirlik-video-dersini-inceleyin)
- * [2. Adım: Ölçeklenebilirlik makalesini inceleyin](#2-adım-ölçeklenebilirlik-makalesini-inceleyin)
- * [Sonraki adımlar](#sonraki-adımlar)
-* [Performans veya ölçeklenebilirlik](#performans-veya-ölçeklenebilirlik)
-* [Gecikme veya verim](#gecikme-veya-verim)
-* [Kullanılabilirlik veya tutarlılık](#kullanılabilirlik-veya-tutarlılık)
- * [CAP teoremi](#cap-teoremi)
- * [CP - Tutarlılık ve bölüm toleransı](#cp--tutarlılık-ve-bölüm-toleransı)
- * [AP - Kullanılabilirlik ve bölüm toleransı](#ap--kullanılabilirlik-ve-bölüm-toleransı)
-* [Tutarlılık modelleri](#tutarlılık-modelleri)
- * [Zayıf tutarlılık](#zayıf-tutarlılık)
- * [Nihai tutarlılık](#Nihai-tutarlılık)
- * [Güçlü tutarlılık](#güçlü-tutarlılık)
-* [Kullanılabilirlik modları](#kullanılabilirlik-modları)
- * [Yük devretme](#yük-devretme)
- * [Çoğaltma](#çoğaltma)
- * [Sayılarla erişilebilirlik](#sayılarla-erişilebilirlik)
-* [Alan adı sistemi (DNS)](#alan-adı-sistemi-dns)
-* [İçerik dağıtım ağı (CDN)](#içerik-dağıtım-ağı-cdn)
- * [Push CDN](#push-cdn)
- * [Pull CDN](#pull-cdn)
-* [Yük dengeleyici (Load balancer)](#yük-dengeleyici-load-balancer)
- * [Aktif-pasif)](#aktif-pasif)
- * [Aktif-aktif)](#aktif-aktif)
- * [Katman 4 yük dengeleyicisi](#katman-4-yük-dengeleyicisi)
- * [Katman 7 yük dengeleyicisi](#katman-7-yük-dengeleyicisi)
- * [Yatay ölçekleme](#yatay-ölçekleme)
-* [Ters proxy (web sunucusu)](#ters-proxy-web-sunucusu)
- * [Yük dengeleyici ve ters proxy](#yük-dengeleyici-ve-ters-proxy)
-* [Uygulama katmanı](#uygulama-katmanı)
- * [Mikroservisler](#mikroservisler)
- * [Servis keşfi](#servis-keşfi)
-* [Veritabanı](#veritabanı)
- * [İlişkisel veritabanı yönetim sistemi (RDBMS)](#ilişkisel-veritabanı-yönetim-sistemi-rdbms)
- * [Master-slave çoğaltma](#master-slave-çoğaltma)
- * [Master-master çoğaltma](#master-master-çoğaltma)
- * [Federasyon](#federasyon)
- * [Parçalama](#parçalama)
- * [Denormalizasyon](#denormalizasyon)
- * [SQL ayarlama (SQL tuning)](#sql-ayarlama-sql-tuning)
- * [NoSQL](#nosql)
- * [Anahtar/değer deposu](#anahtar-değer-deposu)
- * [Belge deposu](#belge-deposu)
- * [Geniş sütun deposu](#geniş-sütun-deposu)
- * [Grafik veritabanı](#grafik-veritabanı)
- * [SQL veya NoSQL](#sql-veya-nosql)
-* [Önbellek](#önbellek)
- * [İstemci önbelleği](#istemci-önbelleği)
- * [CDN önbelleği](#cdn-önbelleği)
- * [Web sunucusu önbelleği](#web-sunucusu-önbelleği)
- * [Veritabanı önbelleği](#veritabanı-önbelleği)
- * [Uygulama Önbelleği](#uygulama-önbelleği)
- * [Veritabanı sorgu düzeyinde önbellekleme](#veritabanı-sorgu-düzeyinde-önbellekleme)
- * [Nesne düzeyinde önbellekleme](#nesne-düzeyinde-önbellekleme)
- * [Önbellek ne zaman güncellenmeli](#önbellek-ne-zaman-güncellenmeli)
- * [Cache-aside](#cache-aside)
- * [Üzerine yazma (write-through)](#üzerine-yazma-write-through)
- * [Geri yazma (write-behind)](#geri-yazma-write-behind)
- * [Önbelleği önceden yenileme (refresh-ahead)](#önbelleği-önceden-yenileme-refresh-ahead)
-* [Asenkronizm](#asenkronizm)
- * [Mesaj kuyrukları](#mesaj-kuyrukları)
- * [Görev kuyrukları](#görev-kuyrukları)
- * [Back pressure](#back-pressure)
-* [İletişim](#iletişim)
- * [İletim kontrol protokolü (TCP)](#iletim-kontrol-protokolü-tcp)
- * [Kullanıcı datagram protokolü (UDP)](#kullanıcı-datagram-protokolü-udp)
- * [Uzaktan yordam çağrısı (RPC)](#uzaktan-yordam-çağrısı-rpc)
- * [Temsili durum transferi (REST)](#temsili-durum-transferi-rest)
-* [Güvenlik](#güvenlik)
- *[EK](#ek)
- * [İkinin kuvveti tablosu](#ikinin-kuvveti-tablosu)
- * [Her programcının bilmesi gereken gecikme sayıları](#her-programcının-bilmesi-gereken-gecikme-sayıları)
- * [Diğer sistem tasarımı mülakat soruları](#diğer-sistem-tasarımı-mülakat-soruları)
- * [Gerçek dünya mimarileri](#gerçek-dünya-mimarileri)
- * [Şirketlerin sistem mimarileri](#şirketlerin-sistem-mimarileri)
- *[Şirketlerin mühendislik blogları](#şirketlerin-mühendislik-blogları)
-*[Geliştirme aşamasında](#geliştirme-aşamasında)
-* [Katkıda bulunanlar](#katkıda-bulunanlar)
-* [İletişim](#iletişim)
-* [Lisans](#lisans)
+- [Sistem Tasarım Rehberi](#sistem-tasarım-rehberi)
+ - [Amaç](#amaç)
+ - [Büyük sistemlerin nasıl tasarlacağını öğrenin](#büyük-sistemlerin-nasıl-tasarlacağını-öğrenin)
+ - [Açık kaynak topluluğundan bilgi edinin](#açık-kaynak-topluluğundan-bilgi-edinin)
+ - [Sistem tasarımı görüşmelerine hazırlanın](#sistem-tasarımı-görüşmelerine-hazırlanın)
+ - [Anki bilgi kartları](#anki-bilgi-kartları)
+ - [Kod Kaynakları: Etkileşimli Kodlama Yarışmaları](#kod-kaynakları-etkileşimli-kodlama-yarışmaları)
+ - [Katkı](#katkı)
+ - [Sistem tasarımı konuları dizini](#sistem-tasarımı-konuları-dizini)
+ - [Çalışma rehberi](#çalışma-rehberi)
+ - [Sistem tasarımı mülakat sorusu nasıl ele alınır?](#sistem-tasarımı-mülakat-sorusu-nasıl-ele-alınır)
+ - [Adım 1: Kullanım senaryolarını, kısıtlamaları ve varsayımları açıklayın](#adım-1-kullanım-senaryolarını-kısıtlamaları-ve-varsayımları-açıklayın)
+ - [Adım 2: Üst düzey bir tasarım oluşturun](#adım-2-üst-düzey-bir-tasarım-oluşturun)
+ - [Adım 3: Temel bileşenleri tasarlayın](#adım-3-temel-bileşenleri-tasarlayın)
+ - [Adım 4: Tasarımı genişletin](#adım-4-tasarımı-genişletin)
+ - [Tahmini hesaplama](#tahmini-hesaplama)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma)
+ - [Sistem tasarımı mülakat soruları ve çözümleri](#sistem-tasarımı-mülakat-soruları-ve-çözümleri)
+ - [Pastebin.com(veya Bit.ly) tasarlayın](#pastebincomveya-bitly-tasarlayın)
+ - [Twitter zaman çizelgesi ve arama(veya Facebook haber akışı ve arama) tasarlayın](#twitter-zaman-çizelgesi-ve-aramaveya-facebook-haber-akışı-ve-arama-tasarlayın)
+ - [Bir web tarayıcısı tasarlayın](#bir-web-tarayıcısı-tasarlayın)
+ - [Mint.com tasarlayın](#mintcom-tasarlayın)
+ - [Sosyal ağ için veri yapılarını tasarlayın](#sosyal-ağ-için-veri-yapılarını-tasarlayın)
+ - [Arama motorları için bir anahtar/değer(key-value) deposu tasarlayın](#arama-motorları-için-bir-anahtardeğerkey-value-deposu-tasarlayın)
+ - [Amazon'un satış sıralamasını kategori özellikleri aracılığıyla tasarlayın](#amazonun-satış-sıralamasını-kategori-özellikleri-aracılığıyla-tasarlayın)
+ - [AWS'de milyon kullanıcılı bir sistem tasarlayın](#awsde-milyon-kullanıcılı-bir-sistem-tasarlayın)
+ - [Nesne yönelimli tasarım mülakat soruları ve çözümleri](#nesne-yönelimli-tasarım-mülakat-soruları-ve-çözümleri)
+ - [Sistem tasarımı konuları: buradan başlayın](#sistem-tasarımı-konuları-buradan-başlayın)
+ - [1. Adım: Ölçeklenebilirlik video dersini inceleyin](#1-adım-ölçeklenebilirlik-video-dersini-inceleyin)
+ - [2. Adım: Ölçeklenebilirlik makalesini inceleyin](#2-adım-ölçeklenebilirlik-makalesini-inceleyin)
+ - [Sonraki adımlar](#sonraki-adımlar)
+ - [Performans veya ölçeklenebilirlik](#performans-veya-ölçeklenebilirlik)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma-1)
+ - [Gecikme veya verim](#gecikme-veya-verim)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma-2)
+ - [Kullanılabilirlik veya tutarlılık](#kullanılabilirlik-veya-tutarlılık)
+ - [CAP Teoremi](#cap-teoremi)
+ - [CP ─ Tutarlılık ve Bölüm Toleransı](#cp--tutarlılık-ve-bölüm-toleransı)
+ - [AP ─ Kullanılabilirlik ve Bölüm Toleransı](#ap--kullanılabilirlik-ve-bölüm-toleransı)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma-3)
+ - [Tutarlılık modelleri](#tutarlılık-modelleri)
+ - [Zayıf tutarlılık](#zayıf-tutarlılık)
+ - [Nihai tutarlılık](#nihai-tutarlılık)
+ - [Güçlü tutarlılık](#güçlü-tutarlılık)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma-4)
+ - [Kullanılabilirlik modları](#kullanılabilirlik-modları)
+ - [Yük devretme](#yük-devretme)
+ - [Aktif-pasif](#aktif-pasif)
+ - [Aktif-aktif](#aktif-aktif)
+ - [Dezavantaj: Yük Devretme](#dezavantaj-yük-devretme)
+ - [Çoğaltma](#çoğaltma)
+ - [Master-slave ve master-master](#master-slave-ve-master-master)
+ - [Sayılarla erişilebilirlik](#sayılarla-erişilebilirlik)
+ - [99.9% erişilebilirlik - 3 tane 9'a sahip hizmet](#999-erişilebilirlik---3-tane-9a-sahip-hizmet)
+ - [99.99% erişilebilirlik - 4 tane 9'a sahip hizmet](#9999-erişilebilirlik---4-tane-9a-sahip-hizmet)
+ - [Paralel ve sıralı erişilebilirlik](#paralel-ve-sıralı-erişilebilirlik)
+ - [Sıralı](#sıralı)
+ - [Paralel](#paralel)
+ - [Alan Adı Sistemi (DNS)](#alan-adı-sistemi-dns)
+ - [Dezavantaj(lar): Alan adı sistemi(DNS)](#dezavantajlar-alan-adı-sistemidns)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma-5)
+ - [İçerik Dağıtım Ağı (CDN)](#i̇çerik-dağıtım-ağı-cdn)
+ - [Push CDN](#push-cdn)
+ - [Pull CDN](#pull-cdn)
+ - [Dezavantaj(lar): CDN](#dezavantajlar-cdn)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma-6)
+ - [Yük dengeleyici (Load balancer)](#yük-dengeleyici-load-balancer)
+ - [Katman 4 yük dengeleyicisi](#katman-4-yük-dengeleyicisi)
+ - [Katman 7 yük dengeleyicisi](#katman-7-yük-dengeleyicisi)
+ - [Yatay ölçekleme](#yatay-ölçekleme)
+ - [Dezavantaj(lar): yatay ölçekleme](#dezavantajlar-yatay-ölçekleme)
+ - [Dezavantaj(lar): Yük Dengeleyici](#dezavantajlar-yük-dengeleyici)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma-7)
+ - [Ters proxy (web sunucusu)](#ters-proxy-web-sunucusu)
+ - [Yük dengeleyici ve ters proxy](#yük-dengeleyici-ve-ters-proxy)
+ - [Dezavantaj(lar): Ters proxy](#dezavantajlar-ters-proxy)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma-8)
+ - [Uygulama katmanı](#uygulama-katmanı)
+ - [Mikroservisler](#mikroservisler)
+ - [Servis keşfi](#servis-keşfi)
+ - [Dezavantaj(lar): Uygulama katmanı](#dezavantajlar-uygulama-katmanı)
+ - [Kaynaklar ve ek okuma](#kaynaklar-ve-ek-okuma-9)
+ - [Veritabanı](#veritabanı)
+ - [İlişkisel veritabanı yönetim sistemi (RDBMS)](#i̇lişkisel-veritabanı-yönetim-sistemi-rdbms)
+ - [Master-slave çoğaltma](#master-slave-çoğaltma)
+ - [Dezavantaj(lar): master-slave çoğaltma](#dezavantajlar-master-slave-çoğaltma)
+ - [Master-master çoğaltma](#master-master-çoğaltma)
+ - [Dezavantaj(lar): master-master](#dezavantajlar-master-master)
+ - [Dezavantaj(lar): çoğaltma](#dezavantajlar-çoğaltma)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma-10)
+ - [Federasyon](#federasyon)
+ - [Dezavantaj(lar): federasyon](#dezavantajlar-federasyon)
+ - [Kaynak(lar) ve ek okuma: federasyon](#kaynaklar-ve-ek-okuma-federasyon)
+ - [Parçalama](#parçalama)
+ - [Dezavantaj(lar): parçalama](#dezavantajlar-parçalama)
+ - [Kaynak(lar) ve ek okuma: parçalama](#kaynaklar-ve-ek-okuma-parçalama)
+ - [Denormalizasyon](#denormalizasyon)
+ - [Dezavantaj(lar): Denormalizasyon](#dezavantajlar-denormalizasyon)
+ - [Kaynak(lar) ve ek okuma: Denormalizasyon](#kaynaklar-ve-ek-okuma-denormalizasyon)
+ - [SQL ayarlama (SQL tuning)](#sql-ayarlama-sql-tuning)
+ - [Şemayı sınırlandırın](#şemayı-sınırlandırın)
+ - [Doğru dizini kullanın](#doğru-dizini-kullanın)
+ - [Pahalı birleştirme işlemlerinden kaçının](#pahalı-birleştirme-işlemlerinden-kaçının)
+ - [Veri tablosunu bölün](#veri-tablosunu-bölün)
+ - [Sorgu önbelleğini ayarlayın](#sorgu-önbelleğini-ayarlayın)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma-11)
+ - [NoSQL](#nosql)
+ - [Anahtar-değer deposu](#anahtar-değer-deposu)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma-12)
+ - [Belge deposu](#belge-deposu)
+ - [Kaynak(lar) ve ek okuma: belge deposu](#kaynaklar-ve-ek-okuma-belge-deposu)
+ - [Geniş sütun deposu](#geniş-sütun-deposu)
+ - [Kaynak(lar) ve ek okuma: geniş sütun depolama](#kaynaklar-ve-ek-okuma-geniş-sütun-depolama)
+ - [Grafik veritabanı](#grafik-veritabanı)
+ - [Kaynak(lar) ve ek okuma: grafik](#kaynaklar-ve-ek-okuma-grafik)
+ - [Kaynak(lar) ve ek okuma: NoSQL](#kaynaklar-ve-ek-okuma-nosql)
+ - [SQL veya NoSQL](#sql-veya-nosql)
+ - [Kaynak(lar) ve ek okuma: SQL veya NoSQL](#kaynaklar-ve-ek-okuma-sql-veya-nosql)
+ - [Önbellek](#önbellek)
+ - [İstemci önbelleği](#i̇stemci-önbelleği)
+ - [CDN önbelleği](#cdn-önbelleği)
+ - [Web sunucusu önbelleği](#web-sunucusu-önbelleği)
+ - [Veritabanı önbelleği](#veritabanı-önbelleği)
+ - [Uygulama önbelleği](#uygulama-önbelleği)
+ - [Veritabanı sorgu düzeyinde önbellekleme](#veritabanı-sorgu-düzeyinde-önbellekleme)
+ - [Nesne düzeyinde önbellekleme](#nesne-düzeyinde-önbellekleme)
+ - [Önbellek ne zaman güncellenmeli](#önbellek-ne-zaman-güncellenmeli)
+ - [Cache-aside](#cache-aside)
+ - [Dezavantaj(lar): cache-aside](#dezavantajlar-cache-aside)
+ - [Üzerine yazma (write-through)](#üzerine-yazma-write-through)
+ - [Dezavantaj(lar): üzerine yazma (write-through)](#dezavantajlar-üzerine-yazma-write-through)
+ - [Geri yazma (write-behind)](#geri-yazma-write-behind)
+ - [Dezavantaj(lar): geri yazma (write-behind)](#dezavantajlar-geri-yazma-write-behind)
+ - [Önbelleği önceden yenileme (refresh-ahead)](#önbelleği-önceden-yenileme-refresh-ahead)
+ - [Dezavantaj(lar): önbelleği önceden yenileme (refresh-ahead)](#dezavantajlar-önbelleği-önceden-yenileme-refresh-ahead)
+ - [Dezavantaj(lar): önbellek](#dezavantajlar-önbellek)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma-13)
+ - [Asenkronizm](#asenkronizm)
+ - [Mesaj kuyrukları](#mesaj-kuyrukları)
+ - [Görev kuyrukları](#görev-kuyrukları)
+ - [Back pressure](#back-pressure)
+ - [Dezavantaj(lar): asenkronizm](#dezavantajlar-asenkronizm)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma-14)
+ - [İletişim](#i̇letişim)
+ - [Köprü metni aktarım protokolü (HTTP)](#köprü-metni-aktarım-protokolü-http)
+ - [Kaynak(lar) ve ek okuma: HTTP](#kaynaklar-ve-ek-okuma-http)
+ - [İletim kontrol protokolü (TCP)](#i̇letim-kontrol-protokolü-tcp)
+ - [Kullanıcı datagram protokolü (UDP)](#kullanıcı-datagram-protokolü-udp)
+ - [Kaynak(lar) ve ek okuma: TCP ve UDP](#kaynaklar-ve-ek-okuma-tcp-ve-udp)
+ - [Uzaktan yordam çağrısı (RPC)](#uzaktan-yordam-çağrısı-rpc)
+ - [Dezavantajları: RPC](#dezavantajları-rpc)
+ - [Temsili Durum Transferi (REST)](#temsili-durum-transferi-rest)
+ - [Dezavantaj(lar): REST](#dezavantajlar-rest)
+ - [RPC ve REST karşılaştırması](#rpc-ve-rest-karşılaştırması)
+ - [Kaynak(lar) ve ek okuma: REST ve RPC](#kaynaklar-ve-ek-okuma-rest-ve-rpc)
+ - [Güvenlik](#güvenlik)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma-15)
+ - [Ek](#ek)
+ - [İkinin kuvveti tablosu](#i̇kinin-kuvveti-tablosu)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma-16)
+ - [Her programcının bilmesi gereken gecikme sayıları](#her-programcının-bilmesi-gereken-gecikme-sayıları)
+ - [Gecikme numarası görselleştirmesi](#gecikme-numarası-görselleştirmesi)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma-17)
+ - [Diğer sistem tasarımı mülakat soruları](#diğer-sistem-tasarımı-mülakat-soruları)
+ - [Gerçek dünya mimarileri](#gerçek-dünya-mimarileri)
+ - [Şirketlerin sistem mimarileri](#şirketlerin-sistem-mimarileri)
+ - [Şirketlerin mühendislik blogları](#şirketlerin-mühendislik-blogları)
+ - [Kaynak(lar) ve ek okuma](#kaynaklar-ve-ek-okuma-18)
+ - [Geliştirme aşamasında](#geliştirme-aşamasında)
+ - [Katkıda bulunanlar](#katkıda-bulunanlar)
+ - [İletişim](#i̇letişim-1)
+ - [Lisans](#lisans)
## Çalışma rehberi
> Mülakat zaman çizelgenize (kısa, orta, uzun) göre önerilen konuları gözden geçirin.
-
+
**S: Mülakatlar için buradaki her şeyi bilmem gerekiyor mu? **
@@ -305,49 +396,49 @@ Daha iyi bir fikir edinmek için aşağıdaki bağlantılara göz atın:
[Alıştırma ve çözümü görüntüleyin](solutions/system_design/pastebin/README.md)
-
+
### Twitter zaman çizelgesi ve arama(veya Facebook haber akışı ve arama) tasarlayın
[Alıştırma ve çözümü görüntüleyin](solutions/system_design/twitter/README.md)
-
+
### Bir web tarayıcısı tasarlayın
[Alıştırma ve çözümü görüntüleyin](solutions/system_design/web_crawler/README.md)
-
+
### Mint.com tasarlayın
[Alıştırma ve çözümü görüntüleyin](solutions/system_design/mint/README.md)
-
+
### Sosyal ağ için veri yapılarını tasarlayın
[Alıştırma ve çözümü görüntüleyin](solutions/system_design/social_graph/README.md)
-
+
### Arama motorları için bir anahtar/değer(key-value) deposu tasarlayın
[Alıştırma ve çözümü görüntüleyin](solutions/system_design/query_cache/README.md)
-
+
### Amazon'un satış sıralamasını kategori özellikleri aracılığıyla tasarlayın
[Alıştırma ve çözümü görüntüleyin](solutions/system_design/sales_rank/README.md)
-
+
### AWS'de milyon kullanıcılı bir sistem tasarlayın
[Alıştırma ve çözümü görüntüleyin](solutions/system_design/scaling_aws/README.md)
-
+
## Nesne yönelimli tasarım mülakat soruları ve çözümleri
@@ -439,7 +530,7 @@ Genel olarak, kabul edilebilir gecikme süresiyle verimi en üst düzeye çıkar
### CAP Teoremi
-
+
Kaynak: CAP theorem revisited
@@ -580,7 +671,7 @@ Eğer "Bileşen 1" ve "Bileşen 2" %99.9 erişilebilirliğe sahiplerse toplam er
## Alan Adı Sistemi (DNS)
-
+
Kaynak: DNS security presentation
@@ -618,7 +709,7 @@ DNS hiyerarşik bir yapıya sahiptir ve en üst düzeyde birkaç yetkili sunucu
## İçerik Dağıtım Ağı (CDN)
-
+
Kaynak: Why use a CDN
@@ -659,7 +750,7 @@ Yüksek trafikli siteler, trafiği daha düzenli bir şekilde dağıttığı iç
## Yük dengeleyici (Load balancer)
-
+
Kaynak: Scalable system design patterns
@@ -729,7 +820,7 @@ Yük dengeleyicileri, yatay ölçeklendirmeye de yardımcı olabilir, performans
## Ters proxy (web sunucusu)
-
+
Kaynak: Wikipedia
@@ -772,7 +863,7 @@ Faydaları şunları içerir:
## Uygulama katmanı
-
+
Kaynak: Intro to architecting systems for scale
@@ -809,7 +900,7 @@ Bu tartışma ile ilgili olan [mikroservisler](https://en.wikipedia.org/wiki/Mic
## Veritabanı
-
+
Kaynak: Scaling up to your first 10 million users
@@ -832,7 +923,7 @@ SQL gibi ilişkisel bir veritabanı, tablolar halinde düzenlenmiş veri öğele
Master sunucu, okuma ve yazma hizmeti sunar, yazma işlemlerini bir veya daha fazla slave sunucalara replike eder ve slave sunucular yalnızca okuma işlemleri sunar. Slave sunucular aynı zamanda daha fazla slave sunucuya ağaç benzeri bir şekilde replike edebilir. Master sunucu çevrimdışıysa; bir slave sunucu, ana bilgisayar olarak atanana veya yeni bir master sunucu tahsis edilene kadar; sistem okuma modunda çalışmaya devam edebilir.
-
+
Kaynak: Scalability, availability, stability, patterns
@@ -847,7 +938,7 @@ Master sunucu, okuma ve yazma hizmeti sunar, yazma işlemlerini bir veya daha fa
Her iki ana sunucu da okuma ve yazma işlemlerinden sorumludur ve yazma işlemleri sırasında birbirleriyle koordineli çalışırlar. Ana sunuculardan biri kapanırsa sistem okumaya ve yazmaya devam edebilir.
-
+
Kaynak: Scalability, availability, stability, patterns
@@ -875,7 +966,7 @@ Her iki ana sunucu da okuma ve yazma işlemlerinden sorumludur ve yazma işlemle
#### Federasyon
-
+
Kaynak: Kullanıcılarınızı İlk On Milyona Kadar Ölçeklendirme
@@ -896,7 +987,7 @@ Federasyon (veya fonksiyonel bölümleme), veritabanını ilgili işlevlere gör
#### Parçalama
-
+
Kaynak: Scalability, availability, stability, patterns
@@ -1040,7 +1131,7 @@ Belge depoları yüksek esneklik sağlar ve genellikle zaman zaman değişen ver
#### Geniş sütun deposu
-
+
Kaynak: SQL & NoSQL, a brief history
@@ -1063,7 +1154,7 @@ Geniş sütun depolamaları yüksek kullanılabilirlik ve ölçeklenebilirlik su
#### Grafik veritabanı
-
+
Kaynak: Graph database
@@ -1091,7 +1182,7 @@ Grafik veritabanları, sosyal ağ gibi karmaşık ilişkilere sahip veri modelle
### SQL veya NoSQL
-
+
Kaynak: Transitioning from RDBMS to NoSQL
@@ -1133,7 +1224,7 @@ NoSQL'e uygun örnek veriler:
## Önbellek
-
+
Kaynak: Scalable system design patterns
@@ -1204,7 +1295,7 @@ Verinizi, uygulama kodunuzdaki objeler gibi düşünün. Uygulamanın veritaban
#### Cache-aside
-
+
Kaynak: From cache to in-memory data grid
@@ -1240,7 +1331,7 @@ def get_user(self, user_id):
#### Üzerine yazma (write-through)
-
+
Kaynak: Scalability, availability, stability, patterns
@@ -1275,7 +1366,7 @@ Depolama ve yazma işlemleri nedeniyle, üzerine yazma yöntemi genel olarak ço
#### Geri yazma (write-behind)
-
+
Kaynak: Scalability, availability, stability, patterns
@@ -1293,7 +1384,7 @@ Geri yazma yönteminde, uygulama aşağıdaki adımları gerçekleştirir:
#### Önbelleği önceden yenileme (refresh-ahead)
-
+
Kaynak: From cache to in-memory data grid
@@ -1325,7 +1416,7 @@ Refresh-ahead, önbelleğin gelecekte hangi öğelere ihtiyaç duyulma olasılı
## Asenkronizm
-
+
Kaynak: Intro to architecting systems for scale
@@ -1371,7 +1462,7 @@ Eğer kuyruk önemli ölçüde büyümeye başlarsa, sıra boyutu bellek boyutun
## İletişim
-
+
Kaynak: OSI 7 layer model
@@ -1403,7 +1494,7 @@ HTTP, **TCP** ve **UDP** gibi alt düzey protokollere dayanan bir uygulama katma
### İletim kontrol protokolü (TCP)
-
+
Kaynak: How to make a multiplayer game
@@ -1427,7 +1518,7 @@ Aşağıdaki durumlarda UDP yerine TCP tercih ediniz:
### Kullanıcı datagram protokolü (UDP)
-
+
Kaynak: How to make a multiplayer game
@@ -1456,7 +1547,7 @@ Aşağıdaki durumlarda TCP yerine UDP kullanın:
### Uzaktan yordam çağrısı (RPC)
-
+
Kaynak: Crack the system design interview
@@ -1680,7 +1771,7 @@ Yukarıdaki sayılar temelinde kullanışlı ölçümler:
> Sistemlerin gerçekte nasıl tasarlandığına dair makaleler.
-
+
Kaynak: Twitter timelines at scale
diff --git a/docs/zh-Hant/design-glance.md b/docs/zh-Hant/design-glance.md
index 1a494419..527a396d 100644
--- a/docs/zh-Hant/design-glance.md
+++ b/docs/zh-Hant/design-glance.md
@@ -3,7 +3,7 @@
# 系統設計入門
-
+
@@ -44,7 +44,7 @@
## 學習單字卡
-
+
@@ -61,7 +61,7 @@
你正在尋找資源來面對[**程式語言面試**](https://github.com/donnemartin/interactive-coding-challenges)嗎?
-
+
@@ -91,96 +91,182 @@
> 每一章節都包含更深入資源的連結。
-
+
-* [系統設計主題:從這裡開始](#系統設計主題從這裡開始)
- * [第一步:複習關於可擴展性的影片講座](#第一步複習關於可擴展性的影片講座)
- * [第二步:複習關於可擴展性的文章](#第二步複習關於可擴展性的文章)
- * [下一步](#下一步)
-* [效能與可擴展性](#效能與可擴展性)
-* [延遲與吞吐量](#延遲與吞吐量)
-* [可用性與一致性](#可用性與一致性)
- * [CAP 理論](#cap-理論)
- * [CP-一致性與部分容錯性](#cp-一致性與部分容錯性)
- * [AP-可用性與部分容錯性](#ap-可用性與部分容錯性)
-* [一致性模式](#一致性模式)
- * [弱一致性](#弱一致性)
- * [最終一致性](#最終一致性)
- * [強一致性](#強一致性)
-* [可用性模式](#可用性模式)
- * [容錯轉移](#容錯轉移)
- * [複寫機制](#複寫機制)
-* [域名系統](#域名系統)
-* [內容傳遞網路(CDN)](#內容傳遞網路cdn)
- * [推送式 CDNs](#推送式-cdns)
- * [拉取式 CDNs](#拉取式-cdns)
-* [負載平衡器](#負載平衡器)
- * [主動到備用切換模式(AP Mode)](#主動到備用切換模式ap-mode)
- * [雙主動切換模式(AA Mode)](#雙主動切換模式aa-mode)
- * [第四層負載平衡](#第四層負載平衡)
- * [第七層負載平衡](#第七層負載平衡)
- * [水平擴展](#水平擴展)
-* [反向代理(網頁伺服器)](#反向代理網頁伺服器)
- * [負載平衡器與反向代理伺服器](#負載平衡器與反向代理伺服器)
-* [應用層](#應用層)
- * [微服務](#微服務)
- * [服務發現](#服務發現)
-* [資料庫](#資料庫)
- * [關連式資料庫管理系統(RDBMS)](#關連式資料庫管理系統rdbms)
- * [主從複寫](#主從複寫)
- * [主動模式複寫](#主動模式複寫)
- * [聯邦式資料庫](#聯邦式資料庫)
- * [分片](#分片)
- * [反正規化](#反正規化)
- * [SQL 優化](#sql-優化)
- * [NoSQL](#nosql)
- * [鍵-值對的資料庫](#鍵-值對的資料庫)
- * [文件類型資料庫](#文件類型資料庫)
- * [列儲存型資料庫](#列儲存型資料庫)
- * [圖形資料庫](#圖形資料庫)
- * [SQL 或 NoSQL](#sql-或-nosql)
-* [快取](#快取)
- * [客戶端快取](#客戶端快取)
- * [CDN 快取](#cdn-快取)
- * [網站伺服器快取](#網站伺服器快取)
- * [資料庫快取](#資料庫快取)
- * [應用程式快取](#應用程式快取)
- * [資料庫查詢級別的快取](#資料庫查詢級別的快取)
- * [物件級別的快取](#物件級別的快取)
- * [什麼時候要更新快取](#什麼時候要更新快取)
- * [快取模式](#快取模式)
- * [寫入模式](#寫入模式)
- * [事後寫入(回寫)](#事後寫入回寫)
- * [更新式快取](#更新式快取)
-* [非同步機制](#非同步機制)
- * [訊息佇列](#訊息佇列)
- * [工作佇列](#工作佇列)
- * [背壓機制](#背壓機制)
-* [通訊](#通訊)
- * [傳輸控制通訊協定(TCP)](#傳輸控制通訊協定tcp)
- * [使用者資料流通訊協定 (UDP)](#使用者資料流通訊協定-udp)
- * [遠端程式呼叫 (RPC)](#遠端程式呼叫-rpc)
- * [具象狀態轉移 (REST)](#具象狀態轉移-rest)
-* [資訊安全](#資訊安全)
-* [附錄](#附錄)
- * [2 的次方表](#2-的次方表)
- * [每個開發者都應該知道的延遲數量級](#每個開發者都應該知道的延遲數量級)
- * [其他的系統設計面試問題](#其他的系統設計面試問題)
- * [真實世界的架構](#真實世界的架構)
- * [公司的系統架構](#公司的系統架構)
- * [公司的工程部落格](#公司的工程部落格)
-* [仍在進行中](#仍在進行中)
-* [致謝](#致謝)
-* [聯絡資訊](#聯絡資訊)
-* [授權](#授權)
+- [系統設計入門](#系統設計入門)
+ - [動機](#動機)
+ - [學習如何設計大型系統](#學習如何設計大型系統)
+ - [從開放原始碼社群中學習](#從開放原始碼社群中學習)
+ - [準備系統設計的面試](#準備系統設計的面試)
+ - [學習單字卡](#學習單字卡)
+ - [程式設計學習資源:互動式程式學習設計](#程式設計學習資源互動式程式學習設計)
+ - [如何貢獻](#如何貢獻)
+ - [系統設計主題的索引](#系統設計主題的索引)
+ - [學習指南](#學習指南)
+ - [如何解決一個系統設計的面試題目](#如何解決一個系統設計的面試題目)
+ - [第一步:描述使用的場景、限制及假設](#第一步描述使用的場景限制及假設)
+ - [第二步:建立一個高階的設計](#第二步建立一個高階的設計)
+ - [第三步: 設計核心的元件](#第三步-設計核心的元件)
+ - [第四步:評估你的設計](#第四步評估你的設計)
+ - [快速有效的進行估算](#快速有效的進行估算)
+ - [相關資源與延伸閱讀](#相關資源與延伸閱讀)
+ - [系統設計面試問題與解答](#系統設計面試問題與解答)
+ - [設計 Pastebin.com (或 Bit.ly)](#設計-pastebincom-或-bitly)
+ - [設計一個像是 Twitter 的 timeline (或 Facebook feed)設計一個 Twitter 搜尋功能 (or Facebook 搜尋功能)](#設計一個像是-twitter-的-timeline-或-facebook-feed設計一個-twitter-搜尋功能-or-facebook-搜尋功能)
+ - [設計一個爬蟲系統](#設計一個爬蟲系統)
+ - [設計 Mint.com 網站](#設計-mintcom-網站)
+ - [設計一個社交網站的資料結構](#設計一個社交網站的資料結構)
+ - [設計一個搜尋引擎使用的鍵值儲存資料結構](#設計一個搜尋引擎使用的鍵值儲存資料結構)
+ - [設計一個根據產品分類的亞馬遜銷售排名](#設計一個根據產品分類的亞馬遜銷售排名)
+ - [在 AWS 上設計一個百萬用戶等級的系統](#在-aws-上設計一個百萬用戶等級的系統)
+ - [物件導向設計面試問題與解答](#物件導向設計面試問題與解答)
+ - [系統設計主題:從這裡開始](#系統設計主題從這裡開始)
+ - [第一步:複習關於可擴展性的影片講座](#第一步複習關於可擴展性的影片講座)
+ - [第二步:複習關於可擴展性的文章](#第二步複習關於可擴展性的文章)
+ - [下一步](#下一步)
+ - [效能與可擴展性](#效能與可擴展性)
+ - [來源及延伸閱讀](#來源及延伸閱讀)
+ - [延遲與吞吐量](#延遲與吞吐量)
+ - [來源及延伸閱讀](#來源及延伸閱讀-1)
+ - [可用性與一致性](#可用性與一致性)
+ - [CAP 理論](#cap-理論)
+ - [CP-一致性與部分容錯性](#cp-一致性與部分容錯性)
+ - [AP-可用性與部分容錯性](#ap-可用性與部分容錯性)
+ - [來源及延伸閱讀](#來源及延伸閱讀-2)
+ - [一致性模式](#一致性模式)
+ - [弱一致性](#弱一致性)
+ - [最終一致性](#最終一致性)
+ - [強一致性](#強一致性)
+ - [來源及延伸閱讀](#來源及延伸閱讀-3)
+ - [可用性模式](#可用性模式)
+ - [容錯轉移](#容錯轉移)
+ - [主動到備用切換模式(AP Mode)](#主動到備用切換模式ap-mode)
+ - [雙主動切換模式(AA Mode)](#雙主動切換模式aa-mode)
+ - [缺點:容錯轉移](#缺點容錯轉移)
+ - [複寫機制](#複寫機制)
+ - [主動到備用複寫與雙主動複寫](#主動到備用複寫與雙主動複寫)
+ - [域名系統](#域名系統)
+ - [DNS 的缺點](#dns-的缺點)
+ - [來源及延伸閱讀](#來源及延伸閱讀-4)
+ - [內容傳遞網路(CDN)](#內容傳遞網路cdn)
+ - [推送式 CDNs](#推送式-cdns)
+ - [拉取式 CDNs](#拉取式-cdns)
+ - [CDN 的缺點](#cdn-的缺點)
+ - [來源及延伸閱讀](#來源及延伸閱讀-5)
+ - [負載平衡器](#負載平衡器)
+ - [第四層負載平衡](#第四層負載平衡)
+ - [第七層負載平衡](#第七層負載平衡)
+ - [水平擴展](#水平擴展)
+ - [水平擴展的缺點](#水平擴展的缺點)
+ - [負載平衡器的缺點](#負載平衡器的缺點)
+ - [來源及延伸閱讀](#來源及延伸閱讀-6)
+ - [反向代理(網頁伺服器)](#反向代理網頁伺服器)
+ - [負載平衡器與反向代理伺服器](#負載平衡器與反向代理伺服器)
+ - [反向代理伺服器的缺點](#反向代理伺服器的缺點)
+ - [來源與延伸閱讀](#來源與延伸閱讀)
+ - [應用層](#應用層)
+ - [微服務](#微服務)
+ - [服務發現](#服務發現)
+ - [應用層的缺點](#應用層的缺點)
+ - [來源與延伸閱讀](#來源與延伸閱讀-1)
+ - [資料庫](#資料庫)
+ - [關連式資料庫管理系統(RDBMS)](#關連式資料庫管理系統rdbms)
+ - [主從複寫](#主從複寫)
+ - [主從複寫的缺點](#主從複寫的缺點)
+ - [主動模式複寫](#主動模式複寫)
+ - [主動模式的缺點](#主動模式的缺點)
+ - [複寫的缺點](#複寫的缺點)
+ - [來源及延伸閱讀](#來源及延伸閱讀-7)
+ - [聯邦式資料庫](#聯邦式資料庫)
+ - [聯邦式資料庫的缺點](#聯邦式資料庫的缺點)
+ - [來源及延伸閱讀](#來源及延伸閱讀-8)
+ - [分片](#分片)
+ - [分片的缺點](#分片的缺點)
+ - [來源及延伸閱讀](#來源及延伸閱讀-9)
+ - [反正規化](#反正規化)
+ - [反正規化的缺點](#反正規化的缺點)
+ - [來源及延伸閱讀](#來源及延伸閱讀-10)
+ - [SQL 優化](#sql-優化)
+ - [使用較為精準的 schema](#使用較為精準的-schema)
+ - [使用正確的索引](#使用正確的索引)
+ - [避免高成本的 Join 操作](#避免高成本的-join-操作)
+ - [分割資料表](#分割資料表)
+ - [調整查詢的快取](#調整查詢的快取)
+ - [來源及延伸閱讀](#來源及延伸閱讀-11)
+ - [NoSQL](#nosql)
+ - [鍵-值對的資料庫](#鍵-值對的資料庫)
+ - [來源及延伸閱讀](#來源及延伸閱讀-12)
+ - [文件類型資料庫](#文件類型資料庫)
+ - [延伸閱讀](#延伸閱讀)
+ - [列儲存型資料庫](#列儲存型資料庫)
+ - [來源及延伸閱讀](#來源及延伸閱讀-13)
+ - [圖形資料庫](#圖形資料庫)
+ - [來源及延伸閱讀](#來源及延伸閱讀-14)
+ - [來源及延伸閱讀:NoSQL](#來源及延伸閱讀nosql)
+ - [SQL 或 NoSQL](#sql-或-nosql)
+ - [來源及延伸閱讀: SQL 或 NoSQL](#來源及延伸閱讀-sql-或-nosql)
+ - [快取](#快取)
+ - [客戶端快取](#客戶端快取)
+ - [CDN 快取](#cdn-快取)
+ - [網站伺服器快取](#網站伺服器快取)
+ - [資料庫快取](#資料庫快取)
+ - [應用程式快取](#應用程式快取)
+ - [資料庫查詢級別的快取](#資料庫查詢級別的快取)
+ - [物件級別的快取](#物件級別的快取)
+ - [什麼時候要更新快取](#什麼時候要更新快取)
+ - [快取模式](#快取模式)
+ - [快取的缺點](#快取的缺點)
+ - [寫入模式](#寫入模式)
+ - [寫入模式的缺點](#寫入模式的缺點)
+ - [事後寫入(回寫)](#事後寫入回寫)
+ - [事後寫入的缺點](#事後寫入的缺點)
+ - [更新式快取](#更新式快取)
+ - [更新式快取的缺點](#更新式快取的缺點)
+ - [快取的缺點](#快取的缺點-1)
+ - [來源及延伸閱讀](#來源及延伸閱讀-15)
+ - [非同步機制](#非同步機制)
+ - [訊息佇列](#訊息佇列)
+ - [工作佇列](#工作佇列)
+ - [背壓機制](#背壓機制)
+ - [非同步的缺點](#非同步的缺點)
+ - [來源及延伸閱讀](#來源及延伸閱讀-16)
+ - [通訊](#通訊)
+ - [超文件通訊協定 (HTTP)](#超文件通訊協定-http)
+ - [來源及延伸閱讀](#來源及延伸閱讀-17)
+ - [傳輸控制通訊協定(TCP)](#傳輸控制通訊協定tcp)
+ - [使用者資料流通訊協定 (UDP)](#使用者資料流通訊協定-udp)
+ - [來源及延伸閱讀](#來源及延伸閱讀-18)
+ - [遠端程式呼叫 (RPC)](#遠端程式呼叫-rpc)
+ - [RPC 的缺點](#rpc-的缺點)
+ - [具象狀態轉移 (REST)](#具象狀態轉移-rest)
+ - [REST 的缺點](#rest-的缺點)
+ - [RPC 和 REST 呼叫的比較](#rpc-和-rest-呼叫的比較)
+ - [來源及延伸閱讀](#來源及延伸閱讀-19)
+ - [資訊安全](#資訊安全)
+ - [來源及延伸閱讀](#來源及延伸閱讀-20)
+ - [附錄](#附錄)
+ - [2 的次方表](#2-的次方表)
+ - [來源及延伸閱讀](#來源及延伸閱讀-21)
+ - [每個開發者都應該知道的延遲數量級](#每個開發者都應該知道的延遲數量級)
+ - [視覺化延遲數](#視覺化延遲數)
+ - [來源及延伸閱讀](#來源及延伸閱讀-22)
+ - [其他的系統設計面試問題](#其他的系統設計面試問題)
+ - [真實世界的架構](#真實世界的架構)
+ - [公司的系統架構](#公司的系統架構)
+ - [公司的工程部落格](#公司的工程部落格)
+ - [來源及延伸閱讀](#來源及延伸閱讀-23)
+ - [仍在進行中](#仍在進行中)
+ - [致謝](#致謝)
+ - [聯絡資訊](#聯絡資訊)
+ - [授權](#授權)
## 學習指南
> 基於你面試的時間 (短、中、長) 來複習這些建議的主題。
-
+
**Q: 對於面試者來說,我需要知道這裡所有的知識嗎?**
@@ -302,49 +388,49 @@
[閱讀練習與解答](solutions/system_design/pastebin/README.md)
-
+
### 設計一個像是 Twitter 的 timeline (或 Facebook feed)設計一個 Twitter 搜尋功能 (or Facebook 搜尋功能)
[閱讀練習與解答](solutions/system_design/twitter/README.md)
-
+
### 設計一個爬蟲系統
[閱讀練習與解答](solutions/system_design/web_crawler/README.md)
-
+
### 設計 Mint.com 網站
[閱讀練習與解答](solutions/system_design/mint/README.md)
-
+
### 設計一個社交網站的資料結構
[閱讀練習與解答](solutions/system_design/social_graph/README.md)
-
+
### 設計一個搜尋引擎使用的鍵值儲存資料結構
[閱讀練習與解答](solutions/system_design/query_cache/README.md)
-
+
### 設計一個根據產品分類的亞馬遜銷售排名
[閱讀練習與解答](solutions/system_design/sales_rank/README.md)
-
+
### 在 AWS 上設計一個百萬用戶等級的系統
[閱讀練習與解答](solutions/system_design/scaling_aws/README.md)
-
+
## 物件導向設計面試問題與解答
@@ -435,7 +521,7 @@
### CAP 理論
-
+
來源:再看 CAP 理論
@@ -529,7 +615,7 @@ DNS 或是電子郵件系統使用的就是這種方式,最終一致性在高
## 域名系統
-
+
資料來源:DNS 安全介紹
@@ -567,7 +653,7 @@ DNS 是階層式的架構,一部分的 DNS 伺服器位於頂層,當查詢
## 內容傳遞網路(CDN)
-
+
來源:為什麼要使用 CDN
@@ -608,7 +694,7 @@ DNS 是階層式的架構,一部分的 DNS 伺服器位於頂層,當查詢
## 負載平衡器
-
+
來源:可擴展的系統設計模式
@@ -678,7 +764,7 @@ DNS 是階層式的架構,一部分的 DNS 伺服器位於頂層,當查詢
## 反向代理(網頁伺服器)
-
+
來源:維基百科
@@ -721,7 +807,7 @@ DNS 是階層式的架構,一部分的 DNS 伺服器位於頂層,當查詢
## 應用層
-
+
資料來源:可縮放式系統架構介紹
@@ -758,7 +844,7 @@ DNS 是階層式的架構,一部分的 DNS 伺服器位於頂層,當查詢
## 資料庫
-
+
來源:擴展你的使用者數量到第一個一千萬量級
@@ -781,7 +867,7 @@ DNS 是階層式的架構,一部分的 DNS 伺服器位於頂層,當查詢
主資料庫負責讀和寫,並且將寫入的資料複寫至一或多個從屬資料庫中,從屬資料庫只負責讀取。而從屬資料庫可以再將寫入複製到更多以樹狀結構的其他資料庫中。如果主資料庫離線了,系統可以以只讀模式運行,直到某個從屬資料庫被提升為主資料庫,或有新的主資料庫出現。
-
+
來源: 可擴展性、可用性、穩定性及其模式
@@ -796,7 +882,7 @@ DNS 是階層式的架構,一部分的 DNS 伺服器位於頂層,當查詢
兩個主要的資料庫都負責讀取和寫入,並且兩者互相協調。如果其中一個主要資料庫離線,系統可以繼續運作。
-
+
來源: 可擴展性、可用性、穩定性及其模式
@@ -824,7 +910,7 @@ DNS 是階層式的架構,一部分的 DNS 伺服器位於頂層,當查詢
#### 聯邦式資料庫
-
+
來源:擴展你的使用者數量到第一個一千萬量級
@@ -845,7 +931,7 @@ DNS 是階層式的架構,一部分的 DNS 伺服器位於頂層,當查詢
#### 分片
-
+
來源: 可擴展性、可用性、穩定性及其模式
@@ -991,7 +1077,7 @@ NoSQL 指的是 **鍵-值對的資料庫**、**文件類型資料庫**、**列
#### 列儲存型資料庫
-
+
來源:SQL 和 NoSQL,簡短的歷史介紹
@@ -1014,7 +1100,7 @@ Google 發表了第一個列儲存型資料庫 [Bigtable](http://www.read.seas.h
#### 圖形資料庫
-
+
來源: 圖形化資料庫
@@ -1042,7 +1128,7 @@ Google 發表了第一個列儲存型資料庫 [Bigtable](http://www.read.seas.h
### SQL 或 NoSQL
-
+
來源:從 RDBMS 轉換到 NoSQL
@@ -1084,7 +1170,7 @@ Google 發表了第一個列儲存型資料庫 [Bigtable](http://www.read.seas.h
## 快取
-
+
來源:可擴展的系統設計模式
@@ -1155,7 +1241,7 @@ Redis 還有以下額外的功能:
#### 快取模式
-
+
資料來源:從快取到記憶體資料網格
@@ -1191,7 +1277,7 @@ def get_user(self, user_id):
#### 寫入模式
-
+
資料來源:可獲展性、可用性、穩定性與模式
@@ -1226,7 +1312,7 @@ def set_user(user_id, values):
#### 事後寫入(回寫)
-
+
資料來源:可獲展性、可用性、穩定性與模式
@@ -1244,7 +1330,7 @@ def set_user(user_id, values):
#### 更新式快取
-
+
來源:從快取到記憶體資料網格技術
@@ -1276,7 +1362,7 @@ def set_user(user_id, values):
## 非同步機制
-
+
資料來源:可縮放性系統架構介紹
@@ -1322,7 +1408,7 @@ def set_user(user_id, values):
## 通訊
-
+
來源:OSI 七層模型
@@ -1354,7 +1440,7 @@ HTTP 是依賴於較底層的協議(例如:**TCP** 和 **UDP**) 的應用層
### 傳輸控制通訊協定(TCP)
-
+
來源:如何開發多人遊戲
@@ -1378,7 +1464,7 @@ TCP 對於需要高可靠、低時間急迫性的應用來說很有用,比如
### 使用者資料流通訊協定 (UDP)
-
+
資料來源:如何製作多人遊戲
@@ -1407,7 +1493,7 @@ UDP 的可靠性較低,但適合用在像是網路電話、視訊聊天、串
### 遠端程式呼叫 (RPC)
-
+
資料來源:破解系統設計面試
@@ -1630,7 +1716,7 @@ Notes
> 底下是關於真實世界的系統架構是如何設計的文章
-
+
資料來源:可擴展式的 Twitter 時間軸設計
diff --git a/docs/zh/design-glance.md b/docs/zh/design-glance.md
index 0daf687d..61a6a0e7 100644
--- a/docs/zh/design-glance.md
+++ b/docs/zh/design-glance.md
@@ -8,7 +8,7 @@
# 系统设计入门
-
+
@@ -49,7 +49,7 @@
## 抽认卡
-
+
@@ -66,7 +66,7 @@
你正在寻找资源以准备[**编程面试**](https://github.com/donnemartin/interactive-coding-challenges)吗?
-
+
@@ -97,96 +97,182 @@
-
+
-* [系统设计主题:从这里开始](#系统设计主题从这里开始)
- * [第一步:回顾可扩展性的视频讲座](#第一步回顾可扩展性scalability的视频讲座)
- * [第二步:回顾可扩展性的文章](#第二步回顾可扩展性文章)
- * [接下来的步骤](#接下来的步骤)
-* [性能与拓展性](#性能与可扩展性)
-* [延迟与吞吐量](#延迟与吞吐量)
-* [可用性与一致性](#可用性与一致性)
- * [CAP 理论](#cap-理论)
- * [CP - 一致性和分区容错性](#cp--一致性和分区容错性)
- * [AP - 可用性和分区容错性](#ap--可用性与分区容错性)
-* [一致模式](#一致性模式)
- * [弱一致性](#弱一致性)
- * [最终一致性](#最终一致性)
- * [强一致性](#强一致性)
-* [可用模式](#可用性模式)
- * [故障切换](#故障切换)
- * [复制](#复制)
-* [域名系统](#域名系统)
-* [CDN](#内容分发网络cdn)
- * [CDN 推送](#cdn-推送push)
- * [CDN 拉取](#cdn-拉取pull)
-* [负载均衡器](#负载均衡器)
- * [工作到备用切换(Active-passive)](#工作到备用切换active-passive)
- * [双工作切换(Active-active)](#双工作切换active-active)
- * [四层负载均衡](#四层负载均衡)
- * [七层负载均衡](#七层负载均衡器)
- * [水平扩展](#水平扩展)
-* [反向代理(web 服务器)](#反向代理web-服务器)
- * [负载均衡与反向代理](#负载均衡器与反向代理)
-* [应用层](#应用层)
- * [微服务](#微服务)
- * [服务发现](#服务发现)
-* [数据库](#数据库)
- * [关系型数据库管理系统(RDBMS)](#关系型数据库管理系统rdbms)
- * [Master-slave 复制集](#主从复制)
- * [Master-master 复制集](#主主复制)
- * [联合](#联合)
- * [分片](#分片)
- * [非规范化](#非规范化)
- * [SQL 调优](#sql-调优)
- * [NoSQL](#nosql)
- * [Key-value 存储](#键-值存储)
- * [文档存储](#文档类型存储)
- * [宽列存储](#列型存储)
- * [图数据库](#图数据库)
- * [SQL 还是 NoSQL](#sql-还是-nosql)
-* [缓存](#缓存)
- * [客户端缓存](#客户端缓存)
- * [CDN 缓存](#cdn-缓存)
- * [Web 服务器缓存](#web-服务器缓存)
- * [数据库缓存](#数据库缓存)
- * [应用缓存](#应用缓存)
- * [数据库查询级别的缓存](#数据库查询级别的缓存)
- * [对象级别的缓存](#对象级别的缓存)
- * [何时更新缓存](#何时更新缓存)
- * [缓存模式](#缓存模式)
- * [直写模式](#直写模式)
- * [回写模式](#回写模式)
- * [刷新](#刷新)
-* [异步](#异步)
- * [消息队列](#消息队列)
- * [任务队列](#任务队列)
- * [背压机制](#背压)
-* [通讯](#通讯)
- * [传输控制协议(TCP)](#传输控制协议tcp)
- * [用户数据报协议(UDP)](#用户数据报协议udp)
- * [远程控制调用协议(RPC)](#远程过程调用协议rpc)
- * [表述性状态转移(REST)](#表述性状态转移rest)
-* [安全](#安全)
-* [附录](#附录)
- * [2 的次方表](#2-的次方表)
- * [每个程序员都应该知道的延迟数](#每个程序员都应该知道的延迟数)
- * [其它的系统设计面试题](#其它的系统设计面试题)
- * [真实架构](#真实架构)
- * [公司的系统架构](#公司的系统架构)
- * [公司工程博客](#公司工程博客)
-* [正在完善中](#正在完善中)
-* [致谢](#致谢)
-* [联系方式](#联系方式)
-* [许可](#许可)
+- [系统设计入门](#系统设计入门)
+ - [目的](#目的)
+ - [学习如何设计大型系统](#学习如何设计大型系统)
+ - [从开源社区学习](#从开源社区学习)
+ - [为系统设计的面试做准备](#为系统设计的面试做准备)
+ - [抽认卡](#抽认卡)
+ - [代码资源:互动式编程挑战](#代码资源互动式编程挑战)
+ - [贡献](#贡献)
+ - [系统设计主题的索引](#系统设计主题的索引)
+ - [学习指引](#学习指引)
+ - [如何处理一个系统设计的面试题](#如何处理一个系统设计的面试题)
+ - [第一步:描述使用场景,约束和假设](#第一步描述使用场景约束和假设)
+ - [第二步:创造一个高层级的设计](#第二步创造一个高层级的设计)
+ - [第三步:设计核心组件](#第三步设计核心组件)
+ - [第四步:扩展设计](#第四步扩展设计)
+ - [预估计算量](#预估计算量)
+ - [相关资源和延伸阅读](#相关资源和延伸阅读)
+ - [系统设计的面试题和解答](#系统设计的面试题和解答)
+ - [设计 Pastebin.com (或者 Bit.ly)](#设计-pastebincom-或者-bitly)
+ - [设计 Twitter 时间线和搜索 (或者 Facebook feed 和搜索)](#设计-twitter-时间线和搜索-或者-facebook-feed-和搜索)
+ - [设计一个网页爬虫](#设计一个网页爬虫)
+ - [设计 Mint.com](#设计-mintcom)
+ - [为一个社交网络设计数据结构](#为一个社交网络设计数据结构)
+ - [为搜索引擎设计一个 key-value 储存](#为搜索引擎设计一个-key-value-储存)
+ - [设计按类别分类的 Amazon 销售排名](#设计按类别分类的-amazon-销售排名)
+ - [在 AWS 上设计一个百万用户级别的系统](#在-aws-上设计一个百万用户级别的系统)
+ - [面向对象设计的面试问题及解答](#面向对象设计的面试问题及解答)
+ - [系统设计主题:从这里开始](#系统设计主题从这里开始)
+ - [第一步:回顾可扩展性(scalability)的视频讲座](#第一步回顾可扩展性scalability的视频讲座)
+ - [第二步:回顾可扩展性文章](#第二步回顾可扩展性文章)
+ - [接下来的步骤](#接下来的步骤)
+ - [性能与可扩展性](#性能与可扩展性)
+ - [来源及延伸阅读](#来源及延伸阅读)
+ - [延迟与吞吐量](#延迟与吞吐量)
+ - [来源及延伸阅读](#来源及延伸阅读-1)
+ - [可用性与一致性](#可用性与一致性)
+ - [CAP 理论](#cap-理论)
+ - [CP ─ 一致性和分区容错性](#cp--一致性和分区容错性)
+ - [AP ─ 可用性与分区容错性](#ap--可用性与分区容错性)
+ - [来源及延伸阅读](#来源及延伸阅读-2)
+ - [一致性模式](#一致性模式)
+ - [弱一致性](#弱一致性)
+ - [最终一致性](#最终一致性)
+ - [强一致性](#强一致性)
+ - [来源及延伸阅读](#来源及延伸阅读-3)
+ - [可用性模式](#可用性模式)
+ - [故障切换](#故障切换)
+ - [工作到备用切换(Active-passive)](#工作到备用切换active-passive)
+ - [双工作切换(Active-active)](#双工作切换active-active)
+ - [缺陷:故障切换](#缺陷故障切换)
+ - [复制](#复制)
+ - [主─从复制和主─主复制](#主从复制和主主复制)
+ - [域名系统](#域名系统)
+ - [缺陷:DNS](#缺陷dns)
+ - [来源及延伸阅读](#来源及延伸阅读-4)
+ - [内容分发网络(CDN)](#内容分发网络cdn)
+ - [CDN 推送(push)](#cdn-推送push)
+ - [CDN 拉取(pull)](#cdn-拉取pull)
+ - [缺陷:CDN](#缺陷cdn)
+ - [来源及延伸阅读](#来源及延伸阅读-5)
+ - [负载均衡器](#负载均衡器)
+ - [四层负载均衡](#四层负载均衡)
+ - [七层负载均衡器](#七层负载均衡器)
+ - [水平扩展](#水平扩展)
+ - [缺陷:水平扩展](#缺陷水平扩展)
+ - [缺陷:负载均衡器](#缺陷负载均衡器)
+ - [来源及延伸阅读](#来源及延伸阅读-6)
+ - [反向代理(web 服务器)](#反向代理web-服务器)
+ - [负载均衡器与反向代理](#负载均衡器与反向代理)
+ - [不利之处:反向代理](#不利之处反向代理)
+ - [来源及延伸阅读](#来源及延伸阅读-7)
+ - [应用层](#应用层)
+ - [微服务](#微服务)
+ - [服务发现](#服务发现)
+ - [不利之处:应用层](#不利之处应用层)
+ - [来源及延伸阅读](#来源及延伸阅读-8)
+ - [数据库](#数据库)
+ - [关系型数据库管理系统(RDBMS)](#关系型数据库管理系统rdbms)
+ - [主从复制](#主从复制)
+ - [不利之处:主从复制](#不利之处主从复制)
+ - [主主复制](#主主复制)
+ - [不利之处: 主主复制](#不利之处-主主复制)
+ - [不利之处:复制](#不利之处复制)
+ - [来源及延伸阅读](#来源及延伸阅读-9)
+ - [联合](#联合)
+ - [不利之处:联合](#不利之处联合)
+ - [来源及延伸阅读:联合](#来源及延伸阅读联合)
+ - [分片](#分片)
+ - [不利之处:分片](#不利之处分片)
+ - [来源及延伸阅读:分片](#来源及延伸阅读分片)
+ - [非规范化](#非规范化)
+ - [不利之处:非规范化](#不利之处非规范化)
+ - [来源及延伸阅读:非规范化](#来源及延伸阅读非规范化)
+ - [SQL 调优](#sql-调优)
+ - [改进模式](#改进模式)
+ - [使用正确的索引](#使用正确的索引)
+ - [避免高成本的联结操作](#避免高成本的联结操作)
+ - [分割数据表](#分割数据表)
+ - [调优查询缓存](#调优查询缓存)
+ - [来源及延伸阅读](#来源及延伸阅读-10)
+ - [NoSQL](#nosql)
+ - [键-值存储](#键-值存储)
+ - [来源及延伸阅读](#来源及延伸阅读-11)
+ - [文档类型存储](#文档类型存储)
+ - [来源及延伸阅读:文档类型存储](#来源及延伸阅读文档类型存储)
+ - [列型存储](#列型存储)
+ - [来源及延伸阅读:列型存储](#来源及延伸阅读列型存储)
+ - [图数据库](#图数据库)
+ - [相关资源和延伸阅读:图](#相关资源和延伸阅读图)
+ - [来源及延伸阅读:NoSQL](#来源及延伸阅读nosql)
+ - [SQL 还是 NoSQL](#sql-还是-nosql)
+ - [来源及延伸阅读:SQL 或 NoSQL](#来源及延伸阅读sql-或-nosql)
+ - [缓存](#缓存)
+ - [客户端缓存](#客户端缓存)
+ - [CDN 缓存](#cdn-缓存)
+ - [Web 服务器缓存](#web-服务器缓存)
+ - [数据库缓存](#数据库缓存)
+ - [应用缓存](#应用缓存)
+ - [数据库查询级别的缓存](#数据库查询级别的缓存)
+ - [对象级别的缓存](#对象级别的缓存)
+ - [何时更新缓存](#何时更新缓存)
+ - [缓存模式](#缓存模式)
+ - [缓存的缺点:](#缓存的缺点)
+ - [直写模式](#直写模式)
+ - [直写模式的缺点:](#直写模式的缺点)
+ - [回写模式](#回写模式)
+ - [回写模式的缺点:](#回写模式的缺点)
+ - [刷新](#刷新)
+ - [刷新的缺点:](#刷新的缺点)
+ - [缓存的缺点:](#缓存的缺点-1)
+ - [相关资源和延伸阅读](#相关资源和延伸阅读-1)
+ - [异步](#异步)
+ - [消息队列](#消息队列)
+ - [任务队列](#任务队列)
+ - [背压](#背压)
+ - [异步的缺点:](#异步的缺点)
+ - [相关资源和延伸阅读](#相关资源和延伸阅读-2)
+ - [通讯](#通讯)
+ - [超文本传输协议(HTTP)](#超文本传输协议http)
+ - [来源及延伸阅读:HTTP](#来源及延伸阅读http)
+ - [传输控制协议(TCP)](#传输控制协议tcp)
+ - [用户数据报协议(UDP)](#用户数据报协议udp)
+ - [来源及延伸阅读:TCP 与 UDP](#来源及延伸阅读tcp-与-udp)
+ - [远程过程调用协议(RPC)](#远程过程调用协议rpc)
+ - [缺点:RPC](#缺点rpc)
+ - [表述性状态转移(REST)](#表述性状态转移rest)
+ - [缺点:REST](#缺点rest)
+ - [RPC 与 REST 比较](#rpc-与-rest-比较)
+ - [来源及延伸阅读:REST 与 RPC](#来源及延伸阅读rest-与-rpc)
+ - [安全](#安全)
+ - [来源及延伸阅读](#来源及延伸阅读-12)
+ - [附录](#附录)
+ - [2 的次方表](#2-的次方表)
+ - [来源及延伸阅读](#来源及延伸阅读-13)
+ - [每个程序员都应该知道的延迟数](#每个程序员都应该知道的延迟数)
+ - [延迟数可视化](#延迟数可视化)
+ - [来源及延伸阅读](#来源及延伸阅读-14)
+ - [其它的系统设计面试题](#其它的系统设计面试题)
+ - [真实架构](#真实架构)
+ - [公司的系统架构](#公司的系统架构)
+ - [公司工程博客](#公司工程博客)
+ - [来源及延伸阅读](#来源及延伸阅读-15)
+ - [正在完善中](#正在完善中)
+ - [致谢](#致谢)
+ - [联系方式](#联系方式)
+ - [许可](#许可)
## 学习指引
> 基于你面试的时间线(短、中、长)去复习那些推荐的主题。
-
+
**问:对于面试来说,我需要知道这里的所有知识点吗?**
@@ -307,49 +393,49 @@
[查看实践与解答](solutions/system_design/pastebin/README.md)
-
+
### 设计 Twitter 时间线和搜索 (或者 Facebook feed 和搜索)
[查看实践与解答](solutions/system_design/twitter/README.md)
-
+
### 设计一个网页爬虫
[查看实践与解答](solutions/system_design/web_crawler/README.md)
-
+
### 设计 Mint.com
[查看实践与解答](solutions/system_design/mint/README.md)
-
+
### 为一个社交网络设计数据结构
[查看实践与解答](solutions/system_design/social_graph/README.md)
-
+
### 为搜索引擎设计一个 key-value 储存
[查看实践与解答](solutions/system_design/query_cache/README.md)
-
+
### 设计按类别分类的 Amazon 销售排名
[查看实践与解答](solutions/system_design/sales_rank/README.md)
-
+
### 在 AWS 上设计一个百万用户级别的系统
[查看实践与解答](solutions/system_design/scaling_aws/README.md)
-
+
## 面向对象设计的面试问题及解答
@@ -441,7 +527,7 @@
### CAP 理论
-
+
来源:再看 CAP 理论
@@ -536,7 +622,7 @@ DNS 和 email 等系统使用的是此种方式。最终一致性在高可用性
## 域名系统
-
+
来源:DNS 安全介绍
@@ -574,7 +660,7 @@ DNS 和 email 等系统使用的是此种方式。最终一致性在高可用性
## 内容分发网络(CDN)
-
+
来源:为什么使用 CDN
@@ -613,7 +699,7 @@ CDN 拉取是当第一个用户请求该资源时,从服务器上拉取资源
## 负载均衡器
-
+
来源:可扩展的系统设计模式
@@ -682,7 +768,7 @@ CDN 拉取是当第一个用户请求该资源时,从服务器上拉取资源
## 反向代理(web 服务器)
-
+
资料来源:维基百科
@@ -726,7 +812,7 @@ CDN 拉取是当第一个用户请求该资源时,从服务器上拉取资源
## 应用层
-
+
资料来源:可缩放系统构架介绍
@@ -764,7 +850,7 @@ CDN 拉取是当第一个用户请求该资源时,从服务器上拉取资源
## 数据库
-
+
资料来源:扩展你的用户数到第一个一千万
@@ -785,7 +871,7 @@ CDN 拉取是当第一个用户请求该资源时,从服务器上拉取资源
关系型数据库扩展包括许多技术:**主从复制**、**主主复制**、**联合**、**分片**、**非规范化**和 **SQL调优**。
-
+
资料来源:可扩展性、可用性、稳定性、模式
@@ -800,7 +886,7 @@ CDN 拉取是当第一个用户请求该资源时,从服务器上拉取资源
- 参考[不利之处:复制](#不利之处复制)中,主从复制和主主复制**共同**的问题。
-
+
资料来源:可扩展性、可用性、稳定性、模式
@@ -835,7 +921,7 @@ CDN 拉取是当第一个用户请求该资源时,从服务器上拉取资源
#### 联合
-
+
资料来源:扩展你的用户数到第一个一千万
@@ -857,7 +943,7 @@ CDN 拉取是当第一个用户请求该资源时,从服务器上拉取资源
#### 分片
-
+
资料来源:可扩展性、可用性、稳定性、模式
@@ -1001,7 +1087,7 @@ MongoDB 和 CouchDB 等一些文档类型存储还提供了类似 SQL 语言的
#### 列型存储
-
+
资料来源: SQL 和 NoSQL,一个简短的历史
@@ -1024,7 +1110,7 @@ Google 发布了第一个列型存储数据库 [Bigtable](http://www.read.seas.h
#### 图数据库
-
+
资料来源:图数据库
@@ -1051,7 +1137,7 @@ Google 发布了第一个列型存储数据库 [Bigtable](http://www.read.seas.h
### SQL 还是 NoSQL
-
+
资料来源:从 RDBMS 转换到 NoSQL
@@ -1092,7 +1178,7 @@ Google 发布了第一个列型存储数据库 [Bigtable](http://www.read.seas.h
## 缓存
-
+
资料来源:可扩展的系统设计模式
@@ -1163,7 +1249,7 @@ Redis 有下列附加功能:
#### 缓存模式
-
+
资料来源:从缓存到内存数据网格
@@ -1199,7 +1285,7 @@ def get_user(self, user_id):
#### 直写模式
-
+
资料来源:可扩展性、可用性、稳定性、模式
@@ -1234,7 +1320,7 @@ def set_user(user_id, values):
#### 回写模式
-
+
资料来源:可扩展性、可用性、稳定性、模式
@@ -1252,7 +1338,7 @@ def set_user(user_id, values):
#### 刷新
-
+
资料来源:从缓存到内存数据网格
@@ -1284,7 +1370,7 @@ def set_user(user_id, values):
## 异步
-
+
资料来源:可缩放系统构架介绍
@@ -1330,7 +1416,7 @@ def set_user(user_id, values):
## 通讯
-
+
资料来源:OSI 7层模型
@@ -1365,7 +1451,7 @@ HTTP 是依赖于较低级协议(如 **TCP** 和 **UDP**)的应用层协议
### 传输控制协议(TCP)
-
+
资料来源:如何制作多人游戏
@@ -1389,7 +1475,7 @@ TCP 对于需要高可靠性但时间紧迫的应用程序很有用。比如包
### 用户数据报协议(UDP)
-
+
资料来源:如何制作多人游戏
@@ -1418,7 +1504,7 @@ UDP 可靠性更低但适合用在网络电话、视频聊天,流媒体和实
### 远程过程调用协议(RPC)
-
+
Source: Crack the system design interview
@@ -1640,7 +1726,7 @@ Notes
> 关于现实中真实的系统是怎么设计的文章。
-
+
Source: Twitter timelines at scale
diff --git a/mkdocs.yml b/mkdocs.yml
index 3e9c35b2..6cda3bd2 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -45,20 +45,22 @@ nav:
- English:
- Overview: en/index.md
- - Start Here: en/study_guide.md
+ - Study Guide Start Here: en/study_guide.md
+ - System Design Interview Questions: en/solutions.md
- System Design at a Glance: en/design-glance.md
- - 简体中文 (Simplified Chinese):
- - 简体中文主页: zh/design-glance.md
+ - Translations (Not up to date):
+ - 简体中文 (Simplified Chinese):
+ - 简体中文主页: zh/design-glance.md
- - 繁體中文 (Traditional Chinese):
- - 繁體中文首頁: zh-Hant/design-glance.md
+ - 繁體中文 (Traditional Chinese):
+ - 繁體中文首頁: zh-Hant/design-glance.md
- - العربية (Arabic):
- - الصفحة الرئيسية: ar/design-glance.md
+ - العربية (Arabic):
+ - الصفحة الرئيسية: ar/design-glance.md
- - 日本語 (Japanese):
- - 日本語のホーム: ja/design-glance.md
+ - 日本語 (Japanese):
+ - 日本語のホーム: ja/design-glance.md
- - Türkçe (Turkish):
- - Türkçe Anasayfa: tr/design-glance.md
+ - Türkçe (Turkish):
+ - Türkçe Anasayfa: tr/design-glance.md