分佈式、高併發和多線程三個概念的簡單區分

每當提起分佈式、高併發和多線程這三個概念的時候,不少的程序員都會認爲分佈式=高併發=多線程,即認爲這三個概念是相同的,但實際上這種認爲是錯誤的。前端

什麼是分佈式程序員

關於分佈式的概念,咱們大能夠如此理解:它是爲了解決性能瓶頸問題以及單個物理服務器容量不足問題所採用的優化手段。數據庫

而分佈式這個領域須要解決極多的問題,且這些問題都在不一樣的技術層面上,包括分佈式文件系統、分佈式緩存、分佈式數據庫和分佈式計算等。一些名詞如Hadoop、Zookeeper和MQ等也都都跟分佈式有關。 編程

若是從理念層面看待,分佈式的實現能夠劃分爲水平擴展和垂直拆分兩種形式。緩存

水平拓展安全

所謂的水平擴展,指的是當集羣中的其中一臺機器負擔不了巨大的流量時,就經過增添機器的方法,將這些流量二一添做五平分到全部服務器上,這樣,全部的機器便均可提供同等至關的服務。 服務器

垂直拆分多線程

同理,當在前端有多種查詢需求時而一臺機器不能承載時,便將不一樣的需求分發到不一樣的機器上。併發

以購票系統爲例說明,當用戶在平臺頁面查詢所剩餘票併購買支付時就會出現一下狀況:編程語言

1. A機器處理餘票查詢的請求。

2. B機器處理支付的請求。

什麼是高併發

若是說,分佈式是針對巨大流量來增添分流,平分壓力,那麼高併發所解決的問題上就是請求集中的問題,它所反映的是的是同時有多少許。

好比在線直播服務,同時有上萬人觀看,這就是高併發,強調的是同一時間的大量請求。因此高併發能夠經過分佈式技術去解決,將併發流量分到不一樣的物理服務器上。不過除此以外,仍是有不少其餘優化手段:好比使用緩存系統,將全部的靜態內容放到CDN或使用消息隊列等。

什麼是多線程

多線程則更多的是解決CPU調度多個進程的問題,讓這些進程看上去是同時執行(實際是交替運行的)。

簡單來講,多線程就是從軟件或者硬件上實現多個線程併發執行的技術,經過多線程技術將一臺服務器的服務能力最大化。雖然多線程的手段比較單一,可是多線程所能遇到的最大問題就是線程安全了。在Java語言中,須要對JVM內存模型、指令重排等有深刻的瞭解,才能寫出一份高質量的多線程代碼。

總結

1.分佈式是從物理資源的角度去將不一樣的機器組成一個總體對外服務,技術範圍很是廣且難度很是大。只要有了這個基礎,高併發和高吞吐等系統都會很容易構建。

2.高併發是從業務的角度去描述系統的能力,實現高併發的手段能夠採用分佈式,也能夠採用諸如緩存、CDN或消息隊列等,固然也包括多線程。

3.多線程則聚焦於如何使用編程語言將CPU調度能力最大化。

 

"所謂的孤獨,是半夜想找人說話卻在通信錄翻不到能夠信賴的人,是想哭卻沒有能夠依靠的肩膀,是急切地想要和人分享卻得不到半點回應。"

相關文章
相關標籤/搜索