你有沒有想過,當你在蝦皮下單、玩手遊打怪、或是問 Siri 今天天氣如何的時候,這些計算到底是在哪裡發生的?是在你的手機上?還是在某個遠端的伺服器?
這篇文章會用最白話的方式,帶你搞懂:
- 運算是什麼
- 雲端運算 vs 本地運算 vs 霧運算的差別
- 垂直擴充 vs 水平擴充怎麼選
- 單一運算與平行運算的概念
看完之後,下次聽到這些名詞就不會再一頭霧水了!
運算是什麼?其實你每天都在用
小時候的加減乘除,長大後的商業邏輯
運算,說穿了就是「讓電腦幫你算東西」。
小時候我們用計算機按加減乘除,這就是最基本的運算。但在真實世界的網站和 App 裡面,運算要處理的東西複雜多了,我們通常把這些叫做 Business Logic(商業邏輯)。
生活中的運算例子
電商網站在算什麼?
- 這個商品多少錢?
- 你的購物車總金額是多少?
- 折扣碼可以折多少?
- 根據你過去買過的東西,推薦你可能喜歡的商品
手遊在算什麼?
- 你的角色從 A 點走到 B 點要多久?
- 你放了什麼技能?
- 你砍了怪物幾刀?
- 怪物該扣多少血?
這些全部都是「運算」的一部分,只是比按計算機複雜得多。
運算在哪裡發生?三種位置一次搞懂
講到運算,第一個問題就是:這些計算到底在哪裡進行?
答案有三種:雲端、本地端、或是兩個都用。
雲端運算:讓遠端伺服器幫你算
還記得瀏覽器和伺服器的關係嗎?
- 瀏覽器(你的電腦/手機)= Client 端(客戶端)
- 伺服器(遠端的電腦)= Server 端(伺服器端)
當運算發生在伺服器那一端,我們就說這是「雲端運算」。
講白了,雲端就是「別人的電腦」。你把資料丟過去,讓那邊的機器幫你處理,處理完再把結果傳回來。
雲端運算的優點
- 不吃你的電腦效能:運算都在遠端進行,你的電腦不用太好也能用
- 可以用很多台機器一起算:伺服器那邊可以放一堆電腦同時運作
- 很多人可以同時連線:不只你一個人能用,大家都能連上去
雲端運算的缺點
- 沒網路就 GG:斷網的時候,什麼都做不了
- 網路慢就會卡:如果你的網路環境不好,體驗就會很差
本地端運算:讓你自己的裝置來算
雲端要靠網路,沒網路就不能用。那乾脆在自己的裝置上算不就好了?這就是「本地端運算」。
本地端包含哪些地方?
- 你的瀏覽器
- 你的手機 App
- 穿戴式裝置(Apple Watch、小米手環等)
- 各種嵌入式裝置
本地端運算的優點
- 不需要網路也能用
- 反應速度快(不用等資料傳來傳去)
本地端運算的缺點
- 受限於裝置效能:手機、手錶的運算能力有限
- 裝置太弱就跑不動
霧運算:雲端 + 本地端的混合技
有沒有可能兩邊都用?當然可以!這就叫做「霧運算(Fog Computing)」。
為什麼叫「霧」?
你知道雲和霧其實都是小水滴組成的嗎?差別只在於出現的位置:
- 雲在天上(遠端伺服器)
- 霧靠近地面(比較靠近你的裝置)
霧運算就是把一部分運算放在雲端,一部分放在本地端,取兩邊的優點。
霧運算的實際應用:智慧車
想像一下自動駕駛的車子:
- 如果全部靠雲端運算,車子進隧道沒訊號怎麼辦?難道要在隧道裡亂開嗎?
- 所以車子必須有本地端的運算能力,確保沒網路時也能正常駕駛
- 但有些功能(像是更新地圖、分析路況)又需要雲端的支援
這種「有些在本地算、有些在雲端算」的做法,就是霧運算。
為什麼會出現霧運算?
幾年前物聯網(IoT)開始流行,各種智慧裝置越來越普及:智慧燈泡、智慧手錶、監控攝影機等等。
這些裝置有兩個共同的限制:
- 不能太貴:總不能一個燈泡賣你幾萬塊
- 不能太大:要小巧才能嵌入各種地方
既然又便宜又小,運算能力自然就弱。本地端不夠力,就需要雲端幫忙,霧運算因此應運而生。
運算的種類:怎麼讓電腦算得更快?
除了「在哪裡算」,另一個重要的問題是「怎麼算」。
根據運算的方式,我們可以分成三種:
單一運算:一個人慢慢算
用計算機來比喻
想像你現在有一堆點數卡,要把上面的數字全部加起來。
你拿了一台計算機,一張一張慢慢按、慢慢加。這就是「單一運算」——用一台機器處理所有的工作。
想算快一點怎麼辦?
方法一:按快一點
讓演算法更聰明、更有效率,就像你按計算機的速度變快。
方法二:換一台更強的計算機
從最陽春的計算機,換成工程用計算機,可以暫存數字、套用公式。
這種「把小東西換成大東西」的做法,叫做垂直擴充(Vertical Scaling)。
就像飲料從小杯換成大杯,杯子變大了,但還是只有一杯。
垂直擴充的限制
問題是,計算機再怎麼強也有極限。當工作量大到一台機器處理不完,光靠「換更強的機器」就不夠了。
平行運算:找一群人一起算
一個人算太慢,那就找十個人!
回到點數卡的例子。與其一個人慢慢加,不如找十個人,每人分一部分,同時計算,最後再把結果加起來。
這就是「平行運算(Parallel Computing)」。
平行運算要考慮的問題
聽起來很簡單,但實際上有很多細節要處理:
- 怎麼分配工作? 每人固定分 1/10?還是做完的人自己來拿新任務?
- 怎麼通知大家? 新任務來的時候,要怎麼讓所有人知道?
- 怎麼整合結果? 每個人算完之後,要怎麼把答案合在一起?
這些問題,就是平行運算領域在研究的課題。
水平擴充:用數量取勝
如果你設計了一套好的平行運算策略,不管是 10 個人、100 個人、還是 1000 個人,都可以順利協作。
這種「用更多機器來分擔工作」的做法,叫做水平擴充(Horizontal Scaling)。
就像用一群小兵去打大魔王,而不是只派一個勇者硬扛。
網格運算:更進階的玩法
網格運算(Grid Computing)是把單一運算和平行運算結合起來的進階技術。
如果說平行運算是「一維」的(一排人一起算),網格運算就是「二維」的(變成一個格狀的運算架構)。
這是比較專業的領域,有興趣的話可以自己 Google 深入了解。
運算位置 × 運算種類:實際怎麼搭配?
前面講了運算的「位置」(雲端、本地端、霧)和「種類」(單一、平行、網格),但實際上這兩個是可以自由組合的。
本地端的運算組合
本地端 + 垂直擴充
最簡單的做法:換一台更好的裝置。
手機瀏覽器跑不動?換成電腦瀏覽器。筆電不夠力?換成桌機。這就是本地端的垂直擴充——把你手上的設備變強。
本地端 + 水平擴充
讓多台裝置一起幫忙算。你可能聽過這些:
- P2P(點對點):很多裝置互相連接,一起分擔運算工作
- 區塊鏈:每個裝置都是一個節點,大家共同維護整個系統
本地端 + 網格運算
比較少見,但理論上可以把多台本地裝置組成格狀架構,同時做垂直和水平的擴充。
雲端的運算組合
雲端 + 垂直擴充
把伺服器升級成更強的機器。例如從 2 核心 CPU 升級到 16 核心,或是加大記憶體。
這是最直覺的做法,但有上限——再怎麼強的單台機器,終究有極限。
雲端 + 水平擴充
這是目前最主流的做法。與其買一台超強的機器,不如用很多台普通的機器一起算。
像是 Netflix、Google 這種大型服務,背後都是靠成千上萬台伺服器同時運作,這就是雲端的水平擴充。
雲端 + 網格運算
把雲端的多台機器組成格狀架構,結合垂直和水平的優點。這是處理超大規模運算(像是科學模擬、大數據分析)時會用到的進階技術。
總結
| 概念 | 簡單說明 |
|---|---|
| 運算 | 電腦幫你處理商業邏輯(計算價格、推薦商品、遊戲邏輯等) |
| 雲端運算 | 在遠端伺服器上進行運算,不吃本地效能,但需要網路 |
| 本地端運算 | 在你的裝置上進行運算,不需網路,但受限於裝置效能 |
| 霧運算 | 雲端 + 本地端的混合,各取所長 |
| 單一運算 | 一台機器處理所有工作 |
| 平行運算 | 多台機器同時處理,分工合作 |
| 垂直擴充 | 把機器變強(小杯換大杯) |
| 水平擴充 | 增加更多機器(找更多人來幫忙) |
結語
運算是網站和應用程式的核心,理解這些概念會幫助你在未來學習更進階的技術時,有更清晰的思路。
不管是雲端還是本地端、單一還是平行,每種運算方式都有它適合的場景。重點是根據實際需求,選擇最適合的解決方案。
希望這篇文章對你有幫助,我們下次見!👋