分布式和集群

1分布式

小明的公司有3個系統: 系統A、系統B和系統C ,這三個系統所做的業務不同,被部署在3個獨立的機器上運行, 他們之間互相調用(當然是跨域網絡的), 通力合作完成公司的業務流程。


將不同的業務分布在不同的地方, 這就構成了一個分布式的系統,現在問題來了, 系統A是整個分布式系統的“臉面”, 用戶直接訪問,用戶量訪問大的時候要么是速度巨慢,要么直接掛掉, 怎么辦?

由于系統A只有一份, 所以會引起單點失敗

2集群(Cluster)

小明的公司不差錢,就多買幾臺機器吧, 小明把系統A一下子部署了好幾份(例如下圖的3個服務器),每一份都是系統A的一個實例, 對外提供同樣的服務,這樣能睡個安穩覺了,不怕其中一個壞掉了,我還有另外2個呢。

這3個服務器上的系統就組成了一個集群

可是對用戶來說,一下子出現這么系統A ,每個系統的IP地址都不一樣, 到底訪問哪一個?

如果所有人都訪問服務器1.1 ,那服務器1.1 會被累死, 剩下的三個閑死,成了浪費錢的擺設。

3負載均衡(Load Balancer)

小明要盡可能的讓3個機器上的系統A 工作均衡一些, 比如有3萬個請求,那就讓3個服務器各處理1萬個(當然,這是理想狀況), 這叫負載均衡

很明顯,這個負載均衡的工作最好獨立出來, 放到獨立的服務器上 (例如Ngnix):


后來小明發現, 這個負載均衡的服務器雖然工作內容很簡單,就是拿到請求,分發請求,但是它還是有可能掛掉啊, 單點失敗還是會出現。

沒辦法,只好把負載均衡也搞成一個集群, 不過和系統A的集群有兩點不同:

  1. 這個新的集群中雖然有兩個機器,但我們可以用某種辦法,讓這個集群對外只提供一個IP地址, 也就是說用戶看到的好像只有一個機器
  2. 同一時刻,我們只讓一個負載均衡的機器工作, 另外一個原地待命。 如果工作的那個掛掉了,待命的那個就頂上去。

4彈性

如果這3個系統A的實例還是滿足不了大量的請求,那就再加服務器!

雙11來了,用戶量是平時的10倍, 小明向領導申請費用又買了幾十臺服務器,一下子把系統A部署了幾十份。 可是雙11過后, 流量一下子降下來了,那幾十個服務器用不上了,也變成了擺設!

被領導批評以后,小明決定嘗試一下云計算, 在云端可以輕松的創建、刪除虛擬的服務器, 那樣就可以輕松地隨著用戶的請求動態的增減服務器了。 雙11來了就創建虛擬服務器,等到雙11過去了就把不用的關掉, 省得浪費錢。

于是小明的系統具備了一定的彈性

5失效轉移

上面的系統看起來很美好,但是做了一個不切實際的假設: 所有的服務都是無狀態的。 換句話說,假設用戶的兩次請求直接是沒有關聯的。

但是現實是,大部分服務都是有狀態的, 例如購物車。

用戶訪問系統,在服務器1.1上創建了一個購物車,并向其中加入了幾個商品, 然后 服務器1.1 掛掉了, 用戶的后續訪問就找不到服務器1.1了,這時候就要做失效轉移,讓另外幾個服務器去接管、去處理用戶的請求。

可是問題來了,在服務器1.2,1.3上有用戶的購物車嗎? 如果沒有, 用戶就會抱怨,我剛創建的購物車哪里去了?

還有更嚴重的,假設用戶是在服務器1.1上登錄的, 用戶登錄過的信息保存到了該服務器的session中, 現在這個服務器掛掉了, 用戶的session自然也不見了,當用戶被失效轉移到其他服務器上的時候,其他服務器發現用戶沒有登錄, 就把用戶踢到了登錄界面, 讓用戶再次登錄!

狀態, 狀態,狀態! 用戶的登錄信息,購物車等都是狀態信息, 處理不好狀態的問題,集群的威力就大打折扣,無法完成真正的失效轉移, 甚至無法使用。

怎么辦?

一種辦法是把狀態信息在集群的各個服務器之間復制,讓集群的各個服務器達成一致, 誰來干這個事情? 只能是像Websphere, Weblogic這樣的應用服務器了。

還有一種辦法, 就是把狀態信息集中存儲在一個地方, 讓集群的各個服務器都能訪問到:

小明聽說Redis 不錯, 那就用Redis來保存吧 !

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

推薦閱讀更多精彩內容

  • 這邊文章通俗易懂:分布式Web服務器架構 1,舉例了解 用自己的話來說,就像工廠有多個分廠,每個分廠負責不同產品的...
    求閑居士閱讀 1,206評論 0 9
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,821評論 18 139
  • Linux服務器集群系統各概念辨析 計算機集群 WEB的負載均衡、集群、高可用解決方案 計算機集群 計算機集群簡稱...
    Zhang21閱讀 3,300評論 0 18
  • 【摘要】 面對大量用戶訪問、高并發請求,海量數據,可以使用高性能的服務器、大型數據庫,存儲設備,高性能Web服務器...
    靜修佛緣閱讀 4,586評論 0 24
  • 本文轉載自http://geek.csdn.net/news/detail/112672 WeTest導讀 我們常...
    shineegirl閱讀 1,555評論 0 26