1. 程式人生 > >System Design——什麼是“SystemDesign”問題

System Design——什麼是“SystemDesign”問題

應公司老大需要,開始學習System Design的知識,並做一個專欄整理。第一part是就hiredintech上的知識做一個基礎學習,後續會再補充一些常見例子具體分析。這次也是我第一次開專欄,希望可以做好!

-------------------------------分隔符---------------------------------------------------------------------------------------

什麼是System Design問題?當我們在設計某些高等級的軟體系統的時候需要考慮這類問題,它可以是面向web的服務,REST風格的API,peer-to-peer的桌面應用等等。具體問題也會隨著場景不同公司不同而各異。

一些例子:

  • 設計一個類似bit.ly的URL短服務
  • 如何實現Google Search
  • 設計一個允許玩家互相之間下棋的CS應用
  • 如何儲存類似Facebook這樣的社交網站的使用者關係資料?如何實現當用戶的好友與使用者喜歡同樣的東西的時候使用者可以收到訊息通知?

別害怕!

這些問題可能剛開始看有些令人無從下手,那如果在面試中被問道這個問題,怎麼才能在20-30分鐘內設計出Google Search的呢?同樣的工作,可能許多聰明的人都要花好幾年來做好它。所以在面試中面試官並沒有期望你能夠真正做到那一點(當然,要是你能做到就厲害啦!(╯‵□′)╯︵┻━┻)。

在面試中遇到這種問題的話,面試官更多的是考察你思考問題的過程和解決問題的方式。最好能夠討論得到的是一個high-level的結構設計,能夠解決問題達到目標同時注意到系統的限制,考察點在於你所設計的系統的瓶頸和常見問題的處理方式。

對於System Design的問題,通常沒有一個標準答案,解法也是多種多樣的。注意面試官給定的條件或者實際的問題環境條件,儘量保證自己的答案能夠覆蓋所有的情況。

我們的方法

解決System Design問題需要正確的策略也需要對應的知識。策略的重要性在於能夠發行並找到當下的切入點和關鍵點,相關知識儲備在於把問題真正的解決。所以這一部分的學習從策略和知識兩方面展開。

問題彙總

我們統計了當碰到System Design問題時,同學主要遇到的兩大挑戰和問題:

  • 當試圖解決問題時沒有章法,陷入困境
  • 對於如何恰當地設計有相當規模的系統缺乏堅實的理解

解決這兩個問題是這一系列文章課程所期望的目標。

系統設計過程

首先要學會的一件事就是:將我們目前接觸一個System Design問題時候混亂無章法的做法替換為條理清晰的處理方法。後面的章節中包含了從接手一個問題到完成它所需要經歷的所有步驟。

設計可擴充套件式的架構

在有了正確的處理方法之後,第二步需要跨越的障礙是設計具有良好可擴充套件性的系統架構。

擴充套件性是系統設計過程中的第四步所需要考慮的。這一塊是需要好好處理的,因為這一塊往往是設計一個系統的重點,同樣也是設計者最為頭疼的一部分。

為了充實這一部分的知識儲備,這系列的文章會介紹這方面的理論知識,同時會通過分析周圍大型網站,比如Instagram, TripAdvisor, Salesforce.com, StackOverflow等來介紹。

相關推薦

System Design——什麼是“SystemDesign”問題

應公司老大需要,開始學習System Design的知識,並做一個專欄整理。第一part是就hiredintech上的知識做一個基礎學習,後續會再補充一些常見例子具體分析。這次也是我第一次開專欄,希望

Ng第十一課:機器學習系統的設計(Machine Learning System Design)

未能 計算公式 pos 構建 我們 行動 mic 哪些 指標 11.1 首先要做什麽 11.2 誤差分析 11.3 類偏斜的誤差度量 11.4 查全率和查準率之間的權衡 11.5 機器學習的數據 11.1 首先要做什麽 在接下來的視頻將談到機器

斯坦福大學公開課機器學習:machine learning system design | trading off precision and recall(F score公式的提出:學習算法中如何平衡(取舍)查準率和召回率的數值)

ron 需要 color 不可 關系 machine 同時 機器學習 pos 一般來說,召回率和查準率的關系如下:1、如果需要很高的置信度的話,查準率會很高,相應的召回率很低;2、如果需要避免假陰性的話,召回率會很高,查準率會很低。下圖右邊顯示的是召回率和查準率在一個學習算

斯坦福大學公開課機器學習:machine learning system design | data for machine learning(數據量很大時,學習算法表現比較好的原理)

