GeekBand C++系統設計與實踐 第二周

4.搭建大規??蓴U展系統

大綱

  • 分布式系統
  • 數據庫系統
  • 經典架構
  • 設計原則:CAP理論
  • 一致性介紹
  • 關系型數據庫
  • ACID vs. BASE
  • sharding 分片
  • MYSQL數據庫
  • Cassandra
  • 實時系統:Kafka,Storm

** What is Scalability **

擴展性,當遇到許多用戶的同時訪問,不影響原有性能。平衡負載。性能是單個的用戶體驗,可擴展是在系統的層面,整體的訪問效果,更在乎一個統計量,例如一個網站,90%用戶訪問時的響應時間。

Distributed System

Classic Master/Slave

4.png

如何檢測一臺機器是否宕機?

  • 第一種情況,Slave工作節點宕機,這個時候Master節點需要能檢測出來,并把該Slave的工作遷移到另外一臺機器上。
    • 一般是由于某個時段過于繁忙,造成機器的“假死”,假死后,Master節點已經把工作遷移到別的工作節點上,而它本身確認為還可以繼續提供服務,多個節點服務于同一份數據,這個時候就容易造成數據不統一。
    • 一種解決辦法是使用一種lease,當工作節點擁有lease時,才能提供服務,否則則會主動下線,避免了數據不統一。當工作節點的lease快到期的時候,則會主動向Master節點申請lease,Master會檢查是否合法,如果失效,則進行服務遷移。
  • 第二種情況,Master節點宕機,此時需要備用的Master節點能夠加測到,以替換該Master節點對外繼續服務。
    • 主備節點可以維持一種heartbeat,這樣的話當heartbeat中斷后,備用節點就可以提升為主節點,繼續服務。
  • 分布式的一致性問題,分布式鎖
    • Chubby
    • Zookeeper

CAP Theorem

  • Consistency 不同的客戶端對同一份數據總是擁有同樣的view,一致性。
  • Availability 所有的客戶端總是可以讀寫,高可用。
  • Partition tolerance 分區的可容忍性,跨全球物理網絡的分區,系統扔工作良好,分布式。

Pick any two. You can't have all three.

5.png

Real world examples of CAP

  • Amazon's Dynamo. AP: Data become consistent over time.
  • Google's BigTable. CP
  • Hbase. CP
  • DynamoDB. AP
  • CA 一般應用于事物,高可用,強一致性。

Database System

Relational DBMS

傳統系統的事物必須擁有如下特性:

Earlier System were designed for ACID properties:

  • A Atomic,原子性,要不操作完成,要不什么都不操作
  • C Consistent,一致性,由數據庫內部保障或應用保障
  • I Isolated,隔離性,每個事務之間都隔離,每個事務都不能看到別的事務的中間狀態
  • D Durable,持久性

ACID vs. BASE

"Basically Available, Soft state, Eventually consistent"
在微博系統中,A發了一個消息,他自己馬上可以看到,但是關注A的人,只要在一定時間能可以看到就可以了,并不是要求馬上就可以看到。

應用拆分

6.png
  • 系統拆分,盡量保障子系統的功能的垂直
  • 要十分小心循環依賴,有可能啟動失敗

數據庫拆分

  • Horizontal Scaling(Sharding)
    • 當某個表數據量非常大時,則需要水平分表,對應用的影響較大
    • 使用 Database Access Layer來屏蔽底層數據的存儲對應用的影響
  • Functional Scaling(Scale out)

Stateless

Session Vs. Cookie


7.png

異步通信

RPC

8.png

有效利用Cache

9.png

Consistency & Replication

  • 為了達到可靠性,需要把數據復制到多個數據源。
  • 當需要修改某個數據,就帶來了問題,是否能保障同時修改。
    • 讀取的時候,讀多份,當超過一半的數據源一致,則認為其可靠。
    • 寫入的時候可以寫入到日志,最終通過異步方式寫入。

