什麼是無伺服器微服務?| 無伺服器微服務說明

微服務是應用程式中較小的部分,彼此獨立執行,並且可以透過多種方式進行部署。無伺服器微服務在無伺服器架構內部署。

學習目標

閱讀本文後,您將能夠:

  • 定義無伺服器微服務
  • 瞭解無伺服器微服務的運作方式
  • 區分微服務、容器和功能

複製文章連結

什麼是微服務?

想像一下,把一個應用程式切成小塊,然後作為一個較小部分的集合而不是一個整體來運執行。基本上,微服務架構就是這樣。應用程式的每一小塊都稱為「微服務」,它們各自僅執行一項服務,獨立于應用程式的其他部分執行,並且在自己的環境中執行,儲存自己的資料。儘管名為微小,微服務並不一定很小。稱其「微小」的原因是它們僅處理一項服務,並且是較大應用程式的一部分。

微服務構建的應用程式可以比作一支美式足球隊,在球隊中,每個球員都扮演不同的角色,但是所有球員共同組成一個球隊(整個應用程式),共同實現一個目標。或者,可以將微服務視為人體中的不同系統(循環、呼吸等),應用程式即為整個人體。

從使用者的角度來看,微服務構建的應用程式具有單一介面,並且應與設計為一個堆疊的應用程式一樣運作。但是,每個微服務在幕後都有自己的資料庫,並與應用程式的其餘部分分開執行。此外,同一應用程式中的微服務可以用不同的語言編寫並使用不同的庫。

單體架構與微服務架構

微服務通常與單體架構相對。單體架構是構建應用程式的經典方式。單體應用程式是單個堆疊,使用者介面位於頂部,業務邏輯位於中間,資料庫位於底部。通常,單體應用程式託管在特定的伺服器或伺服器組中。以這種方式構建應用程式有一個缺點,那就是對應用程式進行任何小的變更都意味著必須更新整個堆疊。另一個缺點是,如果應用程式的一部分損壞,則整個應用程式可能都會失效。

微服務的優勢

  • 復原能力:由於應用程式經過分割,因此應用程式的一部分損壞或崩潰不一定會影響應用程式的其餘部分
  • 可選擇擴展性:無需擴展整個應用程式,可以僅擴展使用量很大的微服務
  • 更易於新增或更新功能:可以一次推出或更新一個功能,而不必更新整個應用程式堆疊
  • 為開發人員提供靈活性:每個微服務可以用不同的語言編寫,並且都有自己的庫

微服務可以成為無伺服器架構的一部分嗎?

微服務可以多種方式部署;它們可以是無伺服器架構的一部分,可以託管在容器中,可以使用 PaaS 開發,或者,理論上還可以用於構建本機託管的應用程式。然而,當使用容器或無伺服器架構在雲端託管應用程式時,用微服務構建應用程式的優勢可能會最為明顯。

什麼是無伺服器微服務?無伺服器微服務架構如何運作?

無伺服器微服務部署在無伺服器廠商的基礎結構中,僅在應用程式需要它們時執行。微服務也可以分解成更小的功能,但具體視微服務的大小而定。要深入瞭解有關無伺服器運算的運作原理,請參閱什麼是無伺服器運算?

微服務和無伺服器功能有什麼區別?

技術社群還在定義兩者的區別,但是通常,微服務更大,可比功能執行更多操作。功能是一小段代碼,僅回應一個事件,執行一個動作。根據開發人員對應用程式的分割,微服務可能等同於一個功能(意味著它僅執行一個動作),也可能包含多個功能。

繼續借用足球的比喻,想想四分衛的所有職責:投擲傳球、將球傳給後衛,等等。如果說四分衛就像球隊環境中的微服務(提供「四分衛」服務),那麼這些較小的活動中的每一項都是一個功能。但是,微服務和功能之間的界限有時會模糊不清,就像球隊中某些球員只執行一項動作(如踢球手)一樣。

Cloudflare Workers 是微服務嗎?

Cloudflare Workers 是託管在 Cloudflare 邊緣網路中、應 HTTP 請求而執行的 JavaScript 代碼。Workers 的行為更像功能,但具有靈活性,也可以充當微服務。Cloudflare 並不限制開發人員可以構建和部署的 Workers 的大小或類型。