電腦服務是很講究所謂『角色』的。
同樣都是人,會因為其特長與選擇而在社會上扮演不同的角色,異曲同工。同樣都是馮紐曼結構的機器,也會因為所特化的方向不同,或是在整個電腦服務的位置不同,而扮演不同的角色。
在電腦服務裏頭,會有兩個很基本的角色,一個是客戶端 (Client),一個是伺服端 (Server)。
客戶端就是正常我們能摸到的產品,智能手機或是個人電腦等等。
跑在伺服端的機器就是大家都很常講的『伺服器』。
雖然說伺服器電腦有專用的機器,比如說什麼雙路 CPU 啦、SLC SSD 啦、Reg ECC 記憶體啦、工業級主機板啦、耐汙等級啦,大家對伺服器都會有一個想像,諸如貴、吵,機架式,刀鋒式,長得像冰箱,線多得跟叢林一樣。
但真相是,只要是台有對外連線手段,符合『馮紐曼架構』的電腦 (藍芽啦,網路啦),就可以當作伺服器了。
不是因為它的機器規格是伺服器所以是伺服器,而是因為它正在做伺服端的工作所以是伺服器。
伺服器規格的機器也常常被用在客戶端喔。
一般來說,伺服器規格的機器會有很多個核心 (比如說 64*2 核心),但每個核心都爛爛的 (比如說每核心都是 2.4 GHz)。這種多核心但每個核心都很爛的機器,非常適合拿來做圖像渲染、解壓縮、手遊模擬器多開等等。所以很多繪師或是職業代練玩家,會專程去買伺服器規格的機器來做客戶端的事情,這個時候雖然它規格是伺服器,但它就是個『客戶端』。
你說伺服器不是都很貴?
嗯……只要公司倒閉,那些可能趨近新品的伺服器就會流入二手市場,為了清點資產順利以節省租約還是什麼的原因,就用會直接嚇死你的價格開始進行拋售,這種機器在市場上稱為牛肉或洋垃圾,啊礦難時期拋售的顯卡稱為鍛鍊卡或女騎士……
離題了。
異曲同工,手機、平板、單板電腦甚至是智能手錶,他們也全都是符合馮紐曼結構的『電腦』,只不過他們是為了客戶端打造的機器,擁有螢幕、震動器、陀螺儀、音響,很少的核心 (比如說 10*2 核心),但每個核心都很強勁 (比如說每核心都是 5.2 GHz)。
跟剛才伺服器一樣,這些為了客戶端所打造的機器,只要你強硬地為它注入伺服端的作業系統與功能,它也會變成用客戶端規格的機器所實現的『伺服器』。
只不過會在真的變成伺服器這件事上出點問題,比如說智能手機為什麼連個網路孔都沒有 (廢話),智能手錶上為什麼連個伺服器用的作業系統都跑不起來 (廢話),我明明在智慧電視上裝了伺服端作業系統,為什麼五個人連線就會當機了 (廢話)。
總之伺服端跟客戶端就是電腦服務的基礎。
但伺服端跟客戶端的工作比重,並沒有必定誰輕誰重。
例如你正在路上用手機使用 Google,其實你使用的運算機器並不是你的手機,而是 Google 總部的某個位置的伺服器幫你運算完,你的手機事實上只負責顯示,而你只需要關注結果就可以了。
你可以稱呼這樣的構造為『雲端運算』。
為什麼一定要雲端運算?
扣除企業目的之類的原因,因為如果不是這樣,你光是走在路上做這件事,就需要扛著一台跟冰箱一樣大的機器耶……
又例如說你在打連線版本的 3A 大作,就會是把程式下載到你的電腦,然後伺服端只負責把你的即時遊玩數據 (比如發射子彈什麼的) 放進去伺服器推播給所有跟你一起玩的玩家,至於畫面的運算渲染則是由你插在電腦上的顯示卡負責。
你可以稱呼這種構造為『本地端運算』。
為什麼要本地端運算?
在這個場景,如果不是本地端運算,而是伺服器一頁一頁把畫面傳到你的電腦,在現代民用網路基礎工程的平均極限下,你的遊戲百分之百會 LAG……
這也就是為什服務的工程師,有分前端工程師跟後端工程師;前端工程師就是寫下載到客戶端的程式,後端工程師就是寫跑在伺服器上的程式。
最開始,一台電腦就是一台伺服器,或客戶端。
這個所謂的『一台電腦』,稱為『物理機』或是『實體機』,就是一台你看得見又摸得到的正經電腦。
你可以這樣想像客戶端的伺服器架構:
人:【客戶端電腦(物理)】 -> 【伺服器電腦 (物理)】