SpringCloud面試題總結(jié)

1.什么是Spring Cloud

這個(gè)可以從我們服務(wù)的一個(gè)演變過程來說起:單體->集群->soa->微服務(wù)渣窜,而微服務(wù)它只是一種架構(gòu)思想布讹,我們?yōu)榱藢?shí)現(xiàn)這種思想枢里,就需要技術(shù)落地账锹,而springcloud就應(yīng)運(yùn)而生雁比,他是一個(gè)用來治理微服務(wù)的框架淳蔼,單個(gè)服務(wù)的實(shí)現(xiàn)就要用到SpringBoot侧蘸。SpringCloud里面有幾個(gè)比較重要的組件 Eureka 注冊中心 、zuul網(wǎng)關(guān)鹉梨、config配置中心讳癌、feign服務(wù)與服務(wù)之間的調(diào)用、ribbon負(fù)載均衡

2.什么是微服務(wù)

微服務(wù)是一種架構(gòu)思想存皂,隨著單體項(xiàng)目的不斷更新迭代晌坤,包含的業(yè)務(wù)功能代碼越來越多,導(dǎo)致編譯部署困難等問題,因此以業(yè)務(wù)功能作為邊界將一個(gè)完整服務(wù)拆分成多個(gè)可以獨(dú)立開發(fā)運(yùn)維部署的子服務(wù)泡仗。

優(yōu)點(diǎn):
1.每個(gè)服務(wù)直接足夠內(nèi)聚埋虹,代碼容易理解
2.開發(fā)效率高,一個(gè)服務(wù)只做一件事娩怎,適合小團(tuán)隊(duì)開發(fā)
3.松耦合搔课,有功能意義的服務(wù)。
4.可以用不同語言開發(fā)截亦,面向接口編程爬泥。
5.易于第三方集成
6.微服務(wù)只是業(yè)務(wù)邏輯的代碼,不會和HTML,CSS或其他界面結(jié)合.
7.可以靈活搭配崩瓤,連接公共庫/連接獨(dú)立庫
缺點(diǎn):
1.分布式系統(tǒng)的責(zé)任性
2.多服務(wù)運(yùn)維難度加大袍啡。
3.系統(tǒng)部署依賴,服務(wù)間通信成本却桶,數(shù)據(jù)一致性境输,系統(tǒng)集成測試,性能監(jiān)控颖系。

3.服務(wù)注冊和發(fā)現(xiàn)

隨著我們服務(wù)的增多嗅剖,為了方便統(tǒng)一管理微服務(wù)的通信地址,就有了服務(wù)的注冊和發(fā)現(xiàn)嘁扼;
微服務(wù)在啟動的時(shí)候會向注冊中心提交自己的通信地址清單如:服務(wù)名,ip,端口信粮,在注冊中心會形成一個(gè)微服務(wù)的通信地址列表 --- 這叫服務(wù)注冊
微服務(wù)會定期的從注冊中心拉取一份微服務(wù)通信地址列表緩存到本地。一個(gè)微服務(wù)在向另一個(gè)微服務(wù)發(fā)起調(diào)用的時(shí)候會根據(jù)目標(biāo)服務(wù)的服務(wù)名找到其通信地址清單趁啸,然后基于HTTP協(xié)議向目標(biāo)服務(wù)發(fā)起請求。---這叫服務(wù)發(fā)現(xiàn)

4.SpringBoot和SpringCloud的區(qū)別

SpringBoot專注于快速方便的開發(fā)單個(gè)個(gè)體微服務(wù)不傅。SpringCloud關(guān)注的是服務(wù)與服務(wù)之間的一個(gè)協(xié)調(diào)旅掂,它將SpringBoot開發(fā)的一個(gè)個(gè)單體微服務(wù)整合并管理起來。
SpringBoot可以離開SpringCloud獨(dú)立使用開發(fā)項(xiàng)目访娶, 但是SpringCloud離不開SpringBoot 辞友,屬于依賴的關(guān)系.

5.Spring Cloud 和dubbo區(qū)別

服務(wù)調(diào)用方式 dubbo是RPC springcloud Rest Api
注冊中心,dubbo 是zookeeper springcloud是eureka,也可以是zookeeper
服務(wù)網(wǎng)關(guān),dubbo本身沒有實(shí)現(xiàn)震肮,只能通過其他第三方技術(shù)整合,springcloud有Zuul路由網(wǎng)關(guān)留拾,作為路由服務(wù)器戳晌,進(jìn)行消費(fèi)者的請求分發(fā),springcloud支持?jǐn)嗦菲鳎cgit完美集成配置文件支持版本控制痴柔,事物總線實(shí)現(xiàn)配置文件的更新與服務(wù)自動裝配等等一系列的微服務(wù)架構(gòu)要素沦偎。
模型定義:dubbo將一個(gè)接口定義為一個(gè)服務(wù),SpringCloud將一個(gè)應(yīng)用定義為一個(gè)服務(wù)

