GeekBand學習筆記-第十二周 關于系統設計

寫在前面:感謝GeekBand提供這樣好的學習機會,讓我在繁忙的工作之余可以學習鞏固c++知識。以下是邊學邊記的一些擴展點。分享給大家。

Concurrency

進程與線程 (Thread VS Process)(http://www.lxweimin.com/p/177e9b073ce8
程序在操作系統運行的基本單位,提高應用的并發性。程序擁有至少一個進程,一個進程至少有一個線程。多線程程序,并發性比較高;進程執行時候有獨立的內存單位,而線程可以共享內存以提高效率。每個獨立的線程有個程序運行的入口,數據執行的序列和程序的出口;操作系統中對進程的調度分配來達到資源管理的目的,進程是系統進行資源分配的獨立單位。
**生產者與消費(Consumer and Producer ) **
操作系統的有限和緩存的問題,多線程同步問題的案例。生產者線程生產數據放入緩沖區,同時消費者從緩沖區中消耗數據。問題的關鍵在于如何使得:生產者不在緩沖區滿的時候加入數據,消費者不在緩沖區空的時候消耗數據。
生產者與消費的經典應用: Blocking Queue (Java實現)

生產者與消費的經典應用

Tracking:
同步(Synchronized )
異步(Asynchronized ):建立緩沖區


Network

Application Layer : HTML 1.0 VS HTML 1.1: 后者支持虛擬主機和斷點續傳
Presentation Layer: TCP VS UDP:前者連接可靠,后者效率高

Network

問題:當瀏覽器輸入URL并且按下回車鍵之后會發生什么?
找IP地址:先URL 緩存 ,然后DNS
得到返回IP地址
本地計算機和服務器通過IP建立TCP連接(三次握手),默認80端口
瀏覽器和服務器建立HTTP會話(Session),接受數據
瀏覽器解析數據并在瀏覽器中渲染出來
瀏覽器關閉時,終止會話。

Database

Relational DV VS KeyValue Store
前者典型例子:銀行存錢系統,需要實時;
后者典型例子:社交網站,簡單,量大
Sharding VS Clustering直接拆分與負載智能管理

關于Tiny URL 問題:為URL存儲短URLCode映射成URL(Tiny URL Service ),需要保存成下面的格式:
code:varchar(8)
URL:varchar(1000)
createed_at: timestamp
還需要能夠反向將URL映射成code
需要給URL和Code加索引,一遍可以反向將URL映射成Code

Distribute System

關于Tiny URL 問題: 如何規模化Tiny URL Service
負載均衡和無狀態的前置服務器
分片,備份的數據庫(備份大量的short link code)
交互需要加緩存,減輕服務器壓力
根據分好的片定位到數據庫相應的區間,緩解寫的壓力
本地緩存事件追蹤聚合+異步刷新到高吞吐(high-throughput)的信息隊列中
使用產生的唯一ID生成器,支持64位

Performance

使用不同緩存的響應時間

問題: 全世界有多少鋼琴調音師(邏輯推理,估算能力)
流程:全世界人口總數和家庭個數;
估計大概10~20%家庭會有鋼琴,得出鋼琴個數;
每個鋼琴調音師大約每個月工作4-5次;
最后得出有多少鋼琴調音師可以滿足這些需求。

關于Tiny URL問題: 我們也可以估算總體存儲量是多少。
因為URL長度是10-1000字符(byte),取平均值是200 byte;
計算總共需要URL的數量:
假設我們已經擁有100M個URL,新的URL注冊的數量是100,000/天(每秒一個)
那么一年的URL的條數就是100,000 x 365 條,即36,500,000 byte,
如果一天查詢100M次,那么每秒查詢就是1000次。
發現:讀的數量遠大于寫的數量,可能需要做緩存,讀寫分離。

Design Pattern

MVC:連接模型到某個前端;
Singleton:保證只有一個實例,比全局變量靠譜。可以隨時直接更改;
Factory:定義創建對象的接口,讓接口決定實例化哪個類。用于生成各種子類的時候;
Iterator:順序訪問集合中的元素,同時不會暴露集合中的元素。需要保證插入和刪除不會影響到其他對象;
Decorator:用一個新的類,對對象新增附加方法,指向基類的指針,調用時用多態調用就可以了;
Facade:提供一致的界面,提供一致的接口。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,001評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,786評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,986評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,204評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,964評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,354評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,410評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,554評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,106評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,918評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,093評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,648評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,342評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,755評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,009評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,839評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,107評論 2 375

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,803評論 18 139
  • 從三月份找實習到現在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發崗...
    時芥藍閱讀 42,328評論 11 349
  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測試 ...
    KeKeMars閱讀 6,356評論 0 6
  • 剛剛經歷了一場離職風波,如果是自己主動離職,自然也沒有那么沮喪,可是此次是被動離職,也就是被辭退了,那一瞬間...
    TinaChow閱讀 253評論 0 0
  • 夜, 入眠! 夢中的你, 依舊開的是如此嬌艷, 你斟滿了一杯酒, 入喉的故事卻是道不完! 淚, 劃過臉頰, 雙手擦...
    臻顏寂閱讀 156評論 0 2