1 計算機系統
計算機(Computer):俗稱電腦,是一種能接收和存儲信息,并按照存儲在其內部的程序對海量數據進行自動、高速地處理,然后把處理結果輸出的現代化智能電子設備
計算機有很多形式,比如:生活中常見的家用電腦,筆記本,智能手機,平板電腦等,還有生產環境中提供重要業務支撐的各種服務器(Server),都算是計算機。
其中一個完整的計算機系統由硬件(Hardware)系統和軟件(Software)系統兩大部分組成
1.1 計算機硬件
計算機發展歷史:
- 第一代計算機(1946-1957) 電子管時代
- 第二代計算機(1958-1964) 晶體管時代
- 第三代計算機(1965-1970) 集成電路時代
- 第四代計算機(1971以后) 大規模集成電路時代
1.1.1 世界上第一臺計算機
1946年,世界上第一臺計算機ENIAC(electronic numerical integrator and calculator 電子數字積分計算機)在美國賓州大學誕生,是美國奧伯丁武器試驗場為了滿足計算彈道需要而研制成的。使用了17468只電子管,占地170平方米,重達30噸,耗電174千瓦,耗資40多萬美元。每秒可進行5000次加法或減法運算
1.1.2 馮·諾依曼體系結構
1946年美籍匈牙利數學家馮·諾依曼于提出存儲程序原理,把程序本身當作數據來對待,程序和該程序處理的數據用同樣的方式儲存。 馮·諾依曼體系結構馮·諾依曼理論的要點是:
- 數字計算機的數制采用二進制,bit 位, byte 字節 1 byte =8 bit
- 計算機應該按照程序順序執行
- 計算機硬件由運算器、控制器、存儲器、輸入設備和輸出設備五大部分組成
馮·諾依曼
早期計算機系統的輸入設備:穿孔紙帶
1.1.2.1 二進制和十進制轉換
- 2^0=1=1
- 2^1=2=10
- 2^3=8=1000
- 2^4=16=10000
- 2^5=32
- 2^6=64
- 2^7=128=10000000
- 2^8=256=100000000
- 2^9=512
- 2^10=1024=
- 2^11=2048
- 2^12=4096
1.1.2.2 常見單位
- 10的36次方 X
- 10的33次方 C
- 10的30次方 D
- 10的27次方 N
- 10的24次方 B
- 10的21次方 Y
- 10的18次方 E
- 10的15次方 P
- 10的12次方 T 二進制 2^40
- 10的 9次方 G 二進制 2^30
- 10的 6次方 M 二進制 2^20
- 10的 3次方 K 二進制 2^10=1024
- 10的 2次方 百
- 10的 1次方 十
- 10的-1次方 分 d
- 10的-2次方 厘 c
- 10的-3次方 m
- 10的-6次方 μ
- 10的-9次方 n
- 10的-12次方 p
- 10的-15次方 f
- 10的-18次方 a
1.1.3 摩爾定律
由英特爾(Intel)創始人之一戈登·摩爾于1965年提出,當價格不變時,集成電路上可容納的元器件的數目,約每隔18-24個月便會增加一倍,性能也將提升一倍
1.1.4 計算機分類
1.1.4.1 按規模劃分
- 超級計算機:Super Computer,又稱巨型計算機,應用于國防尖端技術和現代科學計算中。巨型機的運算速度可達每秒百萬億次以上, “天河一號”為我國首臺千萬億次超級計算機
- 大型計算機:具有較高的運算速度,每秒可以執行幾千萬條指令,而且有較大的存儲空間。往往用于科學計算、數據處理或作為網絡服務器使用,如:IBM z13 mainframe
- 小型計算機:指采用精簡指令集處理器,性能和價格介于PC服務器和大型主機之間的一種高性能 64 位計算機。在中國,小型機習慣上用來指UNIX服務器
- 微型計算機:指采用 X86 CPU 架構的PC服務器,中央處理器(CPU)采用微處理器芯片,體積小巧輕便,廣泛用于商業、服務業、工廠的自動控制、辦公自動化以及大眾化的信息處理,互聯網公司發起去IOE運動,代替小型機
1.1.4.2 按功能和角色劃分
服務器和客戶機
服務器:即 Server,計算機的一種,通常是網絡中為客戶端計算機提供各種服務的高性能的計算機,服務器在網絡操作系統的控制下,將與其相連的硬盤、磁帶、打印機及昂貴的專用通訊設備提供給網絡上的客戶站點共享,也能為網絡用戶提供集中計算、信息發布及數據管理等服務
客戶機:即 Client,向服務器提出請求,需要服務器為之提供相應的服務和支持的計算機
服務器按應用功能可分為: Web服務器、數據庫服務器、文件服務器、中間件應用服務器、日志服務器、監控服務器、程序版本控制服務器、虛擬機服務器、郵件服務器、打印服務器、域控制服務器、多媒體服務器、通訊服務器、ERP服務器等
1.1.4.3 服務器按外形分類
PC服務器常見的三種外型:
- 塔式服務器
- 刀片式服務器
- 機架式服務器
塔式Tower服務器
早期的服務器形式,目前較少使用 外形以及結構和平時使用的立式PC差不多 機箱空間大,主板擴展性較強,插槽較多 預留了足夠的內部空間,以便日后進行硬盤和電源的冗余擴展,設計一般都考慮降噪
刀片式Blade服務器
在標準高度的機架式機箱內可插裝多個卡式的服務器單元,實現高可用和高密度
更高的密度,集中管理,高性能,靈活擴展,按需配置
可以使用系統軟件將這些母板集合成一個服務器集群。在集群模式下,所有的母板可以連接起來提供高速的網絡環境,并同時共享資源,為相同的用戶群服務
機架式Rack服務器
- 按照統一標準設計,配合機柜統一使用,便于統計管理,高密度,節省空間,常用U為單位,1U=1.75英寸=44.45毫米,機箱尺寸比較小巧,在機柜中可以同時放置多臺服務器
- 機架式服務器的寬度為19英寸(48.26cm),厚度通常有1U,2U,3U,4U,5U,7U幾種標準的服務器
- 機柜的尺寸也是采用通用的工業標準,如:寬度600mm,深度1000mm,高2000mm(42U)
- 現階段是最主流的的服務器
1.1.5 服務器硬件組成
服務器配置示例(參考價格47588元)
1.1.5.1 服務器硬件—CPU
CPU:Central Processing Unit,即中央處理器。由控制器和運算器構成,是整個計算機系統中最重要的部分
CPU 架構:
- CISC:Complex Instruction Set Computer,復雜指令集
- RISC:Reduced Instruction Set Computer,精減指令集
精減指令集和復雜指令集:
早期計算機一直沿用CISC指令集方式。它的設計目的是要用最少的機器語言指令來完成所需的計算任務。在CISC處理器中,程序的各條指令是按順序串行執行的,每條指令中的各個操作也是按順序串行執行的。順序執行的優點是控制簡單,但計算機各部分的利用率不高,執行速度慢。CISC的指令系統龐大,功能復雜,指令格式、尋址方式多;執行速度慢;難以優化編譯,編譯程序復雜; 無法并行;無法兼容。大約20%的指令占據了80%的處理器時間。其余80%指令使用頻度只占20%的處理機運行時間。由此CISC生產廠商長期致力于復雜指令系統的設計,實際上是在設計一種難得在實踐中用得上的指令系統的處理器,同時.復雜的指令系統必然帶來結構的復雜性.這不但增加了設計的時間與成本還容易造成設計失誤。目前個人計算機x86體系 CPU 廠商一直在走CISC的發展道路,包括Intel、AMD、 VIA(威盛)等。之所以稱為X86,是因為最早Intel的CPU型號是8086,后來出現了80286,80386,80486,80586等,所以之后的Intel和其兼容的廠商的生產CPU都稱為X86 CPU。而后CPU從最初的8 位,16位,32位,發展到目前主流的64位。為了區別非64位的CPU,一般將64位的CPU稱為X86-64。由于最早在1999由AMD設計公開 64 位技術,稱為 x86-64,后來改名為 AMD64,不同廠商稱呼有所不同,所以AMD 64,x86-64,x64都指的是64位的基于X86的CPU。
因為CISC存在上面的問題,于是有了RISC,它是圖靈獎得主John L. Hennessy和David A. Patterson對行業的重大貢獻,由加州大學伯克利分校于1980年發布,其基本思想是盡量簡化計算機指令功能,只保留那些功能簡單、能在一個節拍內執行完成的指令,使其實現更容易,指令并行執行程度更好,此稱為精簡指令集RISC(Reduced Instruction Set Computing)。精減指令集其風格是強調計算機結構的簡單性和高效性,其特點是所有指令的格式都是一致的,所有指令的指令周期也是相同的,支持并行,并且采用流水線技術。當需要完成復雜任務時,就由多個指令組合來實現。常用的精簡指令集微處理器包括:ARM、RISC-V、MIPS、PA-RISC、PowerArchitecture(包括PowerPC)、DECAlpha和SPARC等。說到這里不得不提一下ARM,全世界超過95%的智能手機和平板電腦都采用ARM架構,當前最先進的華為的海思麒麟990 CPU,高通的驍龍865 CPU,蘋果的A13 CPU也都屬于ARM架構。ARM可以說是目前世界上使用最廣泛的CPU架構了。
CPU類型
- X86:CISC
- ARM:Acorn RISC Machine 高通,華為麒麟
- RISC-V 阿里玄鐵910
- MIPS 龍芯
- Power:IBM
- Powerpc:apple,ibm,moto
- Ultrasparc :Sun
- Alpha:HP
- 安騰:compaq
服務器CPU公司
- Intel: Xeon 至強 Itanium 安騰
- AMD: Althlon MP
- IBM: Power
按照CPU體系架構來區分,服務器主要分為兩類: x86服務器:采用CISC(復雜指令集)架構服務器,即通常所講的PC服務器,它是基于PC機體系結構,使用Intel或其它兼容x86指令集的處理器芯片的服務器。目前主要為intel的Xeon E3,E5,E7系列,價格相對便宜、兼容性好、穩定性較差、安全性不算太高 非x86服務器:采用RISC(精簡指令集)或EPIC(并行指令代碼) 處理器,主要采用UNIX和其它專用操作系統的服務器,CPU主要有IBM的Power PC、MIPS的MIPS、SUN的Sparc、Compaq的Alpha、HP的PA-RISC、Intel研發的EPIC安騰處理器等。這種服務器價格昂貴,體系封閉,但是穩定性好,性能強,主要用在金融、電信等大型企業的核心系統
微處理器 1971年11月15日,Intel公司的工程師特德·霍夫發明了世界上第一個微處理器—4004,這款4位微處理器雖然只有45條指令,而且每秒只能執行5萬條指令。性能很低,但它的集成度卻要高很多,一塊4004的重量還不到一盅司 Intel從8086開始,就進入了我們常說的x86時代。而80386的誕生則標志著Intel正是進入了32位微處理器的時代。從80386到Pentium 4這個年代的CPU,就是傳說中的IA-32時代 x86-64( 又稱x64,即英文詞64-bit extended,64位拓展 的簡寫)是x86架構的64位拓展,向后兼容于16位及32位的x86架構。x64于1999年由AMD設計,AMD首次公開64位集以擴展給x86,稱為“AMD64”。其后也為英特爾所采用,現時英特爾稱之為“Intel 64”,在之前曾使用過“Clackamas Technology” (CT)、“IA-32e”及“EM64T” Intel公司的CPU發展歷程
CPU主頻:主頻是CPU的時鐘頻率(CPU Clock Speed),是CPU運算時的工作的頻率(1秒內發生的同步脈沖數)的簡稱。單位是Hz。一般說來,主頻越高,CPU的速度越快,由于內部結構不同,并非所有的時鐘頻率相同的CPU的性能都一樣 外頻:系統總線的工作頻率, CPU與外部(主板芯片組)交換數據、指令的工作時鐘頻率 倍頻:倍頻則是指CPU外頻與主頻相差的倍數 三者關系是:主頻=外頻x倍頻 高速緩存(cache):高速交換的存儲器。CPU緩存分為一級,二級,三級緩存,即L1,L2,L3 內存總線速度(Memory-Bus Speed):一般等同于CPU的外頻,指CPU與二級(L2)高速緩存和內存之間的通信速度 地址總線寬度:決定了CPU可以訪問的物理地址空間
1.1.5.2 服務器硬件—主板
主板mainboard,安裝在機箱內,是計算機最基本的也是最重要的部件之一 主板一般為矩形電路板,上面安裝了組成計算機的主要電路系統,一般有BIOS芯片、I/O控制芯片、鍵盤和面板控制開關接口、指示燈插接件、擴充插槽、主板及插卡的直流電源供電接插件等元件
1.1.5.3 服務器硬件—內存
內存是介于CPU 和外部存儲之間,是CPU 對外部存儲中程序與數據進行高速運算時存放程序指令、數據和中間結果的臨時場所,它的物理實質就是一組具備數據輸入輸出和數據存儲功能的高速集成電路 內存是CPU能直接尋址的存儲空間,由半導體器件制成。內存的特點是存取速度快 計算機中所有程序的運行都是在內存中進行的,因此內存的性能對計算機的影響非常大
外存:硬盤,U盤,軟盤,光盤
內存和外存的區別:
- 內存斷電后數據丟失
- 外存斷電后數據可以保存
服務器內存常用技術:
1、 在線備用內存技術
- 當主內存或者是擴展內存中的內存出現多位錯誤時或者出現物理內存故障時,服務器仍繼續運行
- 由備用內存接替出現故障內存的工作
- 備用的內存區域必須比其它區域的內存容量要大或相同
2 、內存鏡像
- 鏡像為系統在出現多位錯或內存物理故障時提供數據保護功能,以保證系統仍能正常的運行
- 數據同時寫入兩個鏡像的內存區域
- 從一個區域進行數據的讀取
**容量:**即該內存的存儲容量,單位一般為GB
內存帶寬: 內存帶寬是指內存與北橋芯片之間的數據傳輸率,B byte 字節 b bit位 單通道內存控制器一般都是64-bit的,8個二進制位相當于1個字節,換算成字節是64/8=8,再乘以內存的運行頻率,如果是雙通道內存就要再乘以2
計算公式:內存帶寬=內存總線頻率×數據總線位數/8
范例:
單通道DDR(Double Data Rate雙倍速率)內存帶寬計算 DDR4-4000:4000MHz*64bit/8=32000MB/S DDR4-3600:3600MHz*64bit/8=28800MB/S
雙通道: DDR4-4000:4000MHz*64bit*2/8=64000MB/S
1.1.5.4 服務器硬件—硬盤
常見的磁盤接口種類:
- IDE:Integrated Drive Electronics,電子集成[驅動器,早期家用電腦常用接口
- SCSI:Small Computer System Interface,小型計算機系統接口,早期的服務器常用接口
- SATA:Serial ATA (Advanced Technology Attachment 高技術配置),家用電腦常用的接口
- SAS:Serial Attached SCSI,是目前服務器上主流的接口
- 光纖通道:Fiber Channe,高性能服務器上采用的接口
- M.2 :固態硬盤接口,性能更強
結構分類:
- 機械硬盤HDD(Hard Disk Drive)
- 固態硬盤SSD(Solid State Drives )
機械硬盤:
- 存儲介質(Media)——盤片 盤片的基板是金屬或玻璃材質制成,為達到高密度高穩定的質量,基板要求表面光滑平整,不可有任何暇疵
- 讀寫磁頭(Read Write Head)——磁頭 磁頭是硬盤讀取數據的關鍵部件,它的主要作用就是將存儲在硬盤盤片上的磁信息轉化為電信號向外傳輸
- 馬達( Spindle Motor & Voice Coil Motor ) 馬達上裝有一至多片盤片,以7200,10000,15000 RPM等定速旋轉,為保持其平衡不可抖動,所以其質量要求嚴謹,不產生高溫躁音
機械硬盤基本參數:
- 容量:容量是硬盤最主要的參數。單位有MB、GB、TB,常見容量:500GB,1T,2T,3T,4T,6T
- 轉速:轉速是指硬盤盤片每分鐘轉動的圈數,單位為rpm。常見:7200rpm,10000rpm,15000rpm
- 傳輸速率:傳輸速率(Data Transfer Rate) 。硬盤的數據傳輸率是指硬盤讀寫數據的速度,單位為兆字節每秒(MB/s),常見:6Gb/s,12Gb/s
- 緩存:硬盤緩存的目的是為了解決系統前后級讀寫速度不匹配的問題,以提高硬盤的讀寫速度
- 磁盤尺寸:3.5”/2.5”/1.8”
- 是否支持熱插拔
SSD硬盤:
SSD,即固態硬盤,泛指使用NAND Flash組成的固態硬盤。其特別之處在于沒有機械結構,以區塊寫入和抹除的方式作讀寫的功能,因此在讀寫的效率上,非常依賴讀寫技術上的設計SSD讀寫存取速度快,性能穩定,防震性高,發熱低,耐低溫,電耗低,無噪音。因為沒有機械部分,所以長時間使用也出現故障幾率也較小。缺點:價格高,容量小,相對普通機械硬盤性價比低
1.1.5.5 服務器硬件—網卡
服務器都在主板上集成了網卡,傳輸速率為1Gbps,即千兆網卡
特殊應用需要高端網卡,如光纖網卡,Infiniband網卡等,傳輸速率能達到10Gbps、20Gbps,即萬兆網卡
1.1.5.6 服務器硬件—相關其它硬件
服務器硬件—陣列卡
Raid卡用來實現RAID的建立和重建,檢測和修復多位錯誤,錯誤磁盤自動檢測等功能。RAID芯片使CPU的資源得以釋放,陣列卡把若干硬盤驅動器按照一定要求組成一個整體、由陣列控制器管理的系統 陣列卡可以用來提高磁盤子系統的性能及可靠性 支持的多種RAID級別,RAID0,1,5,6等 陣列卡提供緩存及電池保護
服務器硬件—電源
支持服務器的電力負載,支持冗余,防止電源故障 ,故障預警和防止 ,故障之前的預防性維護,保證服務器持續運行,電源子系統包括:冗余電源和風扇
服務器硬件—顯卡
服務器都在主板上集成了顯卡,但是顯存容量不高,一般為16M或32M,GPU: Graphic Processing Unit,即“圖形處理器”
服務器硬件—熱插拔技術
熱插拔技術,稱為熱交換技術(Hot Swap),允許在不關機的狀態下更換故障熱插拔設備,常見的熱插拔設備:硬盤,電源,PCI設備,風扇等。熱插拔硬盤技術與RAID技術配合起來,可以使服務器在不關機的狀態下恢復故障硬盤上的數據,同時并不影響網絡用戶對數據的使用
服務器硬件—機柜
機架式服務器-服務器放置在機柜中
通常使用的機柜是42U(約2米高)機柜( 1U=44.45mm)
外觀尺寸一般為:寬600*深1000*高2000(mm)
在一個機架上,累計設備U數一般不超過26U,全1U設備部署數量一般不超過16臺,全2U設備一般不超過12臺,全4U設備一般4到7臺
機架式服務器-機架及其配件
1.1.5.7 各種硬件處理速度和性能優化
服務器的性能短板:如果CPU有每秒處理1000個服務請求的能力,各種總線的負載能力能達到500個,但網卡只能接受200個請求,而硬盤只能負擔150個的話,那這臺服務器得處理能力只能是150個請求/秒,有85%的處理器計算能力浪費了,在計算機系統當中,硬盤的讀寫速率已經成為影響系統性能進一步提高的瓶頸
電腦的各個設備部件之間的延時從高到底的排列,依次是機械硬盤、固態硬盤、內存、CPU
上圖可以看到,CPU最快,一個時鐘周期是0.3納秒,內存訪問需要120納秒,固態硬盤訪問需要50-150微秒,傳統硬盤訪問需要1-10毫秒, 網絡訪問最慢,都是幾十毫秒。 上圖最有趣的地方在于它把計算機世界的時間和人類世界的時間做了對比,常常把CPU比喻成跑得很快,但是記不住事情的“阿甘”, 他的一個時鐘周期如果按1秒算: 內存訪問就是6分鐘 一次 CPU 上下文切換(系統調用)需要大約需要1小時 在 1Gbps 的網絡上傳輸 2K 的數據需要10多個小時 從 SSD 讀取 1MB 的順序數據,大約需要 1ms,換算成人類時間是 1個月 從磁盤讀取 1MB 連續數據需要 20ms,換算成人類時間是 20個月 如果說打開一個網頁可以秒開的話,那也相當于100年
對于CPU來說,這個世界真是太慢了!
存儲器的層次結構
上圖以層次化的方式,增加了價格信息,它展示了一個真理:世界上沒有免費的午餐。存儲器越往上速度越快,但是價格越來越貴, 越往下速度越慢,但是價格越來越便宜。正是由于計算機各個部件的速度不同,容量不同,價格不同,導致了計算機系統/編程中的各種問題以及相應的解決方案
并發和多線程 CPU的速度超級快,不能老是讓它閑著,要充分地壓榨它!這里有兩個強勁的理由:
- 人類需要多個程序“同時”運行,我們要把CPU的時間進行分片,讓各個程序在CPU上輪轉,造成一種多個程序同時在運行的假象,即并發。
- 當CPU遇到IO操作(硬盤,網絡)時,不能坐在那里干等“幾個月”甚至“幾年”,在等待的時候,一定要切換,去執行別的程序。
說起來簡單,但是程序的切換需要保存程序執行的現場,以便以后恢復執行,于是需要一個數據結構來表示,這就是進程了。如果一個進程只有一個“執行流”, 如果進程去等待硬盤的操作,那這個程序就會被阻塞,無法響應用戶的輸入了,所以必須得有多個“執行流”,即多線程。
緩存 需要持久化的數據一定要保存到硬盤中,但是硬盤超級慢,支持不了大量的并發訪問,那怎么辦呢?
可以把最常訪問的熱點數據放到CPU的緩存中嘛, 其實CPU也是這么做的,但是CPU的L1, L2, L3級緩存實在是太小, 根本滿足不了需求。于是只好退而求其次,把熱點數據放到速度稍慢的內存中,于是應用程序的緩存就出現了。緩存雖然是解決了問題,但是也帶來了更多的問題,例如:緩存數據和數據庫數據怎么保持一致性?
緩存如果崩潰了該怎么處理?數據在一臺機器的內存放不下了,要分布到多個機器上,怎么搞分布式啊,用什么算法?…..
異步 對于Tomcat這樣的應用服務器,對于每個請求都要用一個線程來處理,如果現在有一萬個請求進來, Tomcat會建立1萬個線程來處理嗎? 不會的,因為線程多了開銷會很大 ,線程切換起來也很慢,所以它只好用個線程池來復用線程?,F在假設線程池中有一千個可用線程(已經非常多了),它們都被派去訪問硬盤,數據庫,或者發起網絡調用,這是非常慢的操作,導致這一千個線程都在等待結果的返回(阻塞了),那剩下的九千個請求就沒法處理了,對吧?所以后來人們就發明了新的處理辦法,僅使用幾個線程(例如和CPU核心數量一樣),讓他們瘋狂運行,遇到I/O操作,程序就注冊一個鉤子函數放在那里,然后線程就去處理別的請求,等到I/O操作完成了,系統會給這個線程發送一個事件, 線程就回過頭來調用之前的鉤子函數(也叫回調函數)來處理。
這就是異步,非阻塞的處理方式。nginx,Node.js等采用的都是類似的思想。
單線程 Redis使用單線程的方式來處理請求的,為什么用單線程就可以呢? 它為什么不像Tomcat那樣使用多線程和線程池呢?因為它面對的僅僅是內存,內存的速度在計算機的體系中僅次于CPU,比那些網絡操作不知道要快到哪里去了所以這個唯一的線程就可以快速地執行內存的讀寫操作,完成從許多網絡過來的緩存請求了。單線程還有個巨大的優勢,沒有競爭,不需要加鎖!
本文鏈接:http://www.thecarconnectin.com/33771.html
網友評論comments