6.REST和RPC對比

1.RPC主要的缺陷是服務(wù)提供方和調(diào)用方式之間的依賴太強(qiáng),需要對每一個(gè)微服務(wù)進(jìn)行接口的定義豪嚎,并通過持續(xù)繼承發(fā)布搔驼,嚴(yán)格版本控制才不會出現(xiàn)沖突。
2.REST是輕量級的接口侈询,服務(wù)的提供和調(diào)用不存在代碼之間的耦合舌涨,只需要一個(gè)約定進(jìn)行規(guī)范。

說說Eureka的自我保護(hù)機(jī)制扔字?

當(dāng)一個(gè)服務(wù)未按時(shí)進(jìn)行心跳續(xù)約時(shí)囊嘉,在生產(chǎn)環(huán)境下,因?yàn)榫W(wǎng)絡(luò)延遲等原因革为,此時(shí)就把服務(wù)剔除列表并不妥當(dāng)扭粱,因?yàn)榉?wù)可能沒有宕機(jī)。 Eureka就會把當(dāng)前實(shí)例的注冊信息保護(hù)起來震檩,不予剔除琢蛤。生產(chǎn)環(huán)境下這很有效,保證了大多數(shù)服務(wù)依然可用抛虏。但是有可能會造成一些掛掉的服務(wù)被剔除有延遲博其。

Eureka和ZooKeeper的區(qū)別?

1嘉蕾、ZooKeeper中的節(jié)點(diǎn)服務(wù)掛了就要選舉贺奠,在選舉期間注冊服務(wù)癱瘓,雖然服務(wù)最終會恢復(fù)错忱,但是選舉期間不可用的儡率, 選舉就是該微服務(wù)做了集群,必須有一臺主其他的都是從以清。
2儿普、Eureka各個(gè)節(jié)點(diǎn)是平等關(guān)系,服務(wù)器掛了沒關(guān)系掷倔,只要有一臺Eureka就可以保證服務(wù)可用眉孩,數(shù)據(jù)都是最新的。 如果查詢到的數(shù)據(jù)并不是最新的勒葱,就是因?yàn)镋ureka的自我保護(hù)模式導(dǎo)致的浪汪。
3、Eureka本質(zhì)上是一個(gè)工程凛虽,而ZooKeeper只是一個(gè)進(jìn)程死遭。
4、Eureka可以很好的應(yīng)對因網(wǎng)絡(luò)故障導(dǎo)致部分節(jié)點(diǎn)失去聯(lián)系的情況凯旋,而不會像ZooKeeper 一樣使得整個(gè)注冊系統(tǒng)癱瘓呀潭。
5钉迷、ZooKeeper保證的是CP,Eureka保證的是AP

CAP解釋:
C:一致性Consistency (取舍:強(qiáng)一致性钠署、單調(diào)一致性糠聪、會話一致性、最終一致性谐鼎、弱一致性)
A:可用性 Availability
P:分區(qū)容錯性Partition tolerance

7.負(fù)載均衡的意義

通俗易懂的理解:
集群:是把一個(gè)的事情交給多個(gè)人去做舰蟆,假如要做1000個(gè)產(chǎn)品給一個(gè)人做要10天,叫10個(gè)人做就是一天该面;
負(fù)載均衡:用來控制集群夭苗,優(yōu)化資源使用,最大化吞吐量隔缀,最小化響應(yīng)時(shí)間并避免任何單一資源的過載题造,可以使多個(gè)組件達(dá)到負(fù)載平衡。
在SpringCloud里面可以使用ribbon來實(shí)現(xiàn)負(fù)載均衡(feign默認(rèn)集成了ribbon)猾瘸。

常見的幾種Ribbon的負(fù)載均衡策略

輪詢 :將所有的請求均勻分配
權(quán)重 :對性能較好的后端服務(wù)器設(shè)置較高的權(quán)重界赔,承擔(dān)更多的鏈接負(fù)載。
隨機(jī)Random:將請求隨機(jī)分配
hash:通過ip url等信息計(jì)算hash值牵触,相同的請求會請求到同一個(gè)后端服務(wù)器中

8.什么是Hystrix

