設計出色的系統需要多年知識的累積。一條捷徑是直接深入鑽研真實世界的系統架構。下面整理了一份很有幫助的閱讀清單。
我們強烈建議你同時關注其中共通的設計原則與底層所使用的技術。深入研究每項技術、理解它解決了什麼問題,是強化知識基礎、磨練設計流程的好方法。
真實世界的系統#
以下資料能幫你理解各家公司背後真實系統架構的整體設計思路。
Facebook#
- Facebook Timeline: Brought To You By The Power Of Denormalization:https://goo.gl/FCNrbm ↗
- Scale at Facebook:https://goo.gl/NGTdCs ↗
- Building Timeline: Scaling up to hold your life story:https://goo.gl/8p5wDV ↗
- Erlang at Facebook(Facebook chat):https://goo.gl/zSLHrj ↗
- Facebook Chat:https://goo.gl/qzSiWC ↗
- Finding a needle in Haystack: Facebook’s photo storage:https://goo.gl/edj4FL ↗
- Serving Facebook Multifeed: Efficiency, performance gains through redesign:https://goo.gl/adFVMQ ↗
- Scaling Memcache at Facebook:https://goo.gl/rZiAhX ↗
- TAO: Facebook’s Distributed Data Store for the Social Graph:https://goo.gl/Tk1DyH ↗
Amazon#
- Amazon Architecture:https://goo.gl/k4feoW ↗
- Dynamo: Amazon’s Highly Available Key-value Store:https://goo.gl/C7zxDL ↗
Netflix#
- A 360 Degree View Of The Entire Netflix Stack:https://goo.gl/rYSDTz ↗
- It’s All A/Bout Testing: The Netflix Experimentation Platform:https://goo.gl/agbA4K ↗
- Netflix Recommendations: Beyond the 5 stars (Part 1):https://goo.gl/A4FkYi ↗
- Netflix Recommendations: Beyond the 5 stars (Part 2):https://goo.gl/XNPMXm ↗
Google#
- Google Architecture:https://goo.gl/dvkDiY ↗
- The Google File System(Google Docs):https://goo.gl/xj5n9R ↗
- Differential Synchronization(Google Docs):https://goo.gl/9zqG7x ↗
- YouTube Architecture:https://goo.gl/mCPRUF ↗
- Seattle Conference on Scalability: YouTube Scalability:https://goo.gl/dH3zYq ↗
- Bigtable: A Distributed Storage System for Structured Data:https://goo.gl/6NaZca ↗
Instagram#
- Instagram Architecture: 14 Million Users, Terabytes Of Photos, 100s Of Instances, Dozens Of Technologies:https://goo.gl/s1VcW5 ↗
Twitter#
- The Architecture Twitter Uses To Deal With 150M Active Users:https://goo.gl/EwvfRd ↗
- Scaling Twitter: Making Twitter 10000 Percent Faster:https://goo.gl/nYGC1k ↗
- Announcing Snowflake(Snowflake 是一個能在大規模下產生唯一 ID 編號、並提供若干簡單保證的網路服務):https://goo.gl/GzVWYm ↗
- Timelines at Scale:https://goo.gl/8KbqTy ↗
Uber#
- How Uber Scales Their Real-Time Market Platform:https://goo.gl/kGZuVy ↗
Pinterest#
- Scaling Pinterest:https://goo.gl/KtmjW3 ↗
- Pinterest Architecture Update:https://goo.gl/w6rRsf ↗
LinkedIn#
- A Brief History of Scaling LinkedIn:https://goo.gl/8A1Pi8 ↗
其他#
- Flickr Architecture:https://goo.gl/dWtgYa ↗
- How We’ve Scaled Dropbox:https://goo.gl/NjBDtC ↗
- The WhatsApp Architecture Facebook Bought For $19 Billion:https://bit.ly/2AHJnFn ↗
公司工程部落格#
如果你即將去某間公司面試,閱讀他們的工程部落格、熟悉他們所採用與實作的技術與系統,會是個很棒的主意。除此之外,工程部落格也提供了某些領域寶貴的洞見。
定期閱讀它們能幫助我們成為更出色的工程師。
下面是一份來自知名大公司與新創的工程部落格清單。
- Airbnb:https://medium.com/airbnb-engineering ↗
- Amazon:https://developer.amazon.com/blogs 🛒
- Asana:https://blog.asana.com/category/eng ↗
- Atlassian:https://developer.atlassian.com/blog ↗
- Bittorrent:http://engineering.bittorrent.com ↗
- Cloudera:https://blog.cloudera.com ↗
- Docker:https://blog.docker.com ↗
- Dropbox:https://blogs.dropbox.com/tech ↗
- eBay:http://www.ebaytechblog.com ↗
- Facebook:https://code.facebook.com/posts ↗
- GitHub:https://githubengineering.com ↗
- Google:https://developers.googleblog.com ↗
- Groupon:https://engineering.groupon.com ↗
- Highscalability:http://highscalability.com ↗
- Instacart:https://tech.instacart.com ↗
- Instagram:https://engineering.instagram.com ↗
- Linkedin:https://engineering.linkedin.com/blog ↗
- Mixpanel:https://mixpanel.com/blog ↗
- Netflix:https://medium.com/netflix-techblog ↗
- Nextdoor:https://engblog.nextdoor.com ↗
- PayPal:https://www.paypal-engineering.com ↗
- Pinterest:https://engineering.pinterest.com ↗
- Quora:https://engineering.quora.com ↗
- Reddit:https://redditblog.com ↗
- Salesforce:https://engineering.salesforce.com/blog/ ↗
- Shopify:https://engineering.shopify.com ↗
- Slack:https://slack.engineering ↗
- Soundcloud:https://developers.soundcloud.com/blog ↗
- Spotify:https://labs.spotify.com ↗
- Stripe:https://stripe.com/blog/engineering ↗
- System design primer:https://github.com/donnemartin/system-design-primer ↗
- Twitter:https://blog.twitter.com/engineering/en_us.html ↗
- Thumbtack:https://www.thumbtack.com/engineering ↗
- Uber:http://eng.uber.com ↗
- Yahoo:https://developer.yahoo.com/blogs/ ↗
- Yelp:https://engineeringblog.yelp.com ↗
- Zoom:https://medium.com/zoom-developer-blog ↗
恭喜!你已經來到這份面試指南的尾聲。你已累積了設計系統所需的技能與知識。並非每個人都有紀律去學完你所學過的這一切,請花一點時間,給自己一個鼓勵的拍肩,你的努力終將獲得回報。
拿到夢想中的工作是一段漫長旅程,需要投入大量時間與心力。熟能生巧。祝你好運!
感謝你購買並閱讀本書。沒有像你這樣的讀者,就沒有我們的作品。希望你享受這趟學習旅程!