自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

十分鐘看懂分布式架構的前世今生

開發(fā) 架構 分布式
對于每一個程序員來說,大家一聽分布式架構,一般第一反應都是,高端霸氣上檔次。例如阿里巴巴的各個系統(tǒng)都部署在不同的機器上,并且還分布在杭州、上海、深圳等不同的服務器上。華為的服務器也會分布在世界不同的區(qū)域,從而保證滿足全球用戶的使用。

 對于每一個程序員來說,大家一聽分布式架構,一般第一反應都是,高端霸氣上檔次。例如阿里巴巴的各個系統(tǒng)都部署在不同的機器上,并且還分布在杭州、上海、深圳等不同的服務器上。華為的服務器也會分布在世界不同的區(qū)域,從而保證滿足全球用戶的使用。

我們常常在各種招聘廣告上面看到,熟悉分布式系統(tǒng)的開發(fā),那么,分布式究竟是怎么一回事,這么講,小孩子都能聽懂。

 

[[283475]]

 

背景

有人認為,分布式就是分模塊進行開發(fā),分模塊進行部署,分布式的核心就是分模塊。但分模塊并不是分布式的概念,早在上世紀90年代,就有人提出了按照模塊劃分軟件功能。這在軟件工程上,分模塊可以更好地進行解耦,在工作中,分模塊也可以更好地進行分工。雖然分模塊進行開發(fā),但是他們?nèi)匀徊渴鹪谙嗤臋C器上。隨著軟件的發(fā)展尤其是互聯(lián)網(wǎng)的發(fā)展,傳統(tǒng)的單體架構越來越不行了,主要表現(xiàn)為以下三個方面:

 

  • 性能問題,在早起的互聯(lián)網(wǎng)行業(yè)中,硬件的發(fā)展非常迅速,幾乎每一代新的電腦芯片,都能比上一代性能翻一番,但是,隨著摩爾定律的失效,硬件的提升已經(jīng)更不上軟件行業(yè)的發(fā)展,我們常常說因特爾擠牙膏,因為現(xiàn)在芯片的性能要翻一番需要好幾代產(chǎn)品了。所以,單體的架構的性能問題就爆發(fā)出來,無法跟上時代的腳步。
  • 難以擴展,原來各個模塊上只是邏輯上的隔離,但仍然部署在同一臺機器。各個模塊之間,用著永洋的物理內(nèi)存,同樣的硬盤,同樣的網(wǎng)卡,實際上各個模塊依賴非常密切,就像一臺精密的機器,有成千上萬個齒輪,每一個模塊的變動都會帶動其他齒輪的轉動。
  • 系統(tǒng)可用性低,不難想象,所有的模塊都不熟在同一個機器上,如果有一個模塊出問題,例如突然占滿整個磁盤、或者內(nèi)存泄漏,都會影響系統(tǒng)上的其他模塊,從而造成整個系統(tǒng)的崩潰。

 

十分鐘看懂分布式架構的前世今生

 

 

 

特點

 

十分鐘看懂分布式架構的前世今生

 

相對于傳統(tǒng)的單體結構,分布式的最重要的有點有下面幾點:

  • 更容易開發(fā)跟實現(xiàn)新功能,在傳統(tǒng)的單體結構中,模塊之間的依賴是非常嚴重的,你要實現(xiàn)一個功能,還需要評估對其他模塊的影響。而在分布式的設計中,模塊與模塊之間,是通過接口來進行交互,一個模塊的內(nèi)部實現(xiàn)對另外的模塊來說是透明的,影響更小。
  • 單點故障的影響氛圍更小,傳統(tǒng)的單體架構的存在的一個嚴重問題,就是一個模塊的故障容易引起整個系統(tǒng)不可用。舉個簡單的例子,在電商系統(tǒng)中,評價系統(tǒng)可能不是那么重要,結果有一天評價系統(tǒng)故障內(nèi)存泄漏,造成機器不斷重啟,就非常可能影響部署在同一臺機器上的其他應用。分布式部署則可以大大地降低故障的概率,當然,分布式也會有故障問題,這就需要優(yōu)秀的分布式架構師設置合理合適的框架,合理地進行部署,來規(guī)避單點故障帶來的大面積故障。
  • 系統(tǒng)吞吐量更大,以往的單點部署模塊,受限于單臺機器的性能。在分布式架構中,對于有性能瓶頸的模塊,我們可以采用異步或者部署更多的機器,解決單機性能瓶頸的問題又提高了機器的利用率。舉個簡單的例子,數(shù)據(jù)庫模塊,對磁盤的性能及容量要求更高,我們可以部署在磁盤更好的機器,對于緩存這種對CPU、內(nèi)存容量要求更高的機器,從而達到機器更高的利用率。

