| Skip to content | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#start-of-content |
|
| https://patch-diff.githubusercontent.com/ |
|
Sign in
| https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2FApressJavaCode%2Fsystem-design-primer |
| GitHub CopilotWrite better code with AI | https://github.com/features/copilot |
| GitHub SparkBuild and deploy intelligent apps | https://github.com/features/spark |
| GitHub ModelsManage and compare prompts | https://github.com/features/models |
| MCP RegistryNewIntegrate external tools | https://github.com/mcp |
| ActionsAutomate any workflow | https://github.com/features/actions |
| CodespacesInstant dev environments | https://github.com/features/codespaces |
| IssuesPlan and track work | https://github.com/features/issues |
| Code ReviewManage code changes | https://github.com/features/code-review |
| GitHub Advanced SecurityFind and fix vulnerabilities | https://github.com/security/advanced-security |
| Code securitySecure your code as you build | https://github.com/security/advanced-security/code-security |
| Secret protectionStop leaks before they start | https://github.com/security/advanced-security/secret-protection |
| Why GitHub | https://github.com/why-github |
| Documentation | https://docs.github.com |
| Blog | https://github.blog |
| Changelog | https://github.blog/changelog |
| Marketplace | https://github.com/marketplace |
| View all features | https://github.com/features |
| Enterprises | https://github.com/enterprise |
| Small and medium teams | https://github.com/team |
| Startups | https://github.com/enterprise/startups |
| Nonprofits | https://github.com/solutions/industry/nonprofits |
| App Modernization | https://github.com/solutions/use-case/app-modernization |
| DevSecOps | https://github.com/solutions/use-case/devsecops |
| DevOps | https://github.com/solutions/use-case/devops |
| CI/CD | https://github.com/solutions/use-case/ci-cd |
| View all use cases | https://github.com/solutions/use-case |
| Healthcare | https://github.com/solutions/industry/healthcare |
| Financial services | https://github.com/solutions/industry/financial-services |
| Manufacturing | https://github.com/solutions/industry/manufacturing |
| Government | https://github.com/solutions/industry/government |
| View all industries | https://github.com/solutions/industry |
| View all solutions | https://github.com/solutions |
| AI | https://github.com/resources/articles?topic=ai |
| Software Development | https://github.com/resources/articles?topic=software-development |
| DevOps | https://github.com/resources/articles?topic=devops |
| Security | https://github.com/resources/articles?topic=security |
| View all topics | https://github.com/resources/articles |
| Customer stories | https://github.com/customer-stories |
| Events & webinars | https://github.com/resources/events |
| Ebooks & reports | https://github.com/resources/whitepapers |
| Business insights | https://github.com/solutions/executive-insights |
| GitHub Skills | https://skills.github.com |
| Documentation | https://docs.github.com |
| Customer support | https://support.github.com |
| Community forum | https://github.com/orgs/community/discussions |
| Trust center | https://github.com/trust-center |
| Partners | https://github.com/partners |
| GitHub SponsorsFund open source developers | https://github.com/sponsors |
| Security Lab | https://securitylab.github.com |
| Maintainer Community | https://maintainers.github.com |
| Accelerator | https://github.com/accelerator |
| Archive Program | https://archiveprogram.github.com |
| Topics | https://github.com/topics |
| Trending | https://github.com/trending |
| Collections | https://github.com/collections |
| Enterprise platformAI-powered developer platform | https://github.com/enterprise |
| GitHub Advanced SecurityEnterprise-grade security features | https://github.com/security/advanced-security |
| Copilot for BusinessEnterprise-grade AI features | https://github.com/features/copilot/copilot-business |
| Premium SupportEnterprise-grade 24/7 support | https://github.com/premium-support |
| Pricing | https://github.com/pricing |
| Search syntax tips | https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax |
| documentation | https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax |
|
Sign in
| https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2FApressJavaCode%2Fsystem-design-primer |
|
Sign up
| https://patch-diff.githubusercontent.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&source=header-repo&source_repo=ApressJavaCode%2Fsystem-design-primer |
| Reload | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer |
| Reload | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer |
| Reload | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer |
|
ApressJavaCode
| https://patch-diff.githubusercontent.com/ApressJavaCode |
| system-design-primer | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer |
| donnemartin/system-design-primer | https://patch-diff.githubusercontent.com/donnemartin/system-design-primer |
|
Notifications
| https://patch-diff.githubusercontent.com/login?return_to=%2FApressJavaCode%2Fsystem-design-primer |
|
Fork
0
| https://patch-diff.githubusercontent.com/login?return_to=%2FApressJavaCode%2Fsystem-design-primer |
|
Star
0
| https://patch-diff.githubusercontent.com/login?return_to=%2FApressJavaCode%2Fsystem-design-primer |
|
View license
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/LICENSE.txt |
|
0
stars
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/stargazers |
|
54.1k
forks
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/forks |
|
Branches
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/branches |
|
Tags
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/tags |
|
Activity
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/activity |
|
Star
| https://patch-diff.githubusercontent.com/login?return_to=%2FApressJavaCode%2Fsystem-design-primer |
|
Notifications
| https://patch-diff.githubusercontent.com/login?return_to=%2FApressJavaCode%2Fsystem-design-primer |
|
Code
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer |
|
Pull requests
0
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/pulls |
|
Actions
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/actions |
|
Projects
0
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/projects |
|
Security
Uh oh!
There was an error while loading. Please reload this page.
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/security |
| Please reload this page | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer |
|
Insights
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/pulse |
|
Code
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer |
|
Pull requests
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/pulls |
|
Actions
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/actions |
|
Projects
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/projects |
|
Security
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/security |
|
Insights
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/pulse |
| Branches | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/branches |
| Tags | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/tags |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/branches |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/tags |
| 323 Commits | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/commits/master/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/commits/master/ |
| .github | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/tree/master/.github |
| .github | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/tree/master/.github |
| images | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/tree/master/images |
| images | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/tree/master/images |
| resources | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/tree/master/resources |
| resources | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/tree/master/resources |
| solutions | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/tree/master/solutions |
| solutions | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/tree/master/solutions |
| .gitattributes | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/.gitattributes |
| .gitattributes | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/.gitattributes |
| .gitignore | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/.gitignore |
| .gitignore | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/.gitignore |
| CONTRIBUTING.md | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/CONTRIBUTING.md |
| CONTRIBUTING.md | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/CONTRIBUTING.md |
| LICENSE.txt | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/LICENSE.txt |
| LICENSE.txt | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/LICENSE.txt |
| README-ja.md | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/README-ja.md |
| README-ja.md | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/README-ja.md |
| README-zh-Hans.md | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/README-zh-Hans.md |
| README-zh-Hans.md | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/README-zh-Hans.md |
| README-zh-TW.md | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/README-zh-TW.md |
| README-zh-TW.md | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/README-zh-TW.md |
| README.md | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/README.md |
| README.md | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/README.md |
| TRANSLATIONS.md | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/TRANSLATIONS.md |
| TRANSLATIONS.md | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/TRANSLATIONS.md |
| epub-metadata.yaml | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/epub-metadata.yaml |
| epub-metadata.yaml | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/epub-metadata.yaml |
| generate-epub.sh | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/generate-epub.sh |
| generate-epub.sh | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/generate-epub.sh |
| README | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer |
| Contributing | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer |
| License | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer |
| English | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/README.md |
| 日本語 | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/README-ja.md |
| 简体中文 | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/README-zh-Hans.md |
| 繁體中文 | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/README-zh-TW.md |
| العَرَبِيَّة | https://github.com/donnemartin/system-design-primer/issues/170 |
| বাংলা | https://github.com/donnemartin/system-design-primer/issues/220 |
| Português do Brasil | https://github.com/donnemartin/system-design-primer/issues/40 |
| Deutsch | https://github.com/donnemartin/system-design-primer/issues/186 |
| ελληνικά | https://github.com/donnemartin/system-design-primer/issues/130 |
| עברית | https://github.com/donnemartin/system-design-primer/issues/272 |
| Italiano | https://github.com/donnemartin/system-design-primer/issues/104 |
| 한국어 | https://github.com/donnemartin/system-design-primer/issues/102 |
| فارسی | https://github.com/donnemartin/system-design-primer/issues/110 |
| Polski | https://github.com/donnemartin/system-design-primer/issues/68 |
| русский язык | https://github.com/donnemartin/system-design-primer/issues/87 |
| Español | https://github.com/donnemartin/system-design-primer/issues/136 |
| ภาษาไทย | https://github.com/donnemartin/system-design-primer/issues/187 |
| Türkçe | https://github.com/donnemartin/system-design-primer/issues/39 |
| tiếng Việt | https://github.com/donnemartin/system-design-primer/issues/127 |
| Français | https://github.com/donnemartin/system-design-primer/issues/250 |
| Add Translation | https://github.com/donnemartin/system-design-primer/issues/28 |
| translate | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/TRANSLATIONS.md |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#the-system-design-primer |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/jj3A5N8.png |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#motivation |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#learn-how-to-design-large-scale-systems |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#learn-from-the-open-source-community |
| Contributions | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#contributing |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#prep-for-the-system-design-interview |
| Study guide | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#study-guide |
| How to approach a system design interview question | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#how-to-approach-a-system-design-interview-question |
| System design interview questions, with solutions | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#system-design-interview-questions-with-solutions |
| Object-oriented design interview questions, with solutions | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#object-oriented-design-interview-questions-with-solutions |
| Additional system design interview questions | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#additional-system-design-interview-questions |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#anki-flashcards |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/zdCAkB3.png |
| Anki flashcard decks | https://apps.ankiweb.net/ |
| System design deck | https://github.com/donnemartin/system-design-primer/tree/master/resources/flash_cards/System%20Design.apkg |
| System design exercises deck | https://github.com/donnemartin/system-design-primer/tree/master/resources/flash_cards/System%20Design%20Exercises.apkg |
| Object oriented design exercises deck | https://github.com/donnemartin/system-design-primer/tree/master/resources/flash_cards/OO%20Design.apkg |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#coding-resource-interactive-coding-challenges |
| Coding Interview | https://github.com/donnemartin/interactive-coding-challenges |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/b4YtAEN.png |
| Interactive Coding Challenges | https://github.com/donnemartin/interactive-coding-challenges |
| Coding deck | https://github.com/donnemartin/interactive-coding-challenges/tree/master/anki_cards/Coding.apkg |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#contributing |
| Translate | https://github.com/donnemartin/system-design-primer/issues/28 |
| under development | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#under-development |
| Contributing Guidelines | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/CONTRIBUTING.md |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#index-of-system-design-topics |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/jrUBAF7.png |
| System design topics: start here | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#system-design-topics-start-here |
| Step 1: Review the scalability video lecture | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#step-1-review-the-scalability-video-lecture |
| Step 2: Review the scalability article | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#step-2-review-the-scalability-article |
| Next steps | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#next-steps |
| Performance vs scalability | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#performance-vs-scalability |
| Latency vs throughput | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#latency-vs-throughput |
| Availability vs consistency | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#availability-vs-consistency |
| CAP theorem | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#cap-theorem |
| CP - consistency and partition tolerance | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#cp---consistency-and-partition-tolerance |
| AP - availability and partition tolerance | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#ap---availability-and-partition-tolerance |
| Consistency patterns | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#consistency-patterns |
| Weak consistency | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#weak-consistency |
| Eventual consistency | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#eventual-consistency |
| Strong consistency | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#strong-consistency |
| Availability patterns | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#availability-patterns |
| Fail-over | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#fail-over |
| Replication | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#replication |
| Availability in numbers | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#availability-in-numbers |
| Domain name system | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#domain-name-system |
| Content delivery network | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#content-delivery-network |
| Push CDNs | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#push-cdns |
| Pull CDNs | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#pull-cdns |
| Load balancer | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#load-balancer |
| Active-passive | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#active-passive |
| Active-active | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#active-active |
| Layer 4 load balancing | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#layer-4-load-balancing |
| Layer 7 load balancing | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#layer-7-load-balancing |
| Horizontal scaling | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#horizontal-scaling |
| Reverse proxy (web server) | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#reverse-proxy-web-server |
| Load balancer vs reverse proxy | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#load-balancer-vs-reverse-proxy |
| Application layer | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#application-layer |
| Microservices | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#microservices |
| Service discovery | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#service-discovery |
| Database | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#database |
| Relational database management system (RDBMS) | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#relational-database-management-system-rdbms |
| Master-slave replication | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#master-slave-replication |
| Master-master replication | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#master-master-replication |
| Federation | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#federation |
| Sharding | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sharding |
| Denormalization | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#denormalization |
| SQL tuning | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sql-tuning |
| NoSQL | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#nosql |
| Key-value store | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#key-value-store |
| Document store | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#document-store |
| Wide column store | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#wide-column-store |
| Graph Database | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#graph-database |
| SQL or NoSQL | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sql-or-nosql |
| Cache | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#cache |
| Client caching | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#client-caching |
| CDN caching | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#cdn-caching |
| Web server caching | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#web-server-caching |
| Database caching | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#database-caching |
| Application caching | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#application-caching |
| Caching at the database query level | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#caching-at-the-database-query-level |
| Caching at the object level | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#caching-at-the-object-level |
| When to update the cache | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#when-to-update-the-cache |
| Cache-aside | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#cache-aside |
| Write-through | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#write-through |
| Write-behind (write-back) | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#write-behind-write-back |
| Refresh-ahead | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#refresh-ahead |
| Asynchronism | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#asynchronism |
| Message queues | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#message-queues |
| Task queues | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#task-queues |
| Back pressure | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#back-pressure |
| Communication | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#communication |
| Transmission control protocol (TCP) | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#transmission-control-protocol-tcp |
| User datagram protocol (UDP) | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#user-datagram-protocol-udp |
| Remote procedure call (RPC) | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#remote-procedure-call-rpc |
| Representational state transfer (REST) | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#representational-state-transfer-rest |
| Security | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#security |
| Appendix | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#appendix |
| Powers of two table | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#powers-of-two-table |
| Latency numbers every programmer should know | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#latency-numbers-every-programmer-should-know |
| Additional system design interview questions | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#additional-system-design-interview-questions |
| Real world architectures | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#real-world-architectures |
| Company architectures | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#company-architectures |
| Company engineering blogs | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#company-engineering-blogs |
| Under development | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#under-development |
| Credits | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#credits |
| Contact info | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#contact-info |
| License | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#license |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#study-guide |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/OfVllex.png |
| System design topics | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#index-of-system-design-topics |
| Company engineering blogs | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#company-engineering-blogs |
| Real world architectures | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#real-world-architectures |
| How to approach a system design interview question | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#how-to-approach-a-system-design-interview-question |
| System design interview questions with solutions | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#system-design-interview-questions-with-solutions |
| Object-oriented design interview questions with solutions | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#object-oriented-design-interview-questions-with-solutions |
| Additional system design interview questions | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#additional-system-design-interview-questions |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#how-to-approach-a-system-design-interview-question |
| System design interview questions with solutions | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#system-design-interview-questions-with-solutions |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#step-1-outline-use-cases-constraints-and-assumptions |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#step-2-create-a-high-level-design |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#step-3-design-core-components |
| design a url shortening service | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/pastebin/README.md |
| MD5 | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/pastebin/README.md |
| Base62 | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/pastebin/README.md |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#step-4-scale-the-design |
| principles of scalable system design | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#index-of-system-design-topics |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#back-of-the-envelope-calculations |
| Appendix | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#appendix |
| 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 |
| Powers of two table | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#powers-of-two-table |
| Latency numbers every programmer should know | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#latency-numbers-every-programmer-should-know |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading |
| How to ace 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 |
| Intro to Architecture and Systems Design Interviews | https://www.youtube.com/watch?v=ZgdS0EUmn70 |
| System design template | https://leetcode.com/discuss/career/229177/My-System-Design-Template |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#system-design-interview-questions-with-solutions |
| Solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/pastebin/README.md |
| Solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/twitter/README.md |
| Solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/web_crawler/README.md |
| Solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/mint/README.md |
| Solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/social_graph/README.md |
| Solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/query_cache/README.md |
| Solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/sales_rank/README.md |
| Solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/scaling_aws/README.md |
| Contribute | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#contributing |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#design-pastebincom-or-bitly |
| View exercise and solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/pastebin/README.md |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/4edXG0T.png |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#design-the-twitter-timeline-and-search-or-facebook-feed-and-search |
| View exercise and solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/twitter/README.md |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/jrUBAF7.png |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#design-a-web-crawler |
| View exercise and solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/web_crawler/README.md |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/bWxPtQA.png |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#design-mintcom |
| View exercise and solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/mint/README.md |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/V5q57vU.png |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#design-the-data-structures-for-a-social-network |
| View exercise and solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/social_graph/README.md |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/cdCv5g7.png |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#design-a-key-value-store-for-a-search-engine |
| View exercise and solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/query_cache/README.md |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/4j99mhe.png |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#design-amazons-sales-ranking-by-category-feature |
| View exercise and solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/sales_rank/README.md |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/MzExP06.png |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#design-a-system-that-scales-to-millions-of-users-on-aws |
| View exercise and solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/system_design/scaling_aws/README.md |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/jj3A5N8.png |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#object-oriented-design-interview-questions-with-solutions |
| Solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/object_oriented_design/hash_table/hash_map.ipynb |
| Solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/object_oriented_design/lru_cache/lru_cache.ipynb |
| Solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/object_oriented_design/call_center/call_center.ipynb |
| Solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/object_oriented_design/deck_of_cards/deck_of_cards.ipynb |
| Solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/object_oriented_design/parking_lot/parking_lot.ipynb |
| Solution | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/solutions/object_oriented_design/online_chat/online_chat.ipynb |
| Contribute | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#contributing |
| Contribute | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#contributing |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#system-design-topics-start-here |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#step-1-review-the-scalability-video-lecture |
| Scalability Lecture at Harvard | https://www.youtube.com/watch?v=-W9F__D3oY4 |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#step-2-review-the-scalability-article |
| Scalability | http://www.lecloud.net/tagged/scalability/chrono |
| 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 |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#next-steps |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#performance-vs-scalability |
| 1 | http://www.allthingsdistributed.com/2006/03/a_word_on_scalability.html |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-1 |
| 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/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#latency-vs-throughput |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-2 |
| Understanding latency vs throughput | https://community.cadence.com/cadence_blogs_8/b/sd/archive/2010/09/13/understanding-latency-vs-throughput |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#availability-vs-consistency |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#cap-theorem |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/bgLMI2u.png |
| Source: CAP theorem revisited | http://robertgreiner.com/2014/08/cap-theorem-revisited |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#cp---consistency-and-partition-tolerance |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#ap---availability-and-partition-tolerance |
| eventual consistency | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#eventual-consistency |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-3 |
| CAP theorem revisited | 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 FAQ | https://github.com/henryr/cap-faq |
| The CAP theorem | https://www.youtube.com/watch?v=k-Yaq8AHlFA |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#consistency-patterns |
| CAP theorem | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#cap-theorem |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#weak-consistency |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#eventual-consistency |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#strong-consistency |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-4 |
| Transactions across data centers | http://snarfed.org/transactions_across_datacenters_io.html |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#availability-patterns |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#fail-over |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#active-passive |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#active-active |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-failover |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#replication |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#master-slave-and-master-master |
| Database | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#database |
| Master-slave replication | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#master-slave-replication |
| Master-master replication | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#master-master-replication |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#availability-in-numbers |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#999-availability---three-9s |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#9999-availability---four-9s |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#availability-in-parallel-vs-in-sequence |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#in-sequence |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#in-parallel |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#domain-name-system |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/IOyLj4i.jpg |
| Source: DNS security presentation | http://www.slideshare.net/srikrupa5/dns-security-presentation-issa |
| www.example.com | http://www.example.com |
| time to live (TTL) | https://en.wikipedia.org/wiki/Time_to_live |
| www.example.com | http://www.example.com |
| CloudFlare | https://www.cloudflare.com/dns/ |
| Route 53 | https://aws.amazon.com/route53/ |
| Weighted round robin | https://www.g33kinfo.com/info/round-robin-vs-weighted-round-robin-lb |
| Latency-based | 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://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-dns |
| governments, ISPs, and large companies | http://superuser.com/questions/472695/who-controls-the-dns-servers/472729 |
| DDoS attack | http://dyn.com/blog/dyn-analysis-summary-of-friday-october-21-attack/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-5 |
| DNS architecture | https://technet.microsoft.com/en-us/library/dd197427(v=ws.10).aspx |
| Wikipedia | https://en.wikipedia.org/wiki/Domain_Name_System |
| DNS articles | https://support.dnsimple.com/categories/dns/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#content-delivery-network |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/h9TAuGI.jpg |
| Source: Why use a CDN | https://www.creative-artworks.eu/why-use-a-content-delivery-network-cdn/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#push-cdns |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#pull-cdns |
| time-to-live (TTL) | https://en.wikipedia.org/wiki/Time_to_live |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-cdn |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-6 |
| Globally distributed content delivery | https://figshare.com/articles/Globally_distributed_content_delivery/6605972 |
| The differences between push and pull CDNs | http://www.travelblogadvice.com/technical/the-differences-between-push-and-pull-cdns/ |
| Wikipedia | https://en.wikipedia.org/wiki/Content_delivery_network |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#load-balancer |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/h81n9iK.png |
| Source: Scalable system design patterns | http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html |
| X.509 certificates | https://en.wikipedia.org/wiki/X.509 |
| active-passive | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#active-passive |
| active-active | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#active-active |
| Round robin or weighted round robin | https://www.g33kinfo.com/info/round-robin-vs-weighted-round-robin-lb |
| Layer 4 | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#layer-4-load-balancing |
| Layer 7 | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#layer-7-load-balancing |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#layer-4-load-balancing |
| transport layer | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#communication |
| Network Address Translation (NAT) | https://www.nginx.com/resources/glossary/layer-4-load-balancing/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#layer-7-load-balancing |
| application layer | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#communication |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#horizontal-scaling |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-horizontal-scaling |
| database | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#database |
| cache | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#cache |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-load-balancer |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-7 |
| NGINX architecture | https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/ |
| HAProxy architecture guide | http://www.haproxy.org/download/1.2/doc/architecture.txt |
| Scalability | http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones |
| Wikipedia | https://en.wikipedia.org/wiki/Load_balancing_(computing) |
| Layer 4 load balancing | https://www.nginx.com/resources/glossary/layer-4-load-balancing/ |
| Layer 7 load balancing | https://www.nginx.com/resources/glossary/layer-7-load-balancing/ |
| ELB listener config | http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-listener-config.html |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#reverse-proxy-web-server |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/n41Azff.png |
| Source: Wikipedia | https://upload.wikimedia.org/wikipedia/commons/6/67/Reverse_proxy_h2g2bob.svg |
| X.509 certificates | https://en.wikipedia.org/wiki/X.509 |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#load-balancer-vs-reverse-proxy |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-reverse-proxy |
| failover | https://en.wikipedia.org/wiki/Failover |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-8 |
| Reverse proxy vs load balancer | https://www.nginx.com/resources/glossary/reverse-proxy-vs-load-balancer/ |
| NGINX architecture | https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/ |
| HAProxy architecture guide | http://www.haproxy.org/download/1.2/doc/architecture.txt |
| Wikipedia | https://en.wikipedia.org/wiki/Reverse_proxy |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#application-layer |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/yB5SYwm.png |
| Source: Intro to architecting systems for scale | http://lethain.com/introduction-to-architecting-systems-for-scale/#platform_layer |
| asynchronism | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#asynchronism |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#microservices |
| microservices | https://en.wikipedia.org/wiki/Microservices |
| 1 | https://smartbear.com/learn/api-design/what-are-microservices |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#service-discovery |
| Consul | https://www.consul.io/docs/index.html |
| Etcd | https://coreos.com/etcd/docs/latest |
| Zookeeper | http://www.slideshare.net/sauravhaloi/introduction-to-apache-zookeeper |
| Health checks | https://www.consul.io/intro/getting-started/checks.html |
| HTTP | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#hypertext-transfer-protocol-http |
| key-value store | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#key-value-store |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-application-layer |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-9 |
| Intro to architecting systems for scale | http://lethain.com/introduction-to-architecting-systems-for-scale |
| Crack the system design interview | http://www.puncsky.com/blog/2016-02-13-crack-the-system-design-interview |
| Service oriented architecture | https://en.wikipedia.org/wiki/Service-oriented_architecture |
| Introduction to Zookeeper | http://www.slideshare.net/sauravhaloi/introduction-to-apache-zookeeper |
| Here's what you need to know about building microservices | https://cloudncode.wordpress.com/2016/07/22/msa-getting-started/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#database |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/Xkm5CXz.png |
| Source: Scaling up to your first 10 million users | https://www.youtube.com/watch?v=kKjm4ehYiMs |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#relational-database-management-system-rdbms |
| transactions | https://en.wikipedia.org/wiki/Database_transaction |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#master-slave-replication |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/C9ioGtn.png |
| Source: Scalability, availability, stability, patterns | http://www.slideshare.net/jboner/scalability-availability-stability-patterns/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-master-slave-replication |
| Disadvantage(s): replication | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-replication |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#master-master-replication |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/krAHLGg.png |
| Source: Scalability, availability, stability, patterns | http://www.slideshare.net/jboner/scalability-availability-stability-patterns/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-master-master-replication |
| Disadvantage(s): replication | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-replication |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-replication |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-replication |
| Scalability, availability, stability, patterns | http://www.slideshare.net/jboner/scalability-availability-stability-patterns/ |
| Multi-master replication | https://en.wikipedia.org/wiki/Multi-master_replication |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#federation |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/U3qV33e.png |
| Source: Scaling up to your first 10 million users | https://www.youtube.com/watch?v=kKjm4ehYiMs |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-federation |
| server link | http://stackoverflow.com/questions/5145637/querying-data-by-joining-two-tables-in-two-database-on-different-servers |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-federation |
| Scaling up to your first 10 million users | https://www.youtube.com/watch?v=kKjm4ehYiMs |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sharding |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/wU8x5Id.png |
| Source: Scalability, availability, stability, patterns | http://www.slideshare.net/jboner/scalability-availability-stability-patterns/ |
| federation | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#federation |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-sharding |
| consistent hashing | http://www.paperplanes.de/2011/12/9/the-magic-of-consistent-hashing.html |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-sharding |
| The coming of the shard | http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html |
| Shard database architecture | https://en.wikipedia.org/wiki/Shard_(database_architecture) |
| Consistent hashing | http://www.paperplanes.de/2011/12/9/the-magic-of-consistent-hashing.html |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#denormalization |
| PostgreSQL | https://en.wikipedia.org/wiki/PostgreSQL |
| materialized views | https://en.wikipedia.org/wiki/Materialized_view |
| federation | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#federation |
| sharding | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sharding |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-denormalization |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-denormalization |
| Denormalization | https://en.wikipedia.org/wiki/Denormalization |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sql-tuning |
| books | https://www.amazon.com/s/ref=nb_sb_noss_2?url=search-alias%3Daps&field-keywords=sql+tuning |
| ab | http://httpd.apache.org/docs/2.2/programs/ab.html |
| slow query log | http://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#tighten-up-the-schema |
| improve search performance | http://stackoverflow.com/questions/1017239/how-do-null-values-affect-performance-in-a-database-search |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#use-good-indices |
| B-tree | https://en.wikipedia.org/wiki/B-tree |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#avoid-expensive-joins |
| Denormalize | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#denormalization |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#partition-tables |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#tune-the-query-cache |
| query cache | https://dev.mysql.com/doc/refman/5.7/en/query-cache.html |
| performance issues | https://www.percona.com/blog/2016/10/12/mysql-5-7-performance-tuning-immediately-after-installation/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-sql-tuning |
| Tips for optimizing MySQL queries | http://aiddroid.com/10-tips-optimizing-mysql-queries-dont-suck/ |
| Is there a good reason i see VARCHAR(255) used so often? | http://stackoverflow.com/questions/1217466/is-there-a-good-reason-i-see-varchar255-used-so-often-as-opposed-to-another-l |
| How do null values affect performance? | http://stackoverflow.com/questions/1017239/how-do-null-values-affect-performance-in-a-database-search |
| Slow query log | http://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#nosql |
| eventual consistency | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#eventual-consistency |
| CAP Theorem | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#cap-theorem |
| SQL or NoSQL | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sql-or-nosql |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#key-value-store |
| lexicographic order | https://en.wikipedia.org/wiki/Lexicographical_order |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-key-value-store |
| Key-value database | https://en.wikipedia.org/wiki/Key-value_database |
| Disadvantages of key-value stores | http://stackoverflow.com/questions/4056093/what-are-the-disadvantages-of-using-a-key-value-table-over-nullable-columns-or |
| Redis architecture | http://qnimate.com/overview-of-redis-architecture/ |
| Memcached architecture | https://adayinthelifeof.nl/2011/02/06/memcache-internals/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#document-store |
| MongoDB | https://www.mongodb.com/mongodb-architecture |
| CouchDB | https://blog.couchdb.org/2016/08/01/couchdb-2-0-architecture/ |
| DynamoDB | http://www.read.seas.harvard.edu/~kohler/class/cs239-w08/decandia07dynamo.pdf |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-document-store |
| Document-oriented database | https://en.wikipedia.org/wiki/Document-oriented_database |
| MongoDB architecture | https://www.mongodb.com/mongodb-architecture |
| CouchDB architecture | https://blog.couchdb.org/2016/08/01/couchdb-2-0-architecture/ |
| Elasticsearch architecture | https://www.elastic.co/blog/found-elasticsearch-from-the-bottom-up |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#wide-column-store |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/n16iOGk.png |
| Source: SQL & NoSQL, a brief history | http://blog.grio.com/2015/11/sql-nosql-a-brief-history.html |
| Bigtable | http://www.read.seas.harvard.edu/~kohler/class/cs239-w08/chang06bigtable.pdf |
| HBase | https://www.edureka.co/blog/hbase-architecture/ |
| Cassandra | http://docs.datastax.com/en/cassandra/3.0/cassandra/architecture/archIntro.html |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-wide-column-store |
| SQL & NoSQL, a brief history | http://blog.grio.com/2015/11/sql-nosql-a-brief-history.html |
| Bigtable architecture | http://www.read.seas.harvard.edu/~kohler/class/cs239-w08/chang06bigtable.pdf |
| HBase architecture | https://www.edureka.co/blog/hbase-architecture/ |
| Cassandra architecture | http://docs.datastax.com/en/cassandra/3.0/cassandra/architecture/archIntro.html |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#graph-database |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/fNcl65g.png |
| Source: Graph database | https://en.wikipedia.org/wiki/File:GraphDatabase_PropertyGraph.png |
| REST APIs | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#representational-state-transfer-rest |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-graph |
| Graph database | https://en.wikipedia.org/wiki/Graph_database |
| Neo4j | https://neo4j.com/ |
| FlockDB | https://blog.twitter.com/2010/introducing-flockdb |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-nosql |
| Explanation of base terminology | http://stackoverflow.com/questions/3342497/explanation-of-base-terminology |
| NoSQL databases a survey and decision guidance | https://medium.com/baqend-blog/nosql-databases-a-survey-and-decision-guidance-ea7823a822d#.wskogqenq |
| Scalability | http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database |
| Introduction to NoSQL | https://www.youtube.com/watch?v=qI_g07C_Q5I |
| NoSQL patterns | http://horicky.blogspot.com/2009/11/nosql-patterns.html |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sql-or-nosql |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/wXGqG5f.png |
| Source: Transitioning from RDBMS to NoSQL | https://www.infoq.com/articles/Transition-RDBMS-NoSQL/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-sql-or-nosql |
| Scaling up to your first 10 million users | https://www.youtube.com/watch?v=kKjm4ehYiMs |
| SQL vs NoSQL differences | https://www.sitepoint.com/sql-vs-nosql-differences/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#cache |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/Q6z24La.png |
| Source: Scalable system design patterns | http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#client-caching |
| server side | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#reverse-proxy-web-server |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#cdn-caching |
| CDNs | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#content-delivery-network |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#web-server-caching |
| Reverse proxies | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#reverse-proxy-web-server |
| Varnish | https://www.varnish-cache.org/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#database-caching |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#application-caching |
| cache invalidation | https://en.wikipedia.org/wiki/Cache_algorithms |
| least recently used (LRU) | https://en.wikipedia.org/wiki/Cache_replacement_policies#Least_recently_used_(LRU) |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#caching-at-the-database-query-level |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#caching-at-the-object-level |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#when-to-update-the-cache |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#cache-aside |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/ONjORqk.png |
| Source: From cache to in-memory data grid | http://www.slideshare.net/tmatyashovsky/from-cache-to-in-memory-data-grid-introduction-to-hazelcast |
| Memcached | https://memcached.org/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-cache-aside |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#write-through |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/0vBc0hN.png |
| Source: Scalability, availability, stability, patterns | http://www.slideshare.net/jboner/scalability-availability-stability-patterns/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-write-through |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#write-behind-write-back |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/rgSrvjG.png |
| Source: Scalability, availability, stability, patterns | http://www.slideshare.net/jboner/scalability-availability-stability-patterns/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-write-behind |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#refresh-ahead |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/kxtjqgE.png |
| Source: From cache to in-memory data grid | http://www.slideshare.net/tmatyashovsky/from-cache-to-in-memory-data-grid-introduction-to-hazelcast |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-refresh-ahead |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-cache |
| cache invalidation | https://en.wikipedia.org/wiki/Cache_algorithms |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-10 |
| From cache to in-memory data grid | http://www.slideshare.net/tmatyashovsky/from-cache-to-in-memory-data-grid-introduction-to-hazelcast |
| Scalable system design patterns | http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html |
| Introduction to architecting systems for scale | http://lethain.com/introduction-to-architecting-systems-for-scale/ |
| Scalability, availability, stability, patterns | http://www.slideshare.net/jboner/scalability-availability-stability-patterns/ |
| Scalability | http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache |
| AWS ElastiCache strategies | http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Strategies.html |
| Wikipedia | https://en.wikipedia.org/wiki/Cache_(computing) |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#asynchronism |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/54GYsSx.png |
| Source: Intro to architecting systems for scale | http://lethain.com/introduction-to-architecting-systems-for-scale/#platform_layer |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#message-queues |
| Redis | https://redis.io/ |
| RabbitMQ | https://www.rabbitmq.com/ |
| Amazon SQS | https://aws.amazon.com/sqs/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#task-queues |
| Celery | https://docs.celeryproject.org/en/stable/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#back-pressure |
| Back pressure | http://mechanical-sympathy.blogspot.com/2012/05/apply-back-pressure-when-overloaded.html |
| exponential backoff | https://en.wikipedia.org/wiki/Exponential_backoff |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-asynchronism |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-11 |
| It's all a numbers game | https://www.youtube.com/watch?v=1KRYH75wgy4 |
| Applying back pressure when overloaded | http://mechanical-sympathy.blogspot.com/2012/05/apply-back-pressure-when-overloaded.html |
| Little's law | https://en.wikipedia.org/wiki/Little%27s_law |
| What is the difference between a message queue and a task queue? | https://www.quora.com/What-is-the-difference-between-a-message-queue-and-a-task-queue-Why-would-a-task-queue-require-a-message-broker-like-RabbitMQ-Redis-Celery-or-IronMQ-to-function |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#communication |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/5KeocQs.jpg |
| Source: OSI 7 layer model | http://www.escotal.com/osilayer.html |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#hypertext-transfer-protocol-http |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-http |
| What is HTTP? | https://www.nginx.com/resources/glossary/http/ |
| Difference between HTTP and TCP | https://www.quora.com/What-is-the-difference-between-HTTP-protocol-and-TCP-protocol |
| Difference between PUT and PATCH | https://laracasts.com/discuss/channels/general-discussion/whats-the-differences-between-put-and-patch?page=1 |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#transmission-control-protocol-tcp |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/JdAsdvG.jpg |
| Source: How to make a multiplayer game | http://www.wildbunny.co.uk/blog/2012/10/09/how-to-make-a-multi-player-game-part-1/ |
| IP network | https://en.wikipedia.org/wiki/Internet_Protocol |
| handshake | https://en.wikipedia.org/wiki/Handshaking |
| checksum fields | https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Checksum_computation |
| Acknowledgement | https://en.wikipedia.org/wiki/Acknowledgement_(data_networks) |
| flow control | https://en.wikipedia.org/wiki/Flow_control_(data) |
| congestion control | https://en.wikipedia.org/wiki/Network_congestion#Congestion_control |
| memcached | https://memcached.org/ |
| Connection pooling | https://en.wikipedia.org/wiki/Connection_pool |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#user-datagram-protocol-udp |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/yzDrJtA.jpg |
| Source: How to make a multiplayer game | http://www.wildbunny.co.uk/blog/2012/10/09/how-to-make-a-multi-player-game-part-1/ |
| DHCP | https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-tcp-and-udp |
| Networking for game programming | http://gafferongames.com/networking-for-game-programmers/udp-vs-tcp/ |
| Key differences between TCP and UDP protocols | http://www.cyberciti.biz/faq/key-differences-between-tcp-and-udp-protocols/ |
| Difference between TCP and UDP | http://stackoverflow.com/questions/5970383/difference-between-tcp-and-udp |
| Transmission control protocol | https://en.wikipedia.org/wiki/Transmission_Control_Protocol |
| User datagram protocol | https://en.wikipedia.org/wiki/User_Datagram_Protocol |
| Scaling memcache at Facebook | http://www.cs.bu.edu/~jappavoo/jappavoo.github.com/451/papers/memcache-fb.pdf |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#remote-procedure-call-rpc |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/iF4Mkb5.png |
| Source: Crack the system design interview | http://www.puncsky.com/blog/2016-02-13-crack-the-system-design-interview |
| Protobuf | https://developers.google.com/protocol-buffers/ |
| Thrift | https://thrift.apache.org/ |
| Avro | https://avro.apache.org/docs/current/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-rpc |
| RPC calls are properly cached | http://etherealbits.com/2012/12/debunking-the-myths-of-rpc-rest/ |
| Squid | http://www.squid-cache.org/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#representational-state-transfer-rest |
| HATEOAS | http://restcookbook.com/Basics/hateoas/ |
| representation through headers | https://github.com/for-GET/know-your-http-well/blob/master/headers.md |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#disadvantages-rest |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#rpc-and-rest-calls-comparison |
| Source: Do you really know why you prefer REST over RPC | https://apihandyman.io/do-you-really-know-why-you-prefer-rest-over-rpc/ |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-rest-and-rpc |
| Do you really know why you prefer REST over RPC | https://apihandyman.io/do-you-really-know-why-you-prefer-rest-over-rpc/ |
| When are RPC-ish approaches more appropriate than REST? | http://programmers.stackexchange.com/a/181186 |
| REST vs JSON-RPC | http://stackoverflow.com/questions/15056878/rest-vs-json-rpc |
| Debunking the myths of RPC and REST | http://etherealbits.com/2012/12/debunking-the-myths-of-rpc-rest/ |
| What are the drawbacks of using REST | https://www.quora.com/What-are-the-drawbacks-of-using-RESTful-APIs |
| Crack the system design interview | http://www.puncsky.com/blog/2016-02-13-crack-the-system-design-interview |
| Thrift | https://code.facebook.com/posts/1468950976659943/ |
| Why REST for internal use and not RPC | http://arstechnica.com/civis/viewtopic.php?t=1190508 |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#security |
| contributing | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#contributing |
| XSS | https://en.wikipedia.org/wiki/Cross-site_scripting |
| SQL injection | https://en.wikipedia.org/wiki/SQL_injection |
| least privilege | https://en.wikipedia.org/wiki/Principle_of_least_privilege |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-12 |
| API security checklist | https://github.com/shieldfy/API-Security-Checklist |
| Security guide for developers | https://github.com/FallibleInc/security-guide-for-developers |
| OWASP top ten | https://www.owasp.org/index.php/OWASP_Top_Ten_Cheat_Sheet |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#appendix |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#powers-of-two-table |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-13 |
| Powers of two | https://en.wikipedia.org/wiki/Power_of_two |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#latency-numbers-every-programmer-should-know |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#latency-numbers-visualized |
| https://camo.githubusercontent.com/77f72259e1eb58596b564d1ad823af1853bc60a3/687474703a2f2f692e696d6775722e636f6d2f6b307431652e706e67 |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-14 |
| Latency numbers every programmer should know - 1 | https://gist.github.com/jboner/2841832 |
| Latency numbers every programmer should know - 2 | https://gist.github.com/hellerbarde/2843375 |
| Designs, lessons, and advice from building large distributed systems | http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf |
| Software Engineering Advice from Building Large-Scale Distributed Systems | https://static.googleusercontent.com/media/research.google.com/en//people/jeff/stanford-295-talk.pdf |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#additional-system-design-interview-questions |
| youtube.com | https://www.youtube.com/watch?v=PE4gwstWhmc |
| queue.acm.org | http://queue.acm.org/detail.cfm?id=988407 |
| stackexchange.com | http://programmers.stackexchange.com/questions/38324/interview-question-how-would-you-implement-google-search |
| ardendertat.com | http://www.ardendertat.com/2012/01/11/implementing-search-engines/ |
| stanford.edu | http://infolab.stanford.edu/~backrub/google.html |
| quora.com | https://www.quora.com/How-can-I-build-a-web-crawler-from-scratch |
| code.google.com | https://code.google.com/p/google-mobwrite/ |
| neil.fraser.name | https://neil.fraser.name/writing/sync/ |
| slideshare.net | http://www.slideshare.net/dvirsky/introduction-to-redis |
| slideshare.net | http://www.slideshare.net/oemebamo/introduction-to-memcached |
| hulu.com | https://web.archive.org/web/20170406065247/http://tech.hulu.com/blog/2011/09/19/recommendation-system.html |
| ijcai13.org | http://ijcai13.org/files/tutorial_slides/td3.pdf |
| n00tc0d3r.blogspot.com | http://n00tc0d3r.blogspot.com/ |
| highscalability.com | http://highscalability.com/blog/2014/2/26/the-whatsapp-architecture-facebook-bought-for-19-billion.html |
| highscalability.com | http://highscalability.com/flickr-architecture |
| highscalability.com | http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html |
| quora.com | http://www.quora.com/What-are-best-practices-for-building-something-like-a-News-Feed |
| quora.com | http://www.quora.com/Activity-Streams/What-are-the-scaling-issues-to-keep-in-mind-while-developing-a-social-network-feed |
| slideshare.net | http://www.slideshare.net/danmckinley/etsy-activity-feeds-architecture |
| facebook.com | https://www.facebook.com/note.php?note_id=10150468255628920 |
| highscalability.com | http://highscalability.com/blog/2012/1/23/facebook-timeline-brought-to-you-by-the-power-of-denormaliza.html |
| erlang-factory.com | http://www.erlang-factory.com/upload/presentations/31/EugeneLetuchy-ErlangatFacebook.pdf |
| facebook.com | https://www.facebook.com/note.php?note_id=14218138919&id=9445547199&index=0 |
| facebook.com | https://www.facebook.com/notes/facebook-engineering/under-the-hood-building-out-the-infrastructure-for-graph-search/10151347573598920 |
| facebook.com | https://www.facebook.com/notes/facebook-engineering/under-the-hood-indexing-and-ranking-in-graph-search/10151361720763920 |
| facebook.com | https://www.facebook.com/notes/facebook-engineering/under-the-hood-the-natural-language-interface-of-graph-search/10151432733048920 |
| figshare.com | https://figshare.com/articles/Globally_distributed_content_delivery/6605972 |
| michael-noll.com | http://www.michael-noll.com/blog/2013/01/18/implementing-real-time-trending-topics-in-storm/ |
| snikolov .wordpress.com | http://snikolov.wordpress.com/2012/11/14/early-detection-of-twitter-trends/ |
| blog.twitter.com | https://blog.twitter.com/2010/announcing-snowflake |
| github.com | https://github.com/twitter/snowflake/ |
| cs.ucsb.edu | https://www.cs.ucsb.edu/sites/cs.ucsb.edu/files/docs/reports/2005-23.pdf |
| wpi.edu | http://davis.wpi.edu/xmdv/docs/EDBT11-diyang.pdf |
| highscalability.com | http://highscalability.com/blog/2009/8/24/how-google-serves-data-from-multiple-datacenters.html |
| indieflashblog.com | https://web.archive.org/web/20180929181117/http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html |
| buildnewgames.com | http://buildnewgames.com/real-time-multiplayer/ |
| stuffwithstuff.com | http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/ |
| washington.edu | http://courses.cs.washington.edu/courses/csep521/07wi/prj/rick.pdf |
| https://stripe.com/blog/ | https://stripe.com/blog/rate-limiters |
| Jane Street | https://youtu.be/b1e4t2k2KJY |
| Golang Implementation | https://around25.com/blog/building-a-trading-engine-for-a-crypto-exchange/ |
| Go Implemenation | http://bhomnick.net/building-a-simple-limit-order-in-go/ |
| Contribute | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#contributing |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#real-world-architectures |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/blob/master/images/TcUo2fw.png |
| Source: Twitter timelines at scale | https://www.infoq.com/presentations/Twitter-Timeline-Scalability |
| research.google.com | http://static.googleusercontent.com/media/research.google.com/zh-CN/us/archive/mapreduce-osdi04.pdf |
| slideshare.net | http://www.slideshare.net/AGrishchenko/apache-spark-architecture |
| slideshare.net | http://www.slideshare.net/previa/storm-16094009 |
| harvard.edu | http://www.read.seas.harvard.edu/~kohler/class/cs239-w08/chang06bigtable.pdf |
| slideshare.net | http://www.slideshare.net/alexbaranau/intro-to-hbase |
| slideshare.net | http://www.slideshare.net/planetcassandra/cassandra-introduction-features-30103666 |
| harvard.edu | http://www.read.seas.harvard.edu/~kohler/class/cs239-w08/decandia07dynamo.pdf |
| slideshare.net | http://www.slideshare.net/mdirolf/introduction-to-mongodb |
| research.google.com | http://research.google.com/archive/spanner-osdi2012.pdf |
| slideshare.net | http://www.slideshare.net/oemebamo/introduction-to-memcached |
| slideshare.net | http://www.slideshare.net/dvirsky/introduction-to-redis |
| research.google.com | http://static.googleusercontent.com/media/research.google.com/zh-CN/us/archive/gfs-sosp2003.pdf |
| apache.org | http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html |
| research.google.com | http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en/us/archive/chubby-osdi06.pdf |
| research.google.com | http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36356.pdf |
| slideshare.net | http://www.slideshare.net/mumrah/kafka-talk-tri-hug |
| slideshare.net | http://www.slideshare.net/sauravhaloi/introduction-to-apache-zookeeper |
| Contribute | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#contributing |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#company-architectures |
| Amazon architecture | http://highscalability.com/amazon-architecture |
| Producing 1,500 hours of audio every day | http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html |
| Realtime datamining At 120,000 tweets per second | http://highscalability.com/blog/2011/11/29/datasift-architecture-realtime-datamining-at-120000-tweets-p.html |
| How we've scaled Dropbox | https://www.youtube.com/watch?v=PE4gwstWhmc |
| Operating At 100,000 duh nuh nuhs per second | http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html |
| Google architecture | http://highscalability.com/google-architecture |
| 14 million users, terabytes of photos | http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html |
| What powers Instagram | http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances |
| Justin.Tv's live video broadcasting architecture | http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html |
| Scaling memcached at Facebook | https://cs.uwaterloo.ca/~brecht/courses/854-Emerging-2014/readings/key-value/fb-memcached-nsdi-2013.pdf |
| TAO: Facebook’s distributed data store for the social graph | https://cs.uwaterloo.ca/~brecht/courses/854-Emerging-2014/readings/data-store/tao-facebook-distributed-datastore-atc-2013.pdf |
| Facebook’s photo storage | https://www.usenix.org/legacy/event/osdi10/tech/full_papers/Beaver.pdf |
| How Facebook Live Streams To 800,000 Simultaneous Viewers | http://highscalability.com/blog/2016/6/27/how-facebook-live-streams-to-800000-simultaneous-viewers.html |
| Flickr architecture | http://highscalability.com/flickr-architecture |
| From 0 to one million users in 6 weeks | http://highscalability.com/blog/2013/6/18/scaling-mailbox-from-0-to-one-million-users-in-6-weeks-and-1.html |
| A 360 Degree View Of The Entire Netflix Stack | http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html |
| Netflix: What Happens When You Press Play? | http://highscalability.com/blog/2017/12/11/netflix-what-happens-when-you-press-play.html |
| From 0 To 10s of billions of page views a month | http://highscalability.com/blog/2013/4/15/scaling-pinterest-from-0-to-10s-of-billions-of-page-views-a.html |
| 18 million visitors, 10x growth, 12 employees | http://highscalability.com/blog/2012/5/21/pinterest-architecture-update-18-million-visitors-10x-growth.html |
| 50 million monthly users and growing | http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html |
| PlentyOfFish architecture | http://highscalability.com/plentyoffish-architecture |
| How they handle 1.3 billion transactions a day | http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html |
| Stack Overflow architecture | http://highscalability.com/blog/2009/8/5/stack-overflow-architecture.html |
| 40M visitors, 200M dynamic page views, 30TB data | http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html |
| 15 billion page views a month | http://highscalability.com/blog/2012/2/13/tumblr-architecture-15-billion-page-views-a-month-and-harder.html |
| Making Twitter 10000 percent faster | http://highscalability.com/scaling-twitter-making-twitter-10000-percent-faster |
| Storing 250 million tweets a day using MySQL | http://highscalability.com/blog/2011/12/19/how-twitter-stores-250-million-tweets-a-day-using-mysql.html |
| 150M active users, 300K QPS, a 22 MB/S firehose | http://highscalability.com/blog/2013/7/8/the-architecture-twitter-uses-to-deal-with-150m-active-users.html |
| Timelines at scale | https://www.infoq.com/presentations/Twitter-Timeline-Scalability |
| Big and small data at Twitter | https://www.youtube.com/watch?v=5cKTP36HVgI |
| Operations at Twitter: scaling beyond 100 million users | https://www.youtube.com/watch?v=z8LU0Cj6BOU |
| How Twitter Handles 3,000 Images Per Second | http://highscalability.com/blog/2016/4/20/how-twitter-handles-3000-images-per-second.html |
| How Uber scales their real-time market platform | http://highscalability.com/blog/2015/9/14/how-uber-scales-their-real-time-market-platform.html |
| Lessons Learned From Scaling Uber To 2000 Engineers, 1000 Services, And 8000 Git Repositories | http://highscalability.com/blog/2016/10/12/lessons-learned-from-scaling-uber-to-2000-engineers-1000-ser.html |
| The WhatsApp architecture Facebook bought for $19 billion | http://highscalability.com/blog/2014/2/26/the-whatsapp-architecture-facebook-bought-for-19-billion.html |
| YouTube scalability | https://www.youtube.com/watch?v=w5WVu624fY8 |
| YouTube architecture | http://highscalability.com/youtube-architecture |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#company-engineering-blogs |
| Airbnb Engineering | http://nerds.airbnb.com/ |
| Atlassian Developers | https://developer.atlassian.com/blog/ |
| AWS Blog | https://aws.amazon.com/blogs/aws/ |
| Bitly Engineering Blog | http://word.bitly.com/ |
| Box Blogs | https://blog.box.com/blog/category/engineering |
| Cloudera Developer Blog | http://blog.cloudera.com/ |
| Dropbox Tech Blog | https://tech.dropbox.com/ |
| Engineering at Quora | https://www.quora.com/q/quoraengineering |
| Ebay Tech Blog | http://www.ebaytechblog.com/ |
| Evernote Tech Blog | https://blog.evernote.com/tech/ |
| Etsy Code as Craft | http://codeascraft.com/ |
| Facebook Engineering | https://www.facebook.com/Engineering |
| Flickr Code | http://code.flickr.net/ |
| Foursquare Engineering Blog | http://engineering.foursquare.com/ |
| GitHub Engineering Blog | https://github.blog/category/engineering |
| Google Research Blog | http://googleresearch.blogspot.com/ |
| Groupon Engineering Blog | https://engineering.groupon.com/ |
| Heroku Engineering Blog | https://engineering.heroku.com/ |
| Hubspot Engineering Blog | http://product.hubspot.com/blog/topic/engineering |
| High Scalability | http://highscalability.com/ |
| Instagram Engineering | http://instagram-engineering.tumblr.com/ |
| Intel Software Blog | https://software.intel.com/en-us/blogs/ |
| Jane Street Tech Blog | https://blogs.janestreet.com/category/ocaml/ |
| LinkedIn Engineering | http://engineering.linkedin.com/blog |
| Microsoft Engineering | https://engineering.microsoft.com/ |
| Microsoft Python Engineering | https://blogs.msdn.microsoft.com/pythonengineering/ |
| Netflix Tech Blog | http://techblog.netflix.com/ |
| Paypal Developer Blog | https://medium.com/paypal-engineering |
| Pinterest Engineering Blog | https://medium.com/@Pinterest_Engineering |
| Reddit Blog | http://www.redditblog.com/ |
| Salesforce Engineering Blog | https://developer.salesforce.com/blogs/engineering/ |
| Slack Engineering Blog | https://slack.engineering/ |
| Spotify Labs | https://labs.spotify.com/ |
| Twilio Engineering Blog | http://www.twilio.com/engineering |
| Twitter Engineering | https://blog.twitter.com/engineering/ |
| Uber Engineering Blog | http://eng.uber.com/ |
| Yahoo Engineering Blog | http://yahooeng.tumblr.com/ |
| Yelp Engineering Blog | http://engineeringblog.yelp.com/ |
| Zynga Engineering Blog | https://www.zynga.com/blogs/engineering |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#sources-and-further-reading-15 |
| kilimchoi/engineering-blogs | https://github.com/kilimchoi/engineering-blogs |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#under-development |
| Contribute | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#contributing |
| Contribute | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#contributing |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#credits |
| Hired in tech | http://www.hiredintech.com/system-design/the-system-design-process/ |
| Cracking the coding interview | https://www.amazon.com/dp/0984782850/ |
| High scalability | http://highscalability.com/ |
| checkcheckzz/system-design-interview | https://github.com/checkcheckzz/system-design-interview |
| shashank88/system_design | https://github.com/shashank88/system_design |
| mmcgrana/services-engineering | https://github.com/mmcgrana/services-engineering |
| System design cheat sheet | https://gist.github.com/vasanthk/485d1c25737e8e72759f |
| A distributed systems reading list | http://dancres.github.io/Pages/ |
| Cracking the system design interview | http://www.puncsky.com/blog/2016-02-13-crack-the-system-design-interview |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#contact-info |
| GitHub page | https://github.com/donnemartin |
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#license |
|
Readme
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#readme-ov-file |
|
View license
| https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer#License-1-ov-file |
| Please reload this page | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer |
|
Activity | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/activity |
|
Custom properties | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/custom-properties |
|
0
stars | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/stargazers |
|
0
watching | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/watchers |
|
0
forks | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/forks |
|
Report repository
| https://patch-diff.githubusercontent.com/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2FApressJavaCode%2Fsystem-design-primer&report=ApressJavaCode+%28user%29 |
| Releases | https://patch-diff.githubusercontent.com/ApressJavaCode/system-design-primer/releases |
| Packages
0 | https://patch-diff.githubusercontent.com/orgs/ApressJavaCode/packages?repo_name=system-design-primer |
|
| https://github.com |
| Terms | https://docs.github.com/site-policy/github-terms/github-terms-of-service |
| Privacy | https://docs.github.com/site-policy/privacy-policies/github-privacy-statement |
| Security | https://github.com/security |
| Status | https://www.githubstatus.com/ |
| Community | https://github.community/ |
| Docs | https://docs.github.com/ |
| Contact | https://support.github.com?tags=dotcom-footer |