日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

八個開發者不可不知的微服務設計模式

來源: 責編: 時間:2023-12-14 16:38:51 261觀看
導讀與面向對象設計模式一樣,微服務模式也是一種經過驗證的解決方案,用于解決開發、部署和擴展微服務時遇到的常見問題。舉例來說,SAGA模式解決了分布式事務失敗的問題,而API網關則簡化了客戶端代碼,并充當許多微服務的前端控

與面向對象設計模式一樣,微服務模式也是一種經過驗證的解決方案,用于解決開發、部署和擴展微服務時遇到的常見問題。c4Y28資訊網——每日最新資訊28at.com

舉例來說,SAGA模式解決了分布式事務失敗的問題,而API網關則簡化了客戶端代碼,并充當許多微服務的前端控制器和負載均衡器,提高了微服務的可維護性。c4Y28資訊網——每日最新資訊28at.com

本文介紹一些常見的微服務設計模式,每個從事微服務開發或將單體應用程序拆分為微服務以分離代碼、數據和接口的開發人員都應該了解和學習。c4Y28資訊網——每日最新資訊28at.com

1 服務注冊模式

服務注冊模式提供了一個中央存儲庫,用于按名稱發現微服務。它是一種微服務架構模式,使服務能夠發現其他微服務并相互通信。c4Y28資訊網——每日最新資訊28at.com

在這種模式中,使用一個中央服務注冊表或目錄來記錄可用服務及其位置。微服務可以向注冊表注冊自己,其他微服務可以查找注冊表以找到所需服務的位置。c4Y28資訊網——每日最新資訊28at.com

舉個例子,假設有一個大型電子商務網站,包含許多微服務,如訂單服務、支付服務、物流服務和客戶服務。每個服務都有自己的REST API,其他服務可以使用它來進行通信。c4Y28資訊網——每日最新資訊28at.com

為了讓這些服務更容易相互發現,可以使用服務注冊模式。我們可以設置一個服務注冊表,例如Consul或Eureka(Spring Cloud提供此功能),它維護著所有可用服務及其終點的列表。c4Y28資訊網——每日最新資訊28at.com

當一個服務啟動時,它可以通過提供自己的名稱和終點來向注冊表注冊自己。c4Y28資訊網——每日最新資訊28at.com

例如,訂單服務可以將自己注冊為“order-service”,終點為“http://order-service:8080”。其他需要與訂單服務通信的服務可以通過在注冊表中查找其名稱來獲取其終點。c4Y28資訊網——每日最新資訊28at.com

例如,支付服務可以在注冊表中查找“order-service”的終點,以向訂單服務發送支付信息。同樣,物流服務可以在注冊表中查找“order-service”的終點,以獲取訂單的物流信息。c4Y28資訊網——每日最新資訊28at.com

這樣,每個服務可以獨立開發和部署,而不需要在其代碼中硬編碼其他服務的終點。服務注冊模式使得服務能夠動態地相互定位,使系統更具靈活性和適應變化的能力。c4Y28資訊網——每日最新資訊28at.com

圖片圖片c4Y28資訊網——每日最新資訊28at.com

2 斷路器模式

顧名思義,斷路器模式通過斷開電路來防止級聯故障,并使應用程序在一個或多個服務失敗時繼續運行。用于處理微服務架構中可能發生的故障。c4Y28資訊網——每日最新資訊28at.com

在這種模式中,斷路器充當客戶端和服務之間的安全網,保護客戶端免受服務故障的影響。斷路器監視服務的狀態,如果檢測到服務失敗,它可以打開斷路器,并阻止進一步的請求發送到服務,直到服務恢復正常。c4Y28資訊網——每日最新資訊28at.com

舉個例子,假設一個微服務應用程序正在使用一個不可靠的外部服務,而且即使外部服務失敗,應用程序也需要繼續運行。c4Y28資訊網——每日最新資訊28at.com

在這種情況下,可以使用斷路器模式來檢測外部服務是否不可用,并切換到備用服務或降級服務,直到外部服務再次可用。c4Y28資訊網——每日最新資訊28at.com

圖片圖片c4Y28資訊網——每日最新資訊28at.com

在微服務架構中,可以使用Netflix的Hystrix或Spring Cloud Circuit Breaker等工具來實現斷路器模式,這些工具提供了一種管理斷路器行為的方式,允許應用程序以可控的方式對服務故障做出反應。c4Y28資訊網——每日最新資訊28at.com

3 API網關模式

API網關模式是微服務架構中常用的設計模式之一,涉及到一個API網關,它充當所有傳入API請求的入口點。它為所有微服務提供了一個統一的入口點,并充當客戶端和微服務之間的代理,將請求路由到適當的服務。c4Y28資訊網——每日最新資訊28at.com

API網關的主要目的是解耦客戶端和微服務,將系統的復雜性抽象到一個簡化和一致的API后面。這也意味著您不需要查找和記住100多個微服務REST API的地址。c4Y28資訊網——每日最新資訊28at.com

