日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

分布式架構(gòu)之美~

 mentor007 2019-10-08

一、前言

  我們都知道,當(dāng)今無(wú)論在BAT這樣的大公司,還是各種各樣的小公司,甚至是傳統(tǒng)行業(yè)剛轉(zhuǎn)互聯(lián)網(wǎng)的企業(yè)都開(kāi)始使用分布式架構(gòu),那么什么叫分布式架構(gòu)呢?分布式架構(gòu)有什么好處呢?分布式架構(gòu)經(jīng)過(guò)了怎樣的發(fā)展呢?是哪家企業(yè)開(kāi)啟了分布式架構(gòu)的時(shí)代呢?讀完本文,你就會(huì)得到這些答案,下面讓我們一起來(lái)開(kāi)啟分布式概述的奇妙之旅吧!

二、分布式架構(gòu)的發(fā)展歷史

  1946年2.14日,那是一個(gè)浪漫的情人節(jié) , 世界上第一臺(tái)電子數(shù)字計(jì)算機(jī)在美國(guó)賓夕法尼亞大學(xué)誕生了,她的名字叫ENIAC。這臺(tái)計(jì)算機(jī)占地170平米、重達(dá) 30 噸,每秒可以進(jìn)行 5000 次加法運(yùn)算。

  第一臺(tái)電子計(jì)算機(jī)誕生以后,就意味著一個(gè)日新月異的 IT 時(shí)代到來(lái)了。單臺(tái)計(jì)算機(jī)的性能不斷得到提升,從最早的 8 位 CPU 到現(xiàn)在的 64 位 CPU;從早期的 MB 級(jí)內(nèi)存到現(xiàn)在的 GB 級(jí)別內(nèi)存;從慢速的機(jī)械存儲(chǔ)到現(xiàn)在的固態(tài) SSD 硬盤(pán)存儲(chǔ)。

  ENIAC 之后,電子計(jì)算機(jī)就進(jìn)入了 IBM 主導(dǎo)的大型機(jī)時(shí)代。1964 年 4 月 7 日,在吉恩.阿姆達(dá)爾(IBM 大型機(jī)之父, 被認(rèn)為是有史以來(lái)最偉大的計(jì)算機(jī)設(shè)計(jì)師之一)的帶領(lǐng)下,耗費(fèi) 50 億美元,歷時(shí)三年,第一臺(tái) IBM 大型機(jī) SYSTEM/360 誕生了。這使得 IBM 在 20 世紀(jì) 50~60 年代統(tǒng)治著整個(gè)大型計(jì)算機(jī)工業(yè),奠定了 IBM 計(jì)算機(jī)帝國(guó)的基礎(chǔ)。IBM 大型機(jī)曾支撐美國(guó)航天登月計(jì)劃,IBM 主機(jī)一直服務(wù)于金融等核心行業(yè)的關(guān)鍵領(lǐng)域。由于超強(qiáng)的計(jì)算能力和高可靠性,即使在 X86 和云計(jì)算高速發(fā)展的背景下,IBM 的大型機(jī)依然牢牢占據(jù)著一定的高端市場(chǎng)份額。

20 世紀(jì) 80 年代,在大型機(jī)霸權(quán)的時(shí)代下,計(jì)算機(jī)的架構(gòu)同時(shí)向兩個(gè)方向發(fā)展:

  • 以 CISC (微處理器執(zhí)行的計(jì)算機(jī)語(yǔ)言指令集) CPU 為架構(gòu)的面向個(gè)人、價(jià)格便宜的PC。

  • 以 RISC (精簡(jiǎn)指令集計(jì)算機(jī)) CPU 為架構(gòu)的面向企業(yè)、價(jià)格昂貴的小型 UNIX 服務(wù)器。

