服務(wù)調(diào)用關(guān)系
API網(wǎng)關(guān)優(yōu)缺點(diǎn)
- 簡化溝通方式
API網(wǎng)關(guān)對所有微服務(wù)提供單一的訪問點(diǎn) - 安全性
對客戶端隱藏了服務(wù)發(fā)現(xiàn)和服務(wù)版本
阻止大規(guī)模攻擊,包括SQL注入,XML解析漏洞和Dos攻擊
驗(yàn)證token,certificates和其他credentials - 混合通訊協(xié)議
API網(wǎng)關(guān)翻譯并支持不同的通訊協(xié)議 - 調(diào)用頻率库物,跨域拗秘,緩存配置
- 需要額外的配置
-
需要管理路由的配置
常見的微服務(wù)組件及概念
身份認(rèn)證
用戶、客戶端草穆、資源交互過程中的身份認(rèn)證授權(quán)框架服務(wù)注冊
服務(wù)提供方將自己調(diào)用地址注冊到服務(wù)注冊中心灌灾,讓服務(wù)調(diào)用方能夠方便地找到自己。服務(wù)發(fā)現(xiàn)
服務(wù)調(diào)用方從服務(wù)注冊中心找到自己需要調(diào)用的服務(wù)的地址悲柱。負(fù)載均衡
服務(wù)提供方一般以多實(shí)例的形式提供服務(wù)锋喜,負(fù)載均衡功能能夠讓服務(wù)調(diào)用方連接到合適的服務(wù)節(jié)點(diǎn)。并且,節(jié)點(diǎn)選擇的工作對服務(wù)調(diào)用方來說是透明的嘿般。服務(wù)網(wǎng)關(guān)
服務(wù)網(wǎng)關(guān)是服務(wù)調(diào)用的唯一入口段标,可以在這個組件是實(shí)現(xiàn)用戶鑒權(quán)、動態(tài)路由炉奴、灰度發(fā)布逼庞、A/B 測試、負(fù)載限流等功能瞻赶。配置中心
將本地化的配置信息(properties, xml, yaml 等)注冊到配置中心往堡,實(shí)現(xiàn)程序包在開發(fā)、測試共耍、生產(chǎn)環(huán)境的無差別性虑灰,方便程序包的遷移。API 管理
以方便的形式編寫及更新 API 文檔痹兜,并以方便的形式供調(diào)用者查看和測試穆咐。集成框架
微服務(wù)組件都以職責(zé)單一的程序包對外提供服務(wù),集成框架以配置的形式將所有微服務(wù)組件(特別是管理端組件)集成到統(tǒng)一的界面框架下字旭,讓用戶能夠在統(tǒng)一的界面中使用系統(tǒng)对湃。分布式事務(wù)
對于重要的業(yè)務(wù),需要通過分布式事務(wù)技術(shù)(TCC遗淳、高可用消息服務(wù)拍柒、最大努力通知)保證數(shù)據(jù)的一致性。調(diào)用鏈
記錄完成一個業(yè)務(wù)邏輯時調(diào)用到的微服務(wù)屈暗,并將這種串行或并行的調(diào)用關(guān)系展示出來拆讯。在系統(tǒng)出錯時,可以方便地找到出錯點(diǎn)养叛。支撐平臺
系統(tǒng)微服務(wù)化后种呐,系統(tǒng)變得更加碎片化,系統(tǒng)的部署弃甥、運(yùn)維爽室、監(jiān)控等都比單體架構(gòu)更加復(fù)雜,那么淆攻,就需要將大部分的工作自動化阔墩。
現(xiàn)在,可以通過 Docker 等工具來中和這些微服務(wù)架構(gòu)帶來的弊端瓶珊。 例如持續(xù)集成啸箫、藍(lán)綠發(fā)布、健康檢查艰毒、性能健康等等筐高。嚴(yán)重點(diǎn),以我們兩年的實(shí)踐經(jīng)驗(yàn),可以這么說柑土,如果沒有合適的支撐平臺或工具蜀肘,就不要使用微服務(wù)架構(gòu)。
身份認(rèn)證架構(gòu)的演變
開發(fā)過程中常見的交互
- 瀏覽器與Web應(yīng)用程序通信, B/S
- 瀏覽器與web API通信 B/S
- 基于瀏覽器的應(yīng)用程序與Web API通信(有時是獨(dú)立的稽屏,有時代表用戶) electron node-webkit H/S
- 桌面程序程序與Web API通信 C/S
- 后臺Service與web API通信 S/S
-
Web API與Web API通信(有時是獨(dú)立的扮宠,有時代表用戶)S/S
- Users 用戶
使用客戶端訪問微服務(wù)資源的人。 - Clients 客戶端
請求令牌的軟件狐榔,用于驗(yàn)證用戶(請求身份令牌)或訪問微服務(wù)的程序(請求訪問令牌)坛增。
如:Web應(yīng)用程序,本地移動或桌面應(yīng)用程序薄腻,SPA收捣,服務(wù)器進(jìn)程等。 - Resources(微服務(wù)) 資源
想要使用IdentityServer保護(hù)的資源 - 您的用戶的身份數(shù)據(jù)或API庵楷。
(每個資源都有1個唯一的名稱 - 客戶端使用這個名稱來指定他們想要訪問的資源罢艾。) - Identity Data 身份資源
用戶的標(biāo)識符,可以包含其他身份數(shù)據(jù)尽纽。 - Access Token 訪問令牌
訪問API資源的令牌咐蚯。包含有關(guān)客戶端和用戶的信息(如果存在)。API使用該信息來驗(yàn)證授權(quán)并判斷是否可訪問其數(shù)據(jù)弄贿。
附上:微軟Azure AspNetCore微服務(wù)實(shí)戰(zhàn)PPT