它還提供了額外的安全性和治理層,允許組織控制和管理對其服務的訪問,監控系統的性能,并在所有服務中強制執行策略。c4Y28資訊網——每日最新資訊28at.com

以下是一個簡單電子商務系統中API網關模式的工作示例:c4Y28資訊網——每日最新資訊28at.com

假設一個電子商務系統有多個微服務來處理不同的功能,如訂單管理、產品目錄和用戶身份驗證。每個微服務都有自己的處理請求的API終點。然而,客戶端(可以是Web或移動應用程序)需要通過一個入口點訪問所有這些微服務。c4Y28資訊網——每日最新資訊28at.com

這就是API網關發揮作用的地方。API網關充當反向代理,接收來自客戶端的所有傳入請求。然后,它根據請求的終點將每個請求路由到適當的微服務。c4Y28資訊網——每日最新資訊28at.com

例如,API網關可能會將請求路由到/orders終點的訂單管理微服務,將請求路由到/products終點的產品目錄微服務。c4Y28資訊網——每日最新資訊28at.com

圖片圖片c4Y28資訊網——每日最新資訊28at.com

API網關還可以執行其他功能,如請求和響應轉換、速率限制、身份驗證和授權以及緩存。c4Y28資訊網——每日最新資訊28at.com

它還可以提供統一的API,隱藏微服務的內部細節,并向客戶端呈現更簡單和一致的接口。c4Y28資訊網——每日最新資訊28at.com

總的來說,API網關模式提供了一種在復雜系統中管理微服務的可擴展、靈活和安全的方式,使得開發、部署和維護基于微服務的應用程序更加容易。c4Y28資訊網——每日最新資訊28at.com

圖片圖片c4Y28資訊網——每日最新資訊28at.com

4 Saga模式

Saga模式提供了一種管理涉及多個微服務的事務的方式。它用于確保跨多個服務的一系列事務成功完成,如果失敗,則回滾或撤銷到目前為止所做的所有更改。c4Y28資訊網——每日最新資訊28at.com

Saga模式由一系列本地事務組成,每個事務更新單個服務的狀態,以及一組相應的補償事務,用于在發生故障時撤銷原始事務的影響。c4Y28資訊網——每日最新資訊28at.com

以下是在基于微服務的電子商務應用程序中使用Saga模式的示例:c4Y28資訊網——每日最新資訊28at.com

假設您有兩個微服務,一個負責處理訂單,另一個負責發貨。c4Y28資訊網——每日最新資訊28at.com

當下訂單時,訂單處理服務負責驗證訂單并確保貨物有庫存,而發貨服務負責將訂單打包并發送給客戶。c4Y28資訊網——每日最新資訊28at.com

如果訂單處理服務確定訂單有效且所有商品有庫存,它會向發貨服務發送消息以啟動發貨流程。此時,Saga模式就會發揮作用。c4Y28資訊網——每日最新資訊28at.com

發貨服務將創建一個新的事務來打包和發貨訂單,如果事務成功,它將標記訂單為已發貨。c4Y28資訊網——每日最新資訊28at.com

另一方面,如果事務失敗(例如與發貨提供商的問題),發貨服務將啟動一個補償事務來撤銷原始事務的影響,例如取消發貨并重新補充庫存。c4Y28資訊網——每日最新資訊28at.com

圖片圖片c4Y28資訊網——每日最新資訊28at.com

同時,訂單處理服務也使用Saga模式來管理自己的事務。如果發貨服務報告訂單已成功發貨,訂單處理服務將標記訂單為已完成。c4Y28資訊網——每日最新資訊28at.com

如果發貨服務報告失敗,訂單處理服務將啟動一個補償事務來取消訂單并退還支付的款項。c4Y28資訊網——每日最新資訊28at.com

總體而言,Saga模式提供了一種管理跨多個微服務的復雜事務的方式,以確保一致性和可靠性。如果您只想學習一種模式,最好學習Saga模式,因為它在微服務應用程序中非常有幫助。c4Y28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-45508-0.html八個開發者不可不知的微服務設計模式

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Flutter 全埋點的實現

下一篇: 華為首款開放式耳機迪拜全球首發,獨創“C 形橋”設計領銜時尚生活

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 洛南县| 罗甸县| 马山县| 巨鹿县| 成都市| 深泽县| 杭锦后旗| 安徽省| 罗源县| 鹤岗市| 鄯善县| 巴林右旗| 敦化市| 裕民县| 苍山县| 太白县| 芜湖县| 扬州市| 祥云县| 安徽省| 德化县| 大同县| 休宁县| 瑞安市| 长丰县| 交口县| 常熟市| 莎车县| 瑞丽市| 顺昌县| 石柱| 定襄县| 隆化县| 北碚区| 赣州市| 台南市| 营口市| 宁陕县| 襄垣县| 云霄县| 长沙县|