詳解Java 微服務架構
一、傳統的整體式架構
傳統的整體式架構都是模塊化的設計邏輯,如展示(Views)、應用程序邏輯(Controller)、業務邏輯(Service)和數據訪問對象(Dao),程序在編寫完成後被打包部署為一個具體的應用。如圖所示:
系統的水平擴展
如果要對系統進行水平擴展,通常情況下,隻需要增加服務器的數量,並將打包好的應用拷貝到不同的服務器,然後通過負載均衡器(Nginx)就可以輕松實現應用的水平擴展。
整體式架構的缺點
- 應用復雜度增加,更新、維護困難。
- 易造成系統資源浪費。
- 影響開發效率。
- 應用可靠性低。
- 不利於技術更新。
二、面向服務的架構SOA(Service-Oriented Architecture)
SOA的思路是把應用中相近的功能聚合在一起,以服務的形式提供出去。如圖所示:
缺點
雖然SOA解決瞭整體式架構中的問題,但多數情況下,SOA中相互獨立的服務仍然會部署在同一個運行環境中。和整體式架構類似,隨著業務功能的增多,SOA的服務會變得越來越復雜。本質上看,整體式架構的問題並沒有因為使用SOA而變得更好。
三、微服務架構
微服務架構是一種架構風格和架構思想,它倡導我們在傳統軟件應用架構的基礎上,將系統業務按照功能拆分為更加細粒度的服務,所拆分的每一個服務都是一個獨立的應用,這些應用對外提供公共的API,可以獨立承擔對外服務的職責,通過此種思想方式所開發的軟件服務實體就是“微服務”,而圍繞著微服務思想構建的一系列結構(包括開發、測試、部署等),我們可以將它稱之為“微服務架構”。如圖所示:
缺點
- 開發人員必須處理創建分佈式系統的復雜性。
- 部署的復雜性。
- 增加內存消耗。
微服務架構與SOA的區別
四、如何構建微服務架構
微服務架構的組件
(1)服務註冊中心:註冊系統中所有服務的地方。
(2)服務註冊:服務提供方將自己調用地址註冊到服務註冊中心,讓服務調用方能夠方便地找到自己。
(3)服務發現:服務調用方從服務註冊中心找到自己需要調用服務的地址。
(4)負載均衡:服務提供方一般以多實例的形式提供服務,使用負載均衡能夠讓服務調用方連接到合適的服務節點。
(5)服務容錯:通過斷路器(也稱熔斷器)等一系列的服務保護機制,保證服務調用者在調用異常服務時能快速地返回結果,避免大量的同步等待。
(6)服務網關:也稱為API網關,是服務調用的唯一入口,可以在這個組件中實現用戶鑒權、動態路由、灰度發佈、負載限流等功能。
(7)分佈式配置中心:將本地化的配置信息(properties、yml、yaml等)註冊到配置中心,實現程序包在開發、測試、生產環境的無差別性,方便程序包的遷移。
微服務架構的技術選型
(1)微服務實例的開發:SpringBoot
(2)服務的註冊與發現:Spring Cloud Eureka
(3)負載均衡:Spring Cloud Ribbon
(4)服務容錯:Spring Cloud Hystrix
(5)API網關:Spring Cloud Zuul
(6)分佈式配置中心:Spring Cloud Config
(7)調試:Swagger
(8)部署:Docker
(9)持續集成:Jenkins
以上就是詳解Java 微服務架構的詳細內容,更多關於Java 微服務架構的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- SpringCloud微服務基礎簡介
- 關於SpringCloud的微服務以及組件詳解
- Java之Springcloud Feign組件詳解
- 如何解決springcloud feign 首次調用100%失敗的問題
- SpringCloud超詳細講解微服務網關Gateway