在分布式系統(tǒng)淮悼,我們一定會依賴各種服務(wù),那么這些個(gè)服務(wù)一定會出現(xiàn)失敗的情況揽思,就會導(dǎo)致雪崩袜腥,Hystrix就是這樣一個(gè)保證服務(wù)健壯性的工具,防雪崩利器钉汗,它具有服務(wù)降級羹令,服務(wù)熔斷,服務(wù)隔離损痰,監(jiān)控等一些防止雪崩的技術(shù)福侈。
Hystrix有四種防雪崩方式:
服務(wù)降級:接口調(diào)用失敗就調(diào)用本地的方法返回一個(gè)空
服務(wù)熔斷:接口調(diào)用失敗就會進(jìn)入調(diào)用接口提前定義好的一個(gè)熔斷的方法,返回錯誤信息
服務(wù)隔離:隔離服務(wù)之間相互影響
服務(wù)監(jiān)控:在服務(wù)發(fā)生調(diào)用時(shí),會將每秒請求數(shù)卢未、成功請求數(shù)等運(yùn)行指標(biāo)記錄下來肪凛。

9.什么是服務(wù)熔斷和服務(wù)降級

服務(wù)熔斷:
熔斷機(jī)制是應(yīng)對雪崩效應(yīng)的一種微服務(wù)鏈路保護(hù)機(jī)制。
當(dāng)某個(gè)微服務(wù)不可用或者響應(yīng)時(shí)間太長時(shí)辽社,會進(jìn)行服務(wù)降級伟墙,進(jìn)而熔斷該節(jié)點(diǎn)微服務(wù)的調(diào)用,快速返回“錯誤”的響應(yīng)信息滴铅。當(dāng)檢測到該節(jié)點(diǎn)微服務(wù)調(diào)用響應(yīng)正常后恢復(fù)調(diào)用鏈路远荠。
在SpringCloud框架里熔斷機(jī)制通過Hystrix實(shí)現(xiàn),Hystrix會監(jiān)控微服務(wù)間調(diào)用的狀況失息,當(dāng)失敗的調(diào)用到一定閾值譬淳,缺省是5秒內(nèi)調(diào)用20次,如果失敗盹兢,就會啟動熔斷機(jī)制邻梆。
服務(wù)降級:
服務(wù)降級,一般是從整體負(fù)荷考慮绎秒。就是當(dāng)某個(gè)服務(wù)熔斷之后浦妄,服務(wù)器將不再被調(diào)用,此時(shí)客戶端可以自己準(zhǔn)備一個(gè)本地的fallback回調(diào)见芹,返回一個(gè)缺省值剂娄。

10.什么是服務(wù)雪崩效應(yīng)?

雪崩效應(yīng)是在大型互聯(lián)網(wǎng)項(xiàng)目中,當(dāng)某個(gè)服務(wù)發(fā)生宕機(jī)時(shí)玄呛,調(diào)用這個(gè)服務(wù)的其他服務(wù)也會發(fā)生宕機(jī)阅懦,大型項(xiàng)目的微服務(wù)之間的調(diào)用是互通的,這樣就會將服務(wù)的不可用逐步擴(kuò)大到各個(gè)其他服務(wù)中徘铝,從而使整個(gè)項(xiàng)目的服務(wù)宕機(jī)崩潰耳胎。

11.什么是feigin

feign是用來處理我們服務(wù)與服務(wù)之間調(diào)用的,它整合了ribbon惕它,具有負(fù)載均衡的能力怕午,同時(shí)也整合了Hystrix,具有熔斷的能力

12.Ribbon和Feign的區(qū)別

1.Ribbon都是調(diào)用其他服務(wù)的淹魄,但方式不同郁惜。
2.啟動類注解不同,Ribbon是@RibbonClient甲锡,feign的是@EnableFeignClients
3.服務(wù)指定的位置不同兆蕉,Ribbon是在@RibbonClient注解上聲明,F(xiàn)eign則是在定義抽象方法的接口中使用@FeignClient聲明搔体。
4.調(diào)用方式不同恨樟,Ribbon需要自己構(gòu)建http請求,模擬http請求然后使用RestTemplate發(fā)送給其他服務(wù)疚俱,步驟相當(dāng)繁瑣劝术。Feign需要將調(diào)用的方法定義成抽象方法即可。

13.什么是SpringCloud Bus

spring cloud bus 將分布式的節(jié)點(diǎn)用輕量的消息代理連接起來呆奕,它可以用于廣播配置文件的更改或者服務(wù)直接的通訊养晋,也可用于監(jiān)控。
如果修改了配置文件梁钾,發(fā)送一次請求绳泉,所有的客戶端便會重新讀取配置文件。

14.springcloud斷路器

當(dāng)一個(gè)服務(wù)調(diào)用另一個(gè)服務(wù)由于網(wǎng)絡(luò)原因或自身原因出現(xiàn)問題姆泻,調(diào)用者就會等待被調(diào)用者的響應(yīng) 當(dāng)更多的服務(wù)請求到這些資源導(dǎo)致更多的請求等待零酪,發(fā)生連鎖效應(yīng)(雪崩效應(yīng))冒嫡。底層服務(wù)出現(xiàn)故障可能導(dǎo)致用戶級聯(lián)故障。當(dāng)調(diào)用特定服務(wù)達(dá)到一定閾值時(shí)(Hystrix中的默認(rèn)值為5秒內(nèi)的20次故障)四苇,電路打開孝凌,不進(jìn)行通話。在開路的情況下月腋,可以使用備用的方法進(jìn)行處理蟀架。