三、分布式架構(gòu)發(fā)展的里程碑

  大型主機(jī)憑借著大型機(jī)超強(qiáng)的計(jì)算和 I/O 處理能力、安全性、 穩(wěn)定性等,在很長(zhǎng)一段時(shí)間內(nèi),大型機(jī)引領(lǐng)著計(jì)算機(jī)行業(yè)及商業(yè)計(jì)算領(lǐng)域的發(fā)展。而集中式的計(jì)算機(jī)系統(tǒng)架構(gòu)也漸漸成為了主流。但是隨著社會(huì)的發(fā)展,這種架構(gòu)越來(lái)越難以適應(yīng)企業(yè)的需求,比如說(shuō):

  • 大型主機(jī)復(fù)雜性高,培養(yǎng)一個(gè)能夠熟練運(yùn)維大型主機(jī)的人成本很高。

  • 大型主機(jī)很貴,一般只有土豪機(jī)構(gòu)(政府、電信、金融)才能用得起。

  • 會(huì)有單點(diǎn)問(wèn)題,一旦大型主機(jī)出現(xiàn)故障,那整個(gè)系統(tǒng)就將處于不可用的狀態(tài)。而對(duì)于大型機(jī)的使用機(jī)構(gòu)來(lái)說(shuō),這種不可用導(dǎo)致的損失是非常具大的。

  • 由于科技的進(jìn)步、技術(shù)的發(fā)展,PC 機(jī)性能得到了不斷提升,所以很多企業(yè)放棄大型機(jī)改用小型機(jī)及普通 PC 來(lái)搭建系統(tǒng)架構(gòu)。

阿里巴巴發(fā)起的'去 IOE'運(yùn)動(dòng)開(kāi)啟新時(shí)代

  IOE 指的是 IBM 小型機(jī)、Oracle 數(shù)據(jù)庫(kù)、EMC 的高端存儲(chǔ)。阿里巴巴2009 年“去 IOE”戰(zhàn)略技術(shù)總監(jiān)透露,截止到 2013 年 5 月 17 日阿里巴巴最后一臺(tái) IBM 小型機(jī)在支付寶下線(xiàn)。

為什么要去 IOE?

  隨著業(yè)務(wù)的快速發(fā)展,阿里巴巴業(yè)務(wù)量和數(shù)據(jù)量呈爆發(fā)性增長(zhǎng),傳統(tǒng)集中式 Oracle 數(shù)據(jù)庫(kù)架構(gòu)在系統(tǒng)的擴(kuò)展性方面遭遇到了瓶頸。 傳統(tǒng)的商業(yè)數(shù)據(jù)庫(kù)軟件(Oracle,DB2)多以集中式架構(gòu)為主, 那么這些傳統(tǒng)數(shù)據(jù)庫(kù)軟件的最大特點(diǎn)就是將所有的數(shù)據(jù)都集中在 一個(gè)數(shù)據(jù)庫(kù)中,只能依靠大型高端設(shè)備來(lái)提供高處理能力和擴(kuò)展性。 集中式數(shù)據(jù)庫(kù)的擴(kuò)展性主要采用向上擴(kuò)展(Scale up)的方式, 通過(guò)增加 CPU、內(nèi)存、磁盤(pán)等方式提高系統(tǒng)處理能力。這種集中式數(shù)據(jù)庫(kù)的架構(gòu),使得數(shù)據(jù)庫(kù)成為了整個(gè)系統(tǒng)的瓶頸,已經(jīng)越來(lái)越不能適應(yīng)海量數(shù)據(jù)對(duì)計(jì)算能力的要求。

四、分布式系統(tǒng)的意義

之所以要發(fā)展分布式系統(tǒng)架構(gòu),是因?yàn)閱螜C(jī)系統(tǒng)存在著如下諸多缺點(diǎn)等待被解決:

  1. 升級(jí)單機(jī)處理能力的性?xún)r(jià)比越來(lái)越低

    我們知道單機(jī)的處理能力主要依靠 CPU、內(nèi)存、磁盤(pán)。通過(guò)升級(jí)硬件來(lái)這種垂直擴(kuò)展的方式來(lái)提升性能,成本會(huì)越來(lái)越高。性?xún)r(jià)比會(huì)越來(lái)越低。

  2. 單機(jī)處理能力存在瓶頸

    并且單機(jī)處理能力存在瓶頸,CPU、內(nèi)存、磁盤(pán)都會(huì)有自己的性能瓶頸, 就算你是土豪不惜成本去提升硬件,但是硬件的發(fā)展速度和性能也還是有限制的。

  3. 穩(wěn)定性和可用性這兩個(gè)指標(biāo)很難達(dá)到

  4. 最后就是單機(jī)系統(tǒng)存在可用性和穩(wěn)定性的問(wèn)題,這兩個(gè)指標(biāo)又是我們亟待要去解決的問(wèn)題。