ali 很多 好的 info 可能 斯坦福大學公開課 數據 div http 下圖為四種不同算法應用在不同大小數據量時的表現,可以看出,隨著數據量的增大,算法的表現趨於接近。即不管多麽糟糕的算法,數據量非常大的時候,算法表現也可以很好。 數據量很大時,學習算法表現比

(動態規劃)UVA-11400:Lighting System Design

span design 依次 gin nbsp repl can lac ssi You are given the task to design a lighting system for a huge conference hall. After doing a lot

Lighting System Design UVA

如果要換就都換,否則都不換 列一下式子很快就可以發現,如果要換一定是不是因為燈泡價格更低,就是因為當前電源太貴,所以要換就換 紫書說的方法如下 先對燈泡屬性按照電壓由小到大的順序排序 定義d[k]為買前k種燈泡的最優解 狀態轉移方程為d[k]=d[j]+剩下的全買第

Coursera-吳恩達-機器學習-第六週-測驗-Machine Learning System Design

說實話,這一次的測驗對我還是有一點難度的,為了刷到100分,刷了7次(哭)。 無奈,第2道和第4道題總是出錯,後來終於找到錯誤的地方,錯誤原因是思維定式,沒有動腦和審題正確。 這兩道題細節會在下面做出講解。 第二題分析:題意問,使用大量的資料,在哪兩種情況時

【原】Coursera—Andrew Ng機器學習—課程筆記 Lecture 11—Machine Learning System Design

Lecture 11—Machine Learning System Design 11.1 垃圾郵件分類 本章中用一個實際例子: 垃圾郵件Spam的分類 來描述機器學習系統設計方法。首先來看兩封郵件,左邊是一封垃圾郵件Spam,右邊是一封非垃圾郵件Non-Spam:垃圾郵件有很多features。如果我

Stanford機器學習筆記-7. Machine Learning System Design

Error analysis: Manually examine the examples (in cross validation set) that your algorithm made errors on. See if you spot any systematic trend in what ty

System Design: Web Crawler

資料整理來源: https://www.jiuzhang.com/qa/871/https://zhuanlan.zhihu.com/p/20821699Crawler實質是一個BFS的過程。從某個網站的主頁開始作為起點,進行BFS。對每一個頁面含有的URL都放入隊列當中

Week6_Machine Learning System Design課後習題解答

大家好,這篇文章主要和大家討論coursra網站上斯坦福大學機器學習第6周第二部分Machine Learning System Design的課後習題。我將給出習題的大致翻譯和本人的解題思路,其中可能存在錯誤,歡迎大家批評指正! 題意:你用正則

System Design——系統設計過程(一)約束和用例

從這一節開始,開始介紹當拿到一個System Design問題時候應該如何處理。 -----------------------------分隔符----------------------

三分鐘教你學System Design

系統設計問題有很多,比如: 1 設計一個短域名系統 2 設計一個搜尋引擎 3 設計一個線上象棋遊戲 4 設計一個社交平臺,實現follow notification。 在面對這些系統設計問題時,不要

system design primer

Index of system design topics Summaries of various system design topics, including pros and cons. Everything is a trade-off. Each sec

Machine Learning week 6 quiz: Machine Learning System Design

You are working on a spam classification system using regularized logistic regression. "Spam" is a positive class (y = 1) and "not spam" is the negative

第六週:Machine learning system design

做專案的推薦方法 迅速地用一個簡單的演算法來實現這個專案,不必特別精細,並在交叉驗證集上測試。 畫出學習曲線,判斷是否需要更多的資料,或者更多的特徵值還是多項式等等。 之後就是誤差分析了,需要我們人工地去檢查那些犯錯的樣例,發現這些樣例有哪些共同的性質。

上週 GitHub 熱點速覽 vol.08:系統設計必看 The System Design Primer

作者:HelloGitHub-小魚乾 摘要:GitHub Trending 上週看點,老專案依舊搶眼,系統設計必看 Repo:The System Design Primer 周獲 1k+ star,而新開源的專案 Real-Time-Person-Removal 表現也不俗,開源當週 star 過 2

[LeetCode] Design In-Memory File System 設計內存文件系統

format directory ring orm turn original all lee example Design an in-memory file system to simulate the following functions: ls: Give

Microsoft Fluent Design System

block 理念 sig 引用 ria 官網 基礎上 道路 開始 轉載自:http://www.ui.cn/detail/131217.html就在剛剛舉辦的 Microsoft Build 2017 中,微軟對外公布了它們最新的設計語言——“Fluent Design S

[LeetCode] Design Log Storage System 設計日誌存儲系統

main order format range store rom ont mat mos You are given several logs that each log contains a unique id and timestamp. Timestamp i