摘要:授權(quán)框架使第三方應(yīng)用程序來(lái)獲取對(duì)服務(wù)的有限訪問(wèn)機(jī)會(huì)。無(wú)論是通過(guò)編排資源所有者和服務(wù)之間的交互批準(zhǔn)的資源所有者,或通過(guò)允許第三方應(yīng)用程序來(lái)獲取自己的訪問(wèn)權(quán)限。
SpringCloud打造微服務(wù)平臺(tái)--概覽 簡(jiǎn)述 SpringCloud是什么 Spring Boot和SpringCloud是什么關(guān)系
Spring Boot是Spring的一套快速WEB開發(fā)的腳手架,可建立獨(dú)立的Spring應(yīng)用程序,無(wú)代碼生成和xml配置、自動(dòng)配置Spring、內(nèi)嵌Servlet容器。Spring Boot使用了默認(rèn)大于配置的理念,很多集成方案已經(jīng)幫你選擇好了,能不配置就不配置。可以基于Spring Boot快速開發(fā)單個(gè)微服務(wù)。
Spring Cloud是一個(gè)基于Spring Boot實(shí)現(xiàn)的云應(yīng)用開發(fā)工具。Spring Cloud很大的一部分是基于Spring Boot來(lái)實(shí)現(xiàn)。Spring Boot專注于快速、方便集成的單個(gè)個(gè)體,Spring Cloud是關(guān)注全局的服務(wù)治理框架;
spring -> spring booot -> spring cloud 這樣的關(guān)系。
官網(wǎng)
SpringCloud架構(gòu) 組件概覽 組件簡(jiǎn)介注冊(cè)中心:
spring-cloud-eureka
spring-cloud-zookeeper
spring-cloud-consul
配置中心:
spring-cloud-config
服務(wù)容錯(cuò):
spring-cloud-netflix-hystrix
API網(wǎng)關(guān):
spring-cloud-gateway
spring-cloud-netfilx-zuul
服務(wù)調(diào)用:
spring-cloud-openfeign
spring-cloud-netflix-ribbon
消息隊(duì)列:
spring-cloud-stream --> rabbitmq、kafka
spring-cloud-bus
鏈路跟蹤:
spring-cloud-sletuh --> zipkin server
任務(wù)調(diào)度:
spring-cloud-task
安全認(rèn)證:
spring-cloud-security
spring-cloud-vault
測(cè)試管理:
spring-cloud-contract
組件介紹 注冊(cè)中心 Why?微服務(wù)架構(gòu)中,應(yīng)用被拆分眾多的小應(yīng)用服務(wù),應(yīng)該規(guī)模變大,服務(wù)實(shí)例的數(shù)量是動(dòng)態(tài)變化,為了為客戶端能夠訪問(wèn)到服務(wù),就必須要有一種服務(wù)的發(fā)現(xiàn)機(jī)制,完成服務(wù)的登記注冊(cè)、監(jiān)控管理、服務(wù)發(fā)現(xiàn),服務(wù)間的調(diào)用管理等功能。
What?有兩種主要的服務(wù)發(fā)現(xiàn)方式:客戶端發(fā)現(xiàn)(client-side discovery)和服務(wù)器端發(fā)現(xiàn)(server-side discovery)。Eureka是客戶端發(fā)現(xiàn)模式。
Spring Cloud Eureka由兩個(gè)組件組成:Eureka服務(wù)器和Eureka客戶端。
Eureka Client連接到Eureka Server,并維持心跳連接。這樣系統(tǒng)的維護(hù)人員就可以通過(guò) Eureka Server 來(lái)監(jiān)控系統(tǒng)中各個(gè)微服務(wù)是否正常運(yùn)行?;镜慕Y(jié)構(gòu)如下圖。
另外Eurekag還提供了web的管理界面,運(yùn)維人員可以查看各微服務(wù)的情況
配置中心 Why?在微服務(wù)架構(gòu)中,每個(gè)微服務(wù)節(jié)點(diǎn)都有相關(guān)的配置數(shù)據(jù)項(xiàng)。當(dāng)節(jié)點(diǎn)眾多,維護(hù)就變得非常困難,因此需要建立一個(gè)中心配置服務(wù),所有配置都放在配置中心統(tǒng)一管理。
What?Spring Cloud Config由兩個(gè)組件組成:Config服務(wù)器和Config客戶端。應(yīng)用啟動(dòng)時(shí),將相關(guān)配置項(xiàng)拉取到本地緩存使用,配置更新時(shí)也可由配置中心主動(dòng)推送到應(yīng)用節(jié)點(diǎn)(后續(xù)會(huì)詳細(xì)講解)。他支持git、svn、file方式存儲(chǔ)配置。
消息中心 Why?消息總線是為了實(shí)現(xiàn)企業(yè)應(yīng)該數(shù)據(jù)共享和集成,提供一種基于企業(yè)服務(wù)總線的信息共享交換平臺(tái)。具有松散耦合的特點(diǎn),實(shí)現(xiàn)了"集中式管理、分布式運(yùn)行"的工作模式。
在微服務(wù)架構(gòu)中,服務(wù)眾多,各服務(wù)又有很多的調(diào)用和被調(diào)用關(guān)系。消息總線就是為了解決在某些非同步場(chǎng)景下,服務(wù)間強(qiáng)解藕、數(shù)據(jù)交換量巨大的解決方案。
What?Spring Cloud Bus 將分布式的節(jié)點(diǎn)用輕量的消息代理連接起來(lái)。它可以用于廣播配置文件的更改或者服務(wù)之間的異步通訊,也可以用于監(jiān)控??梢哉f(shuō),消息總線是微服務(wù)應(yīng)用擴(kuò)展“道路”上的推進(jìn)器,而且也把它用來(lái)作應(yīng)用間相互通信的消息管道。
服務(wù)網(wǎng)關(guān) Why?在微服務(wù)架構(gòu)中,后端服務(wù)往往不直接開放給調(diào)用端,而是通過(guò)一個(gè)API網(wǎng)關(guān)根據(jù)請(qǐng)求的url,路由到相應(yīng)的服務(wù)。當(dāng)添加API網(wǎng)關(guān)后,在第三方調(diào)用端和服務(wù)提供方之間就創(chuàng)建了一面墻,這面墻直接與調(diào)用方通信進(jìn)行權(quán)限控制、限流、排隊(duì),過(guò)載保護(hù)、請(qǐng)求合并、裁剪、黑白名單、異常用戶過(guò)濾攔截等等。
What?Spring Cloud Gateway是一個(gè)構(gòu)建在Spring 生態(tài)之上的高性能、非阻塞API網(wǎng)關(guān),包括:Spring 5,Spring Boot 2和Project Reactor。
服務(wù)調(diào)用 Why?負(fù)載均衡可分為服務(wù)端負(fù)載均衡和客戶端負(fù)載均衡,服務(wù)端負(fù)載均衡完全由服務(wù)器處理,客戶端不需要做任何事情。而客戶端負(fù)載均衡技術(shù),客戶端需要維護(hù)一組服務(wù)器引用,每次客戶端向服務(wù)端發(fā)請(qǐng)求的時(shí)候,會(huì)根據(jù)算法主動(dòng)選中一個(gè)服務(wù)節(jié)點(diǎn)。常用的負(fù)載均衡算法有:隨機(jī)、輪詢、權(quán)重、負(fù)載、Hash等。
What?Spring Cloud Ribbon是一個(gè)基于客戶端的負(fù)載均衡器,F(xiàn)eign內(nèi)部也已經(jīng)使用了Ribbon。
Spring Cloud Feign是一個(gè)聲明式的Web Service客戶端,它的目的就是讓W(xué)eb Service調(diào)用更加簡(jiǎn)單。Feign提供了HTTP請(qǐng)求的模板,通過(guò)編寫簡(jiǎn)單的接口和插入注解,就可以定義好HTTP請(qǐng)求的參數(shù)、格式、地址等信息。而Feign則會(huì)完全代理HTTP請(qǐng)求,我們只需要像調(diào)用方法一樣調(diào)用它就可以完成服務(wù)請(qǐng)求及相關(guān)處理。
Feign整合了Ribbon和Hystrix(見下節(jié)),可以讓我們不再需要顯式地使用這兩個(gè)組件,大大簡(jiǎn)化了服務(wù)調(diào)用。
服務(wù)容錯(cuò) Why?在分布式架構(gòu)中,一個(gè)應(yīng)用依賴多個(gè)服務(wù)是非常常見的,如果其中一個(gè)依賴由于延遲過(guò)高發(fā)生阻塞,調(diào)用該依賴服務(wù)的線程就會(huì)阻塞,如果相關(guān)業(yè)務(wù)的QPS較高,就可能產(chǎn)生大量阻塞,從而導(dǎo)致該應(yīng)用/服務(wù)由于服務(wù)器資源被耗盡而拖垮。
另外,故障也會(huì)在應(yīng)用之間傳遞,如果故障服務(wù)的上游依賴較多,可能會(huì)引起服務(wù)的雪崩效應(yīng)。就跟數(shù)據(jù)癱瘓,會(huì)引起依賴該數(shù)據(jù)庫(kù)的應(yīng)用癱瘓是一樣的道理。
所以,斷路器就是用來(lái)支持服務(wù)隔離、熔斷等操作的工具。斷路器會(huì)以隔離的方式來(lái)處理服務(wù)請(qǐng)求,當(dāng)斷路數(shù)量達(dá)到閾值,就會(huì)觸發(fā)熔斷(直接返回失敗)。
What?Spring Cloud Hystrix微服務(wù)架構(gòu)中提供服務(wù)隔離、熔斷、降級(jí)機(jī)制的工具/框架。通過(guò)以上手段來(lái)降低服務(wù)故障帶來(lái)的關(guān)聯(lián)影響,以提高系統(tǒng)的整體可用性。
斷路器與各服務(wù)的關(guān)系
斷路器的原理
授權(quán)與認(rèn)證 Why?在 Web 應(yīng)用開發(fā)中,安全一直是非常重要的一個(gè)方面。安全雖然屬于應(yīng)用的非功能性需求,但是應(yīng)該在應(yīng)用開發(fā)的初期就考慮進(jìn)來(lái)。如果在應(yīng)用開發(fā)的后期才考慮安全的問(wèn)題,就可能陷入一個(gè)兩難的境地:一方面,應(yīng)用存在嚴(yán)重的安全漏洞,無(wú)法滿足用戶的要求,并可能造成用戶的隱私數(shù)據(jù)被攻擊者竊取;另一方面,應(yīng)用的基本架構(gòu)已經(jīng)確定,要修復(fù)安全漏洞,可能需要對(duì)系統(tǒng)的架構(gòu)做出比較重大的調(diào)整,因而需要更多的開發(fā)時(shí)間,影響應(yīng)用的發(fā)布進(jìn)程。因此,從應(yīng)用開發(fā)的第一天就應(yīng)該把安全相關(guān)的因素考慮進(jìn)來(lái),并在整個(gè)應(yīng)用的開發(fā)過(guò)程中。
What?Spring Cloud Security是基于Spring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問(wèn)控制解決方案的安全框架。它提供全面的安全性解決方案,同時(shí)在Web請(qǐng)求級(jí)和方法調(diào)用級(jí)處理身份確認(rèn)和授權(quán)。他是靈活和強(qiáng)大的身份驗(yàn)證和訪問(wèn)控制框架,以確保基于Spring的Java Web應(yīng)用程序的安全。
OAuth2.0授權(quán)框架使第三方應(yīng)用程序來(lái)獲取對(duì)HTTP服務(wù)的有限訪問(wèn)機(jī)會(huì)。無(wú)論是通過(guò)編排資源所有者和HTTP服務(wù)之間的交互批準(zhǔn)的資源所有者,或通過(guò)允許第三方應(yīng)用程序來(lái)獲取自己的訪問(wèn)權(quán)限。
例如某網(wǎng)站/app以微信、qq登陸方式就是OAuth2方式。
Spring Security Oauth2是建立在spring security的基礎(chǔ)之上,符合OAuth2標(biāo)準(zhǔn)的開源實(shí)現(xiàn)。
OAuth2定義了4種模式,共有4個(gè)角色,具體內(nèi)容可以查看另外的介紹
Spring Security OAuth2簡(jiǎn)介與實(shí)施
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/11906.html
摘要:它就是史上最簡(jiǎn)單的教程第三篇服務(wù)消費(fèi)者后端掘金上一篇文章,講述了通過(guò)去消費(fèi)服務(wù),這篇文章主要講述通過(guò)去消費(fèi)服務(wù)。概覽和架構(gòu)設(shè)計(jì)掘金技術(shù)征文后端掘金是基于的一整套實(shí)現(xiàn)微服務(wù)的框架。 Spring Boot 配置文件 – 在坑中實(shí)踐 - 后端 - 掘金作者:泥瓦匠鏈接:Spring Boot 配置文件 – 在坑中實(shí)踐版權(quán)歸作者所有,轉(zhuǎn)載請(qǐng)注明出處本文提綱一、自動(dòng)配置二、自定義屬性三、ran...
摘要:接下來(lái)繼續(xù)介紹三種架構(gòu)模式,分別是查詢分離模式微服務(wù)模式多級(jí)緩存模式。分布式應(yīng)用程序可以基于實(shí)現(xiàn)諸如數(shù)據(jù)發(fā)布訂閱負(fù)載均衡命名服務(wù)分布式協(xié)調(diào)通知集群管理選舉分布式鎖和分布式隊(duì)列等功能。 SpringCloud 分布式配置 SpringCloud 分布式配置 史上最簡(jiǎn)單的 SpringCloud 教程 | 第九篇: 服務(wù)鏈路追蹤 (Spring Cloud Sleuth) 史上最簡(jiǎn)單的 S...
摘要:使用進(jìn)行項(xiàng)目的構(gòu)建管理,采用進(jìn)行持續(xù)集成,主要定位于大型分布式企業(yè)系統(tǒng)或大型分布式互聯(lián)網(wǎng)產(chǎn)品的架構(gòu)。使用防腳本注入跨站點(diǎn)腳本編制偽造請(qǐng)求攻擊等常見的攻擊手段。 ??鴻鵠云架構(gòu)系統(tǒng)管理平臺(tái)是一個(gè)大型企業(yè)、分布式、微服務(wù)、云架構(gòu)的JavaEE體系快速研發(fā)平臺(tái),基于模塊化、微服務(wù)化、原子化、熱部署...
閱讀 2862·2021-09-24 10:34
閱讀 1945·2021-09-22 10:02
閱讀 2340·2021-09-09 09:33
閱讀 1520·2021-08-13 15:02
閱讀 3352·2020-12-03 17:10
閱讀 1252·2019-08-30 15:44
閱讀 2204·2019-08-30 12:58
閱讀 3295·2019-08-26 13:40