斷路器有完全打開狀態(tài):一段時(shí)間內(nèi) 達(dá)到一定的次數(shù)無法調(diào)用 并且多次監(jiān)測沒有恢復(fù)的跡象 斷路器完全打開 那么下次請求就不會請求到該服務(wù)
半開:短時(shí)間內(nèi) 有恢復(fù)跡象 斷路器會將部分請求發(fā)給該服務(wù),正常調(diào)用時(shí) 斷路器關(guān)閉
關(guān)閉:當(dāng)服務(wù)一直處于正常狀態(tài) 能正常調(diào)用

15.什么是SpringCloud Config

在分布式系統(tǒng)中榆骚,由于服務(wù)數(shù)量巨多片拍,為了方便服務(wù)配置文件統(tǒng)一管理,實(shí)時(shí)更新妓肢,所以需要分布式配置中心組件捌省。在Spring Cloud中,有分布式配置中心組件spring cloud config 职恳,它支持配置服務(wù)放在配置服務(wù)的內(nèi)存中(即本地)所禀,也支持放在遠(yuǎn)程Git倉庫中。在spring cloud config 組件中放钦,分兩個(gè)角色色徘,一是config server,二是config client操禀。

16.什么是zuul?

zuul是SpringCloud提供的路由方案褂策,他會根據(jù)請求的路徑不同,網(wǎng)關(guān)會定位到指定的微服務(wù)颓屑,并代理請求到不同的微服務(wù)接口斤寂,他對外隱蔽了微服務(wù)的真正接口地址。

zuul的工作流程?

在Spring Cloud Netflix中揪惦,Zuul巧妙的整合了Eureka來實(shí)現(xiàn)面向服務(wù)的路由遍搞。
實(shí)際上,API網(wǎng)關(guān)將自己注冊到Eureka服務(wù)注冊中心上器腋,也會從注冊中心獲取所有服務(wù)以及它們的實(shí)例清單溪猿。在Eureka的幫助下,API網(wǎng)關(guān)已經(jīng)維護(hù)了系統(tǒng)中所有serviceId與實(shí)例地址的映射關(guān)系纫塌。當(dāng)有外部請求到達(dá)API網(wǎng)關(guān)的時(shí)候诊县,根據(jù)請求的URL找到最匹配的path,API網(wǎng)關(guān)就可以知道要將該請求"路由"到哪個(gè)具體的serviceId上去措左。 最終通過Ribbon的負(fù)載均衡策略實(shí)現(xiàn)請求的路由依痊。

17.什么是SpringCloud Gateway
Spring Cloud Gateway是Spring Cloud官方推出的第二代網(wǎng)關(guān)框架,取代Zuul網(wǎng)關(guān)怎披。網(wǎng)關(guān)作為流量的胸嘁,在微服務(wù)系統(tǒng)中有著非常作用瓶摆,網(wǎng)關(guān)常見的功能有路由轉(zhuǎn)發(fā)、權(quán)限校驗(yàn)缴渊、限流控制等作用赏壹。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市衔沼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌昔瞧,老刑警劉巖指蚁,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異自晰,居然都是意外死亡凝化,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門酬荞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搓劫,“玉大人,你說我怎么就攤上這事混巧∏瓜颍” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵咧党,是天一觀的道長秘蛔。 經(jīng)常有香客問我,道長傍衡,這世上最難降的妖魔是什么深员? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮蛙埂,結(jié)果婚禮上倦畅,老公的妹妹穿的比我還像新娘。我一直安慰自己绣的,他們只是感情好叠赐,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著被辑,像睡著了一般燎悍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盼理,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天谈山,我揣著相機(jī)與錄音,去河邊找鬼宏怔。 笑死奏路,一個(gè)胖子當(dāng)著我的面吹牛畴椰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鸽粉,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼斜脂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了触机?” 一聲冷哼從身側(cè)響起帚戳,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎儡首,沒想到半個(gè)月后片任,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蔬胯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年对供,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氛濒。...
    茶點(diǎn)故事閱讀 38,650評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡产场,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出舞竿,到底是詐尸還是另有隱情京景,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布炬灭,位于F島的核電站醋粟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏重归。R本人自食惡果不足惜米愿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鼻吮。 院中可真熱鬧育苟,春花似錦、人聲如沸椎木。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽香椎。三九已至漱竖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間畜伐,已是汗流浹背馍惹。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人万矾。 一個(gè)月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓悼吱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親良狈。 傳聞我的和親對象是個(gè)殘疾皇子后添,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容