跳至主要内容

微服務基礎觀念

What Is a Microservice?

單體式架構 Monolithic Architecture

在接觸微服務之前,通常開發者以單體式架構開發網路服務。
如下圖所示,假設一個網站提供四個服務,
單體式架構會將中介軟體、路由等要件集中在一起,以此架構提供多個服務。

示意圖 單體式架構 示意圖 單體式架構

微服務架構 Monolithic Architecture

在微服務架構中,每個服務都是一個獨立的架構,有其各自的中介軟體、路由等要件。
其優點是,即使單一服務的路由或資料庫出狀況,其他服務依然可正常運行。
反觀單體式架構,倘若資料庫出狀況,可能導致整個網站無法提供服務。

示意圖 單體式架構 示意圖 單體式架構

Data in Microservices

微服務的困難之處在於服務間的資料難以管理。
微服務採用 Database-Per-Service 模式,各項服務若需要存取資料,
只能從其專屬的資料庫存取,服務之間不共用同一資料庫。

Pros and Cons of Async Communication

基於 Database-Per-Service 的原則,
微服務架構通常會以 Event Bus(或稱 Event Store)確保每個微服務不互相依賴卻又可共享資料。

假設有 A、B 兩個服務,B 需要 A 的資料。每當 A 服務在其資料庫寫入資料時,也發送事件至 Event Bus,爾後 B 服務只要在適當時機從 Event Bus 取得資料並存入自己的資料庫,即可實現微服務之間不直接溝通卻又能共享資料的目標。

然而,這個作法的缺點是不同的資料庫間需要重複儲存資料,也使資料結構更複雜且難理解。
有鑑於此,開發者仍要視情況決定是否採用微服務架構。