分布式雖然解決了很多難題,但也是有不少缺點與難點的,所以需要各位程序員,各位架構師進行攻克與架構。

主要難點

  • 異構系統(tǒng)標準不統(tǒng)一,在分布式系統(tǒng)中,每個模塊都可以選擇自己的開發(fā)語言,部署環(huán)境,每個系統(tǒng)都可以選擇自身的數(shù)據(jù)結構與通信協(xié)議。可能有人喜歡用HTTP協(xié)議進行通信,有人是是google公司的gRPC,有人是Twitter公司的thrift。而且協(xié)議體、錯誤代碼、錯誤信息等數(shù)據(jù)結構都可能不一致,這不僅給開發(fā)帶來不便,還給統(tǒng)一監(jiān)控跟治理帶來不少麻煩。
  • 故障概率更大,因為機器數(shù)量變多,單機的性能與質量可能就沒之前的那么好了,同時維護開發(fā)的人變多,單機故障的概率反而會大于單機結構。這是必然的現(xiàn)象,一個沒有處理過故障的工程師不是一個好碼農(nóng)。這就需要我們設計合理的分布式架構,降低故障的概率跟影響面,同時也要自動化運維,畢竟人總是會犯錯的,而且經(jīng)常犯。
  • 服務依賴問題,不要以為一臺機器掛了整個程序就掛了只有在單體架構才會發(fā)生,在分布式的環(huán)境中,也會存在一些關鍵服務,一旦掛掉,往往會行程多米諾效應,造成雪崩。例如聊天軟件中維護用戶登錄態(tài)的Session服務,如果一旦故障,那么所有的服務都可能丟失登錄態(tài),從而造成整個服務不可用。

怎么做

為了解決分布式帶來的問題,就需要各個程序員跟架構師大展身手了,無論是什么辦法,無外乎為了下面兩個事情:

  • 是提高系統(tǒng)吞吐,
  • 是提高系統(tǒng)的可用性。

 

責任編輯:華軒 來源: 今日頭條
相關推薦

2022-12-27 09:10:38

ChatGPT技術邏輯

2024-10-31 13:51:58

2022-04-08 08:47:02

PGXLPostgreSQL數(shù)據(jù)庫

2020-12-17 06:48:21

SQLkafkaMySQL

2019-04-01 14:59:56

負載均衡服務器網(wǎng)絡

2021-09-07 09:40:20

Spark大數(shù)據(jù)引擎

2022-06-16 07:31:41

Web組件封裝HTML 標簽

2024-06-19 09:58:29

2023-04-12 11:18:51

甘特圖前端

2012-07-10 01:22:32

PythonPython教程

2015-09-06 09:22:24

框架搭建快速高效app

2024-05-13 09:28:43

Flink SQL大數(shù)據(jù)

2023-11-30 10:21:48

虛擬列表虛擬列表工具庫

2023-11-09 14:44:27

Docker鏡像容器

2022-03-09 09:44:58

云原生Linux云計算

2023-07-15 18:26:51

LinuxABI

2009-10-09 14:45:29

VB程序

2019-09-16 09:14:51

2024-11-07 16:09:53

2022-08-26 09:01:07

CSSFlex 布局
點贊
收藏

51CTO技術棧公眾號