微服務架構簡述
一、微服務及其他架構
Spring Cloud微服務學習筆記以一個微信點餐springboot系統爲背景講述微服務spring cloud框架的應用和原理實現,系統包括買家端和賣家端兩部分,將以賣家端爲主;涉及到的架構形態有單體架構、基於Ajax的前後端分離框架vue、分佈式(水平拓展&服務拆分)。
1.1 什麼是微服務
“微服務” 一詞源於Martin Fowler的名爲Microservices的博文,文中詳述了微服務概念,原文中的粗體部分如下
- 一系列微小的服務共同組成
- 運行在獨立的進程裏
- 每個服務爲獨立的業務開發
- 獨立部署
- 分佈式的管理
- 是一種架構風格,無嚴格標準
爲什麼提出微服務架構?架構的演變:單一應用架構==》垂直應用架構==》分佈式服務架構==》流式計算架構
1.2與單體架構對比
點餐系統結構圖
單體結構優點
- 容易測試
- 容易部署
- 響應時間短,適於併發量中小的系統
單體結構缺點
- 開發效率低
- 擴展性低,代碼維護難
- 部署不靈活
- 穩定性不高,無法應對高併發的場景
1.3基於Ajax的前後端分離框架vue
原理架構圖
邏輯架構圖
二、從一個極簡的微服務架構開始
2.1基礎的微服務組件
簡單的微服務架構圖
注意與前後端分離的邏輯架構圖作對比
- 服務註冊與發現
服務提供方在其中註冊其自身地址,服務消費方在其中發現要調用的服務地址
- 服務網關(Service Gateway)
前端路由請求的唯一入口,屏蔽後端服務的細節,將外部的路由反向路由到後端服務中去,還會有限流、容錯、監控和日誌的功能,包括用戶認證、授權、反爬蟲等
- 後端通用服務(又稱中間層服務Middle Tier Service)
將API地址註冊在註冊中心上,供前端服務使用
- 前端服務(又稱邊緣服務Edge Service)
對註冊在註冊中心的後端服務進行聚合和裁剪。聚合:例如將多個API組合爲一個API,減少用戶調用次數。裁剪:例如手機端和PC端對同一個請求的返回信息詳細程度不同
2.2 兩大主流實現框架
- 阿里系Dubbo(噹噹Dubbox)
- Dubbo做服務化治理
- Zookeeper做服務註冊中心
- SpringMVC or SpringBoot
- …
- Spring Cloud全系列
- Spring cloud Netflix Eureka
- SpringBoot
- …
2.3 Spring Cloud是什麼
spring cloud 是一個開發工具集,利用了springboot的開發便利;主要基於對Netflix 開源組件的進一步封裝,簡化了分佈式開發