一致性

  • 強一致性 系統中某個數據被更新后,后續任何對該數據的操作,都應該拿到是該數據更新過的數據。傳統關系型數據庫。
  • 弱一致性 系統中某個數據被更新后,后續對該數據的操作,不一定拿到的是更新后的值,有一個窗口期。
  • 最終一致性 屬于弱一致性的一種。

Consistent Hashing

Distributed Hash Table

10.png

  • 良好的分布式哈希,應該具有單調性,在服務器節點的增減,不應該造成哈希的重定位。

一致性hash算法

11.png

  • 將服務器和數據都記性hash計算,假設分布在一個連續的hash環上,對數據進行hash后,定位在hash環上的一個點,然后就行順時針移動,把它交由在hash環上遇到的第一個服務器去處理,不會因為服務器節點的變化引起哈希重定位。

容錯性和擴展性

12.png

  • 當Server3 宕機后,對原數據A,B,C都不會造成影響,只有數據D又影響。
13.png
  • 當增加一臺Server4,只影響了數據B,其他也不會造成影響,具有較好的容錯性和擴展性。

虛擬節點

14.png

  • 如圖所示,Server1和Server2分布不均勻,導致Server1的壓力非常大。
15.png
  • 一種解決辦法,對一臺Server多次hash,形成多個虛擬節點,這樣可以均衡負載。

一致性hash案例

16.png

  • Cassandra
  • Amazon's Dynamo
  • HBASE
  • MongoDB

NoSQL Database

  • 水平分區
  • gets() sets()
  • key/value
  • 不支持jion等
  • 億級的數據

Cassamdra

17.png

Write Data Flows

18.png

分布式系統設計模式

19.png

20.png

Scalability Principle

21.png

4.大數據系統

大綱

  • 大數據系統:Hadoop
  • MapReduce,BigTable,GFS三篇Paper
  • Spark入門
  • 海量數據處理技巧
  • 聊天系統設計
  • 估算機器

Hadoop 理念的產生

Google三輛馬車

  • MapReduce:簡易的數據處理在大型的集群
  • Google File System
  • BigTable:結構化書分布式存儲

GFS

22.png
  • GFS msater 主服務器
    • 維護File namespace
    • 創建chunk的64位唯一句柄
    • 維護GFS到chunk的映射信息,chunk的位置信息
    • 整個系統的全局控制,租約的管理,lease
    • 垃圾回收
    • chunk的復制,備份
    • 與chunkserver維持heartbeat
  • GFS chunkserver 數據塊服務器
    • GFS的文件被劃分為固定大小的數據塊
  • GFS client 客戶端
    • 首先訪問master節點,獲得chunk handle,chunk locations
    • 然后訪問chunkserver,獲得數據

MapReduce

23.png

Big Table

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

推薦閱讀更多精彩內容

  • 分布式文件系統的主要功能有兩個:一個是存儲文檔、圖像、視頻之類的Blob類型數據;另外一個是作為分布式表格系統的持...
    olostin閱讀 3,205評論 1 5
  • 分布式系統面臨的第一個問題就是數據分布,即將數據均勻地分布到多個存儲節點。另外,為了保證可靠性和可用性,需要將數據...
    olostin閱讀 4,604評論 2 26
  • 眾所周知,Hadoop的存儲基礎,HDFS分布式文件系統,是按照GFS的思想實現的。本文參考:Google Fil...
    SmileySure閱讀 1,115評論 0 1
  • 有底線,有道德,體諒對方 這是楊老師告訴我們的擇偶標準。本來覺得好像不止這些吧?但想了想,好像也只需要這么多,但回...
    真的更好嗎閱讀 339評論 0 0
  • 新樂社區現有一支由黨員,社區志愿者,網格員組成的隊伍,他們利用休息日對轄區的居民點進行煤煙污染治理大巡查,...
    孫俠俠閱讀 292評論 0 0