這三個詞估計是現現在博客區或招聘網站上最常看到的字樣了,我想大部分不接觸大型互聯網企業的程序員都很難接觸這些東西。心嚮往之,但無奈沒機會接觸。平時多線程遇到到的還算多。分佈式和高併發在企業信息管理系統中可能很少見。當面試官問起這三個詞的時候,是不試試不少人都認爲分佈式=高併發=多線程? 一開始接觸的時候可能不少都會混淆。因此總結一下:前端
1. 什麼是分佈式?程序員
分佈式是一個概念,是爲了解決單個物理服務器容量和性能瓶頸問題而採用的優化手段。該領域須要解決的問題不少,在不一樣的技術層面上,又包含:分佈式文件系統,分佈式數據庫,分佈式緩存,分佈式計算等等,一些名詞,如:Hadoop, zookeeper,MQ等都跟分佈式有關。從理念上講,分佈式的實現有兩種方式:水平擴展, 當一臺機器的容量抗不住的時候,須要增長機器的方式,將流量平均到全部服務器上,全部機器均可以提供至關的服務;.垂直擴展,前端有多種需求查詢時,一臺機器扛不住,能夠將不一樣的需求分發到不一樣的機器上,好比A機器處理餘票查詢的時候,B機器能夠處理支付請求等。面試
2. 什麼是高併發數據庫
相對於分佈式來說,高併發在解決的問題上會集中一些,其反應的是同時有多少流量進來。好比:在線直播,秒殺等,同時有上萬人觀看,參搶。高併發能夠用分佈式來解決,將併發的流量分到不一樣的物理服務器上。但除此外,還能夠有不少其餘的優化手段,好比:使用緩存,將全部的,靜態內容放到CDN等。 還可使用多線程技術將一臺服務的服務能力最大化。編程
3. 什麼是多線程緩存
多線程是指從軟件或硬件上實現多個線程併發執行的技術。它更多的是解決CPU調度多個進程的問題,從而讓這些進程看上去是同時執行。這幾個概念中,多線程解決的問題是很明確的,手動也是比較單一的,基本上遇到的最大問題就是線程安全。這JAVA語言中,須要對JVM內存模型,指令重排序等深刻了解,才能寫出一份高質量的多線程代碼。安全
總結一下:服務器
分佈式是從物理資源的角度去將不一樣的機器組成一個總體對外提供服務的,技術範圍很是廣且難度很是大,有了這個基礎,高併發,高吞吐等系統很容易實現。多線程
高併發是從以業務角度去描述系統的能力,實現高併發的手段能夠採用分佈式,也能夠採用諸如:緩存,CND等,也包括多線程。併發
多線程則彙集於如何使用編程語言將CPU調度能力最大化。