五、分布式架構(gòu)的常見(jiàn)概念

1.集群

  小張開(kāi)了一家小飯店,剛開(kāi)始的時(shí)候店里只有一個(gè)廚師,切菜洗菜備料炒菜全干。后來(lái)由于飯香甜可口,人流量越來(lái)越多了,一個(gè)廚師忙不過(guò)來(lái)了,小張又請(qǐng)了兩個(gè)廚師,那么這時(shí)候三個(gè)廚師炒一樣的菜,做相同的切菜洗菜備料炒菜等工作,那這三個(gè)廚師的關(guān)系是集群。也就意味著來(lái)一個(gè)顧客,只有其中的一個(gè)廚師會(huì)為這個(gè)顧客服務(wù)。

2.分布式

  又經(jīng)過(guò)一段時(shí)間,店里的生意更加火爆了,小張為了讓廚師們能專(zhuān)心炒菜,把菜做到極致,又請(qǐng)了個(gè)配菜師負(fù)責(zé)切菜、備菜、備料,那么廚師和配菜師的關(guān)系是分布式,后來(lái)一個(gè)配菜師也忙不過(guò)來(lái)了,小張就又請(qǐng)了兩個(gè)配菜師,三個(gè)配菜師關(guān)系也是集群。

3.節(jié)點(diǎn)

  節(jié)點(diǎn)是指一個(gè)可以獨(dú)立按照分布式協(xié)議完成一組邏輯的程序個(gè)體。在具體的項(xiàng)目中,一個(gè)節(jié)點(diǎn)表示的是一個(gè)操作系統(tǒng)上的進(jìn)程。 那這里的每一個(gè)配菜師和廚師都是一個(gè)節(jié)點(diǎn)。

4.副本機(jī)制

  副本(replica/copy)是指在分布式系統(tǒng)中為數(shù)據(jù)或服務(wù)提供的冗余。 數(shù)據(jù)副本指在不同的節(jié)點(diǎn)上持久化同一份數(shù)據(jù),當(dāng)某一個(gè)節(jié)點(diǎn)出現(xiàn)數(shù)據(jù)丟失時(shí),可以從副本上恢復(fù)數(shù)據(jù)。數(shù)據(jù)副本是分布式系統(tǒng)中解決數(shù)據(jù)丟失問(wèn)題的唯一手段。 服務(wù)副本表示多個(gè)節(jié)點(diǎn)提供相同的服務(wù),通過(guò)主從關(guān)系來(lái)實(shí)現(xiàn)服務(wù)高可用的方案。

5.中間件

  中間件位于操作系統(tǒng)提供的服務(wù)之外,但又不屬于應(yīng)用,他是位于應(yīng)用和系統(tǒng)層之間的、為開(kāi)發(fā)者方便的處理通信、輸入輸出的一類(lèi)軟件,能夠讓用戶(hù)只關(guān)心自己應(yīng)用的部分。

