1.1 從一個(gè)故事說起
1.2 分布式架構(gòu)的由來
1.3 什么是分布式架構(gòu)
1.4 分布式架構(gòu)的應(yīng)用
1.5 小張講解
1.1? 從一個(gè)故事說起
? ? ? 我是一塊硬盤,我很勤奮刃麸,一天到晚不停的運(yùn)轉(zhuǎn)踊餐,一直轉(zhuǎn)個(gè)不停乱豆,但是我我總是拖大伙的后退伶棒,終于有一天我的身體發(fā)出了“咯吱咯吱”的聲音,隨之而來的的我一陣劇痛项戴,我病倒了形帮,我不能轉(zhuǎn)了,這次我病的不輕,隱隱約約聽到外面工程師討論的聲音:
"雙11 來了辩撑,害得我們還要加班過來巡檢機(jī)房"界斜,我多么想向他們進(jìn)行呼救啊,我奮力發(fā)出紅色的指示燈讓他們看到我合冀,救救我!
"看锄蹂,有塊硬盤壞掉了" 有一位工程師說道,
“這下完蛋了水慨,我們公司的小張商城肯定是掛掉了得糜,平時(shí)都好好的,雙11怎么這樣的呢”另一位說道晰洒,
雙11 陡增的訪問量 讓我 的工作-讀寫硬盤 不堪重負(fù)啊朝抖。
電商以及移動(dòng)互聯(lián)網(wǎng)的興起也讓我們的系統(tǒng)架構(gòu)朝著分布式架構(gòu)邁進(jìn),而分布式架構(gòu)也是云架構(gòu)的基礎(chǔ)谍珊。
云計(jì)算治宣、大數(shù)據(jù)技術(shù)的興起,讓分布式架構(gòu)的設(shè)計(jì)變得越來越重要了砌滞。
1.2 分布式架構(gòu)的由來
從上面的故事我們可以看出侮邀,硬件系統(tǒng)的瓶頸大部分來自于硬盤IO, 硬盤的讀寫比其他部件贝润,例如:硬盤比內(nèi)存要慢幾萬倍左右绊茧,
這個(gè)時(shí)候有兩種解決方案:
1. 提高硬盤讀寫效率
2. 提供多塊硬盤并行讀寫
我們來分析一下這兩種方式的不同:
第一種方式
就是用 更好的硬件,更高的配置
現(xiàn)在我們常用的硬盤是 機(jī)械硬盤
機(jī)械硬盤的工作方式是由磁頭臂帶動(dòng)磁頭在磁盤上運(yùn)動(dòng)的原理來進(jìn)行數(shù)據(jù)讀取的打掘。
而采用SSD固態(tài)硬盤华畏,存儲(chǔ)速率可以提升2倍以上,效率提升是明顯的尊蚁。
PS: 家里有老式的電腦亡笑,開機(jī)慢的可以考慮換一塊固態(tài)硬盤,體驗(yàn)10秒開機(jī)的飛一般的感覺横朋。
附上一張 機(jī)械硬盤 與 固態(tài)硬盤 的數(shù)據(jù)讀取測(cè)試表
貌似這是解決問題的一種方式仑乌,但是整體性能只提升了2倍而已,如果更多的訪問量以及并發(fā)過來讀寫硬盤怎么辦呢
好像是無解了琴锭,只能苦逼的等待開發(fā)出新的先進(jìn)的硬盤出來晰甚,
可是我們是商業(yè)項(xiàng)目啊,也要考慮成本啊祠够,不考慮成本的話压汪,直接買臺(tái) 銀河一號(hào) 超級(jí)計(jì)算機(jī)過來 ,啥都解決了古瓤,是不
第二種方式
這個(gè)時(shí)候有人提出來一個(gè)概念:人多力量大
俗話說:三個(gè)臭皮匠抵得上一個(gè)諸葛亮
我們拿三塊機(jī)械硬盤共同協(xié)作工作 , 他的綜合性能指標(biāo)已經(jīng)超過了一塊SSD固態(tài)硬盤,
更大優(yōu)點(diǎn)在于:理論上有無限的水平擴(kuò)展性落君,我可以加10塊穿香,20塊,100塊 機(jī)械硬盤绎速,遠(yuǎn)遠(yuǎn)超過一塊SSD固態(tài)硬盤性能好多倍皮获,
并且價(jià)格低廉。
這就是分布式的基本思想:三個(gè)臭皮匠抵個(gè)諸葛亮纹冤。
我們把這個(gè)概念放大一下洒宝,用到服務(wù)器上,就是 多臺(tái)服務(wù)器之間的協(xié)做了萌京,原理和基本思想是一樣的雁歌,但是處理的事情就復(fù)雜很多
我們把處理事情的應(yīng)用不同,又分為:分布式文件系統(tǒng)知残,分布式緩存系統(tǒng)靠瞎,分布式數(shù)據(jù)庫(kù),分布式WebService求妹,分布式計(jì)算 等等
技術(shù)架構(gòu)都是根據(jù)實(shí)際應(yīng)用慢慢演化的乏盐,
就像小張一樣,小張老師現(xiàn)在開辦第一期分布式架構(gòu)班制恍,如果以后學(xué)員多了父能,小張老師要
同時(shí)對(duì)多個(gè)班上課怎么辦呢,辦法一就是小張老師變的強(qiáng)大净神,可以一對(duì)多的上課法竞,同時(shí)對(duì)兩個(gè)班上課還行,再多了估計(jì)小張變superman
才行啊
另一個(gè)辦法就是 小張變身(也就是正在培養(yǎng)成為L(zhǎng)eader的你們)强挫,以后小張可以和你們一同對(duì)多個(gè)班同時(shí)上課岔霸,這樣有更多的Leader
就可以開辦更多的班,水平擴(kuò)展性好.
1.3 什么是分布式架構(gòu)
這一節(jié)我們來學(xué)習(xí)下理論俯渤,什么是分布式架構(gòu):
分布式系統(tǒng)(distributed system)是建立在網(wǎng)絡(luò)之上的軟件系統(tǒng)呆细。
正是因?yàn)檐浖奶匦裕苑植际较到y(tǒng)具有高度的內(nèi)聚性和透明性八匠。
因此絮爷,網(wǎng)絡(luò)和分布式系統(tǒng)之間的區(qū)別更多的在于高層軟件(特別是操作系統(tǒng)),而不是硬件梨树。
內(nèi)聚性是指每一個(gè)數(shù)據(jù)庫(kù)分布節(jié)點(diǎn)高度自治坑夯,有本地的數(shù)據(jù)庫(kù)管理系統(tǒng)。
透明性是指每一個(gè)數(shù)據(jù)庫(kù)分布節(jié)點(diǎn)對(duì)用戶的應(yīng)用來說都是透明的抡四,看不出是本地還是遠(yuǎn)程柜蜈。
在分布式數(shù)據(jù)庫(kù)系統(tǒng)中仗谆,用戶感覺不到數(shù)據(jù)是分布的,即用戶不須知道關(guān)系是否分割淑履、有無副本隶垮、數(shù)據(jù)存于哪個(gè)站點(diǎn)以及事務(wù)在哪個(gè)站點(diǎn)上執(zhí)行等。
簡(jiǎn)單來講:在一個(gè)分布式系統(tǒng)中秘噪,一組獨(dú)立的計(jì)算機(jī)展現(xiàn)給用戶的是一個(gè)統(tǒng)一的整體狸吞,就好像是一個(gè)系統(tǒng)似的。
分布式系統(tǒng)作為一個(gè)整體對(duì)用戶提供服務(wù)指煎,而整個(gè)系統(tǒng)的內(nèi)部的協(xié)作用戶來說是透明的蹋偏,用戶就像是在使用一個(gè)MySQL一樣。
在接下來的課程中我們將會(huì)以分布式MySQL中間件-Mycat為實(shí)例至壤,來講解分布式系統(tǒng)的構(gòu)建以及如何處理大并發(fā)大數(shù)據(jù)量的構(gòu)架威始。
1.4 分布式架構(gòu)的應(yīng)用
在1.2 節(jié)中,有說到 :分布式系統(tǒng)是根據(jù)不用的應(yīng)用層面來建立的
所有就有 分布式文件系統(tǒng)崇渗,分布式緩存系統(tǒng)字逗,分布式數(shù)據(jù)庫(kù),分布式WebService宅广,分布式計(jì)算 這些
我們來舉例說明:
分布式文件系統(tǒng): 出名的有 Hadoop 的HDFS ,還有 google的 GFS , 淘寶的 TFS 等
分布式緩存系統(tǒng):memcache , hbase , mongdb 等
分布式數(shù)據(jù)庫(kù) : MySQL , Mariadb, PostgreSQL 等
而我們已分布式MySQL數(shù)據(jù)庫(kù)中間件MyCat 為實(shí)例葫掉,來深入分布式系統(tǒng),
MySQL 在現(xiàn)在電商以及互聯(lián)網(wǎng)公司的應(yīng)用非常多跟狱,一個(gè)是因?yàn)樗拿赓M(fèi)開源俭厚,另外一個(gè)原因是因?yàn)榉植际较到y(tǒng)
的水平可擴(kuò)展性,隨著移動(dòng)互聯(lián)網(wǎng)用戶的暴增驶臊,互聯(lián)網(wǎng)公司挪挤,像淘寶,天貓关翎,唯品會(huì)等電商都采用分布式系統(tǒng)應(yīng)對(duì)
用戶的高并發(fā)量以及大數(shù)據(jù)量的存儲(chǔ)扛门。
而在Mycat的商業(yè)案例中,有對(duì)中國(guó)移動(dòng)的賬單結(jié)算項(xiàng)目中纵寝,應(yīng)用實(shí)時(shí)處理高峰期每天2億的數(shù)據(jù)量论寨,
在對(duì)物聯(lián)網(wǎng)的項(xiàng)目中,實(shí)現(xiàn)處理高達(dá)26億的數(shù)據(jù)量爽茴,并提供實(shí)時(shí)查詢的接口葬凳。
通過對(duì)MyCat的學(xué)習(xí),加深分布式系統(tǒng)架構(gòu)的理解室奏,
以及分布式相關(guān)的技術(shù)火焰,分布式一致性ZooKeeper服務(wù), 高可用HAProxy/keepalived等相關(guān)應(yīng)用。
1.5 小張講解
1> 集群 與 分布式
2> 負(fù)載均衡
3> 分布式相關(guān)的高可用胧沫、容災(zāi)等名詞解釋
4> Mycat 中間件學(xué)習(xí)搶先看
本文原創(chuàng)小張昌简,轉(zhuǎn)載請(qǐng)注明來源地址?小張博客