donnemartin / system-design-primer Goto Github PK
View Code? Open in Web Editor NEWLearn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.
License: Other
Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.
License: Other
Please convert this to a Gitbook. It improves readability and maintainability.
Hello,
Just for an information, and the diagram looks really good.
Can you please share which tool you used to create the diagram ?
Thanks
Hi Everyone,
I'll be temporarily unavailable starting April 17 and won't be able to respond to issues or pull requests. I'm hoping I'll be available in a couple of weeks, but I might not be responsive for several weeks.
Sorry for the inconvenience.
cc: @hwclass @sqrthree @emrahtoy @IuryAlves
-Donne
Maintainer(s): @kevingo
Please check out the Translations Contributing Guidelines.
Original translations thread: #28
Interested in helping? Let us know!
Maintainer(s): @tsukukobaan
Please check out the Translations Contributing Guidelines.
Original translations thread: #28
Interested in helping? Let us know!
Hi,
Given a successfully e-commerce platform like Amazon, when there are millions of sellers and buyers. If a seller is selling many 20 articles and receives 30 concurrent buying request from customers. How will the platform addresses effectively and efficiently all those concurrent requests.
Here is what I thought of:
Synchronizing the database for any buying request. The problem here is that we will have some latency and performance issues.
Any Better Solutions.
Thanks.
Hi @donnemartin, in order to make Traditional Chinese version more complete, I want to work on the solution part. Is it ok with you?
My idea is to put the translation markdown inside each solution folder itself. For example, I will put the mint solution at https://github.com/donnemartin/system-design-primer/tree/master/solutions/system_design/mint/README-zh-TW.md here.
Any idea?
This would be awesome if this was the platform-agnostic companion guide with the Open Amazon Web Services guide posted and maintained under github.com/open-guides.
The one section that's missing is testing. Howdoyou validate the implementation of such portions of a stack?
State is currently an undefined name in the context of social_graph_snippets.py so the code would raise a NameError at runtime.
Is State merely an Enum with two items (visited and unvisited) or is it more complex than that? If it is just the simple Enum then perhaps it would be cleaner to rename the field to be source.state_visited and use the values True and False.
flake8 testing of https://github.com/donnemartin/system-design-primer on Python 3.6.3
$ flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics
./solutions/system_design/social_graph/social_graph_snippets.py:10:30: F821 undefined name 'State'
source.visit_state = State.visited
^
./solutions/system_design/social_graph/social_graph_snippets.py:17:49: F821 undefined name 'State'
if adjacent_node.visit_state == State.unvisited:
^
./solutions/system_design/social_graph/social_graph_snippets.py:19:49: F821 undefined name 'State'
adjacent_node.visit_state = State.visited
^
3 F821 undefined name 'State'
Discovered via #93
Maintainer(s): @hwclass @emrahtoy
Please check out the Translations Contributing Guidelines.
Original translations thread: #28
Interested in helping? Let us know!
Currently the answers are directly in code format, it is missing the ideas and concepts.
Would really appreciate if I can learn the thinking behind those answers, or any relevant link which can help.
Sorry for asking too much
Maintainer(s): @DmitryAuine
Please check out the Translations Contributing Guidelines.
Original translations thread: #28
Interested in helping? Let us know!
I will make a PR soon
https://docs.google.com/document/d/1w3qb6SS1Hycyce5Fg5mVMdzkGYXTRskSf57IoD98ZQw/edit?usp=sharing
Maintainer(s): @sleweddock
Please check out the Translations Contributing Guidelines.
Original translations thread: #28
Interested in helping? Let us know!
Currently being translated.
If you'd like to translate into spanish please state so below
Mentioning a rough / average time-to-read a particular topic may help future readers plan their progress in a little better way, especially when they have an upcoming interview.
The post says - "Responses return the most recent version of the data available on the a node, which might not be the latest."
Can this be changed or finetuned ? Maybe something like -
"Responses return the most readily available version of the data available on any node, which might not be the latest."
Again here we talking about multi-node system ( on account of P of CAP). So in essence there is no assurance that previous WRITE/UPDATE would have cascaded to all nodes thereby giving C (of CAP). On the other hand the consumer does a look-up and which ever node is hit , returns the data ( or its state)
Hi :)
Interested in helping? Let us know!
cache tombstones etc
Coding deck
this link not work
It would be nice to have pointers to strategies for configuring and deploying a large stack. This is a huge topic and might be better served in a companion document.
Related to #27 because having a test environment implies configuring the system for testing.
I'd love to be able to read this as a PDF, can a pdf generated per-commit be added to the repo?
EDIT: Or a script to generate a pdf?
Edit by donnemartin: Thanks to @canhlinh for making a PDF version of the repo as of March 28, 2017! We're looking into perhaps a Gitbook version of this repo which supports PDF downloads.
"Crack the system design interview" Link is broken. Here is the new link to replace https://www.puncsky.com/blog/2016-02-13-crack-the-system-design-interview
Edit by donnemartin:
Looking to help with translations? See the following:
Hi!
We used vulture over your project to detect any unused code. Please have a look at the results:
https://github.com/jendrikseipp/vulture-analysis/blob/master/system-design-primer/system-design-primer.md
We would love to have your feedback.
It seems that you have changed repo name from system-design-primer-interview
to system-design-primer
, while using hard link (https://github.com/donnemartin/...
) inside the readme
s.
I suggest to user Github relative link schema instead.
Maintainer(s): @sqrthree
Please check out the Translations Contributing Guidelines.
Original translations thread: #28
Interested in helping? Let us know!
Hi, I created this issue to start working on Vietnamese translation.
Maintainer(s): @tranlyvu @duynguyenhoang
Please check out the Translations Contributing Guidelines.
Original translations thread: #28
Interested in helping? Let us know!
Maintainer(s): @mdabek
Please check out the Translations Contributing Guidelines.
Original translations thread: #28
Interested in helping? Let us know!
I am working on ##polish## translation of the document on the forked repository (https://github.com/mdabek/system-design-primer).
I have some work done already. Is anyone willing to help?
Hi @donnemartin , I am big fan of your work. I have a question, how you draw these nice diagram, l mean which tools did you used. Thanks.
EDIT by donnemartin: 👍 to indicate interest in the templates.
It would be great to have a link to the Dyn DDoS attack summary under the disadvantages of DNS section. You have already mentioned the Twitter Attack.
Nearly all references in Company architectures section point on very old article some of them 10 yrs old and 'youngest' 5 yrs old.
could be good to have new infos if available.
very nice job for the conceptual presentation of components.
Maintainer(s): @Belonias
Please check out the Translations Contributing Guidelines.
Original translations thread: #28
Interested in helping? Let us know!
Maintainer(s): @pgoodjohn
Please check out the Translations Contributing Guidelines.
Original translations thread: #28
Interested in helping? Let us know!
I will make a PR soon. I'm working on https://github.com/mingrammer/system-design-primer
This guide contains a pretty awesome overview of what matters when it comes to designing systems on a high-level technical level.
I loved reading over it all.
Fleshing out some information about application, transport, and network layers. Maybe covering the interaction between DNS/ARP/BGP as well would be valuable, imho.
https://github.com/donnemartin/system-design-primer#communication
In Calculate usage,
6,000 tweets per second
15 billion tweets delivered on fanout per month * (400 requests per second / 1 billion requests per month)
60 thousand tweets delivered on fanout per second
150 billion tweets delivered on fanout per month * (400 requests per second / 1 billion requests per month)
We probably want to use "15 billion tweets per month" instead.
Hi,it's very beautiful -the frame about the system-design,and i want to know that which tool to draw it!
thank you!
Using Zookeeper as a example of service discovery might not be a god idea. Why? The way you run and manage zookeeper is hard, the way zookeeper knows that a service is healthy is a bit fragile and does not allow node failure in the ZK cluster. Using something like consul as the example were the health checking is done differently and is pull based makes it more robust and is probably a better example to point to
zookeeper works fine if you are looking for a AP solution for master elections and things like that but for service discovery it's not that suitable
using consul means that you need a http endpoint that consul can health check
using zookeeper means that you need application logic to hold a tcp connection open
Maintainer(s): @mingrammer
Please check out the Translations Contributing Guidelines.
Original translations thread: #28
Interested in helping? Let us know!
I will make a PR soon. I'm working on https://github.com/mingrammer/system-design-primer
Currently, the unit prefix for bytes is using Metric prefixes
. For correctness, I think its should be Binary prefix
. For example 1024byte
should be 1kiB
rather then 1KB
.
Maintainer(s): @IuryAlves
Please check out the Translations Contributing Guidelines.
Original translations thread: #28
Interested in helping? Let us know!
We'll use a multi-step MapReduce:
Step 1 - Transform the data to (category, product_id), sum(quantity)
Step 2 - Perform a distributed sort
Why one should perform distributed sort then stores data in a SQL database
SQL tables don't preserve order
@donnemartin - your section on reverse proxies shows a diagram (from Wikipedia) of a forward, not a reverse proxy.
Excellent resource by the way (from the sections I've looked at anyway!).
Maintainer(s): @aymns
Please check out the Translations Contributing Guidelines.
Original translations thread: #28
Interested in helping? Let us know!
Hi,
Thanks for the very interesting information there, I would like to contribute by translating the content to Arabic language.
I am a native Arabic speaker from Palestine, and i will maintain the content and will ask native speaker friends to review and help.
Thanks
From this source
http://www.travelblogadvice.com/technical/the-differences-between-push-and-pull-cdns/, the push CDN is better for high traffic websites, and pull cdn is better for low traffic websites. However, it is stated the opposite way in your description. It is probably a typo on your article
See #3 (comment)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.