微服務架構學習

2022-07-20 14:21:18 字數 1750 閱讀 2865

微服務框架當下很火,那到底什麼是微服務呢?為什麼會火呢?

我們傳統的應用程式是乙個專案,在乙個程序裡面執行的。這樣就會導致各個業務邏輯模組耦合性高,有時**調整時,牽一髮而動全身。傳統的專案大部分採用單體式開發,如下圖所示:

如上圖所示,單體式開發弊端顯而易見。我們改動訂單模組時,倉儲、物流、使用者模組也可能會受到影響。

業務推動技術的發展,技術應用於業務。由此,誕生了我們的微服務架構。

微服務架構的定義:是一種程式設計風格,把各種業務分離成單獨的服務,在獨立程序中執行。這樣就可以降低各模組之間的耦合性。

微服務把各模組獨立分離出來,那麼各個模組之間需要進行通訊時,通過什麼方式通訊呢?

微服務的各個模組是單獨的乙個程序,我們要實現他們之間的通訊,只能通過跨程序通訊方式。

跨程序通訊主要方式有:基於第三方共享儲存(如:佇列、資料庫)、網路協議通訊(webservice/wcf/webapi等)、remoting(rpc),其中網路協議通訊用的最多

微服務要求我們任何服務都要集群(提供多個程序處理,避免單一程序掛死帶來影響)

集群的好處:提公升承載能力、避免單一故障、動態伸縮。

提到集群,很多人會想到用nginx來集群,如下圖所示:

雖然nginx可以實現服務集群,但是nginx不能實現動態新增服務例項、同時由於服務可能會掛死,所以必須要經常檢查服務的健康狀況,這個nginx也做不到,這就產生了我們的consul。

consul可以動態進行服務的註冊與刪除,是微服務必須的。consul的工作過程如下圖所示:

儘管我們已經把模組劃分成很多程序服務了,但是畢竟資源有限,我們在遇到流量大爆發時(比如雙11),可能會導致總資源不夠用,這個時候應該怎麼處理?

我們再polly裡面配製好服務的優先順序,平時能正常訪問,特殊時期選擇關閉部分服務。

polly的主要功能有:

①限流:限制單位時間內服務的請求頻率(比如秒殺活動),只允許幾個請求進來

②降級處理:降低優先順序來實現特殊時期關閉某些服務

③快取:可以對一些資料進行快取,這樣就可以從快取裡面取資料,避免再進入服務層呼叫服務。

④重試機制:當對乙個服務例項訪問時,訪問失敗,我們重新訪問,避免遇到服務偶然性掛死問題

⑤超時機制:設定乙個超時時間,如果乙個例項在規定時間內訪問不上,就跳出去訪問其他服務。

⑥熔斷機制:乙個服務不能響應,就停止訪問,不再請求。

每乙個模組可能有很多個微服務,客戶端不可能要管理所有的服務,因為如果管理的話客戶端會變得非常臃腫,不易維護。

這時,閘道器gateway就可以幫我們管理這麼多且複雜的各個服務。

閘道器gateway是微服務中最核心的,可以說沒有閘道器,微服務就無法執行

閘道器的工作機制如下所示:

我們上面所說的polly位於api gateway這一層,認證授權(identityserver4也處於api gateway裡面)

我們的服務就存放在dock容器裡面,有點類似乙個映象檔案。

dock容器:快速部署、敏捷迭代

微服務與微服務架構

微服務 微服務強調的是服務的大小,它關注的是某乙個點,是具體解決某乙個問題 提供落地對應服務的乙個服務應用,狹意的看,可以看作eclipse裡面的乙個個微服務工程 或者module。例如 訂單服務 支付服務 微服務架構 馬丁.福勒 martin fowler 微服務架構介紹 微服務架構是 種架構模式...

微服務架構

一 先了解一下什麼是單體應用 就是乙個應用程式包含了所有模組功能,各模組同時部署。當然這種應用模式比較容易部署 測試,但隨著專案的加大,單體模式就會變得越來越臃腫,維護的成本逐漸變高。當乙個模組出錯,整個應用都會出現問題,擴充套件能力也會受到限制。二 什麼是微服務 是將整個應用程式分解為多個模組,各...

微服務架構

簡單來說,微服務架構風格想要開發一種由多個小服務組成的應用,每個服務執行於獨立的程序,並且採用輕量級互動,多數情況下乙個http的資源api,這些服務具備獨立業務能力並可以通過自動化部署方式獨立部署,這種風格使最小化集中管理,從而可以使用多種不同的程式語言喝資料儲存技術 james lewis 和 ...