六、分布式領(lǐng)域中馮諾依曼模型的變化

  上圖是經(jīng)典理論-馮.諾依曼體系,計(jì)算機(jī)硬件由運(yùn)算器、 控制器、存儲(chǔ)器、輸入設(shè)備、輸出設(shè)備五大部分組成。不管架構(gòu)怎么變化,計(jì)算機(jī)仍沒(méi)有跳出該體系的范疇。

  • 輸入設(shè)備的變化

    分布式系統(tǒng)架構(gòu)中,輸入設(shè)備可以分兩類(lèi):第一類(lèi)是互相連接的多個(gè)節(jié)點(diǎn),在接收其他節(jié)點(diǎn)傳來(lái)的信息作為該節(jié)點(diǎn)的輸入;另一種就是傳統(tǒng)意義上的人機(jī)交互的輸入設(shè)備了。

  • 輸出設(shè)備的變化

    分布式系統(tǒng)架構(gòu)中,輸出也分兩類(lèi),一種是系統(tǒng)中的節(jié)點(diǎn)向其他節(jié)點(diǎn)傳輸信息時(shí),該節(jié)點(diǎn)可以看作是輸出設(shè)備;另一種就是傳統(tǒng)意義上的人際交互的輸出設(shè)備,比如用戶(hù)的終端。

  • 控制器的變化

    在單機(jī)中,控制器指的是 CPU 中的控制器,在分布式系統(tǒng)中,控制器主要的作用是協(xié)調(diào)或控制節(jié)點(diǎn)之間的動(dòng)作和行為; 比如硬件負(fù)載均衡器;LVS 軟負(fù)載;規(guī)則服務(wù)器等等。

  • 運(yùn)算器

    分布式系統(tǒng)中,運(yùn)算器是由多個(gè)節(jié)點(diǎn)來(lái)組成的。運(yùn)用多個(gè)節(jié)點(diǎn)的計(jì)算能力來(lái)協(xié)同完成整個(gè)計(jì)算任務(wù)。

  • 存儲(chǔ)器

    分布式系統(tǒng)中,我們需要把承擔(dān)存儲(chǔ)功能的多個(gè)節(jié)點(diǎn)組織在一起, 組成一個(gè)整體的存儲(chǔ)器;比如數(shù)據(jù)庫(kù)、redis(key-value 存儲(chǔ)) 。

七、分布式系統(tǒng)的難點(diǎn)

  毫無(wú)疑問(wèn),分布式系統(tǒng)對(duì)于集中式系統(tǒng)而言,在實(shí)現(xiàn)上會(huì)更加 復(fù)雜。分布式系統(tǒng)將會(huì)是更難理解、設(shè)計(jì)、構(gòu)建 和管理的,同 時(shí)意味著應(yīng)用程序的根源問(wèn)題更難發(fā)現(xiàn)。

  • 三態(tài)

    在集中式架構(gòu)中,調(diào)用一個(gè)接口返回的結(jié)果只有兩種, 成功或失敗。但是在分布式架構(gòu)中,會(huì)出現(xiàn)“超時(shí)”這個(gè)狀態(tài)。

  • 分布式事務(wù)

    這其實(shí)是一個(gè)老生常談的問(wèn)題,我們都知道事務(wù)就是一系列操作的原子性保證,在單機(jī)的情況下,我們能夠依靠本機(jī)的數(shù)據(jù)庫(kù)連接和組件很輕易的做到事務(wù)控制,但在分布式架構(gòu)下,業(yè)務(wù)原子性操作很可能是跨服務(wù)的,這樣就會(huì)導(dǎo)致分布式事務(wù)。比如 A 、B 操作分別是在不同服務(wù)下的同一個(gè)事務(wù)內(nèi)的操作,A 調(diào)用 B,如果A可以清楚的知道 B 是否成功提交從而控制自身提交還是回滾,但我們知道在分布式系統(tǒng)調(diào)用中會(huì)出現(xiàn)一個(gè)新?tīng)?態(tài)就是超時(shí),就是 A 并無(wú)法知道 B 是成功還是失敗,這個(gè)時(shí)候 A 是提交本地事務(wù)還是執(zhí)行回滾呢?這其實(shí)是一個(gè)很難的問(wèn)題,如果要強(qiáng)行保證事務(wù)一致性,可以采取分布式鎖,但那樣會(huì)增加系統(tǒng)復(fù)雜度而且會(huì)增大系統(tǒng)的開(kāi)銷(xiāo),而且事務(wù)跨越的服務(wù)越多, 消耗的資源越大,性能越低,那么最好的解決方案就是避免分布式事務(wù)。 還有一種解決方案就是重試機(jī)制,但是重試如果不是查詢(xún)接口, 久必然涉及到數(shù)據(jù)庫(kù)的變更,如果第一次調(diào)用成功但是沒(méi)返回成功結(jié)果,那調(diào)用方第二次調(diào)用對(duì)調(diào)用方來(lái)說(shuō)依然是重試,但是此時(shí)對(duì)于被調(diào)用方來(lái)說(shuō)是重復(fù)調(diào)用,例如 A 向 B 轉(zhuǎn)賬,A-100,B 100,這樣會(huì)導(dǎo)致 A 扣了 100,而 B 增加 200。這樣的結(jié)果并不是我們期望的,因此需在要寫(xiě)入的接口做冪等設(shè)計(jì)(多次調(diào)用和單次調(diào)用是一樣的效果)。通??梢栽O(shè)置一個(gè)唯一鍵,在寫(xiě)入的時(shí)候查詢(xún)是否已經(jīng)存在,避免重復(fù)寫(xiě)入。但是冪等設(shè)計(jì)的一 個(gè)前提就是服務(wù)高可用,否則無(wú)論怎么重試都不能調(diào)用返回一個(gè)明確的結(jié)果,那調(diào)用方會(huì)一直等待,雖然可以限制重試的次數(shù), 但是這已經(jīng)進(jìn)入異常狀態(tài)了,甚至到了極端情況還需要人肉補(bǔ)償處理。其實(shí)根據(jù) CAPBASE 理論,不可能在高可用分布式情況下做到一致性,一般都是最終一致性保證。

  • 負(fù)載均衡

    為了達(dá)到服務(wù)高可用,每個(gè)服務(wù)至少是部署兩臺(tái)機(jī)器,因?yàn)榛ヂ?lián)網(wǎng)公司一般使用可靠性不是很高的普通機(jī)器, 長(zhǎng)期運(yùn)行宕機(jī)概率很高,所以?xún)膳_(tái)機(jī)器能夠大大降低服務(wù)不可用的可能性,而大型項(xiàng)目往往會(huì)采用十幾臺(tái)甚至上百臺(tái)來(lái)部署一 個(gè)服務(wù),這不僅是保證服務(wù)的高可用,更是為了提升服務(wù)的 QPS, 但是這樣又帶來(lái)一個(gè)問(wèn)題,一個(gè)請(qǐng)求過(guò)來(lái)到底路由到哪臺(tái)機(jī)器呢? 路由算法很多,有 DNS 路由,如果 session 在本機(jī),還會(huì)根據(jù)用戶(hù) id 或則 cookie 等信息路由到固定的機(jī)器,當(dāng)然現(xiàn)在應(yīng)用服務(wù)器為了擴(kuò)展的方便都會(huì)設(shè)計(jì)為無(wú)狀態(tài)的,session 會(huì)保存到專(zhuān)有的 session 服務(wù)器,所以一般不會(huì)涉及到拿不到 session 問(wèn) 題。那路由規(guī)則是隨機(jī)獲取么?這是一個(gè)方法,但是據(jù)我所知, 實(shí)際情況肯定比這個(gè)復(fù)雜得多,在一定范圍內(nèi)隨機(jī),但是在大范圍也會(huì)分為很多個(gè)域,比如如果為了保證異地多活的多機(jī)房, 夸機(jī)房調(diào)用的開(kāi)銷(xiāo)太大,肯定會(huì)優(yōu)先選擇同機(jī)房的服務(wù),這個(gè) 要參考具體的機(jī)器分布來(lái)考慮。

  • 一致性

    數(shù)據(jù)被分散或者復(fù)制到不同的機(jī)器上,如何保證各臺(tái)主機(jī)之間的數(shù)據(jù)一致性將成為一個(gè)難點(diǎn)。

  • 故障的獨(dú)立性

    分布式系統(tǒng)由多個(gè)節(jié)點(diǎn)組成,整個(gè)分布式系統(tǒng)完全出問(wèn)題的概率是存在的,但是在實(shí)踐中出現(xiàn)更多的是某個(gè)節(jié)點(diǎn)出問(wèn)題,其他節(jié)點(diǎn)都沒(méi)問(wèn)題。這種情況下我們實(shí)現(xiàn)分布式系統(tǒng)時(shí)需要考慮得更加全面些。

八、總結(jié)

  通過(guò)本文分布式系統(tǒng)的概述,我們就對(duì)分布式有了一個(gè)很直觀(guān)的了解,里面涉及到的技術(shù)還是蠻多的,后面的文章中,我們一點(diǎn)點(diǎn)的來(lái)啃這些硬骨頭。為我們的成長(zhǎng)加油點(diǎn)贊吧~ 下篇博文我們來(lái)聊分布式架構(gòu)的演進(jìn)過(guò)程怎么樣?評(píng)論區(qū)等你。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多