?對(duì)于目前來說牵现,微服務(wù)已經(jīng)是程序員必會(huì)的技能之一了铐懊。Spring Cloud 作為一個(gè)優(yōu)質(zhì)的微服務(wù)框架,已經(jīng)被很多公司使用瞎疼。以下小編給大家整理35道Spring Cloud 的知識(shí)點(diǎn)科乎,或者說是面試題都不沖突。后續(xù)還會(huì)繼續(xù)更新?? ?
1.什么是SpringCloud?
Spring Cloud為開發(fā)人員提供了工具贼急,以快速構(gòu)建分布式系統(tǒng)中的一些常見模式(例如茅茂,配置管理,服務(wù)發(fā)現(xiàn)太抓,斷路器空闲,智能路由,微代理走敌,控制總線碴倾,一次性令牌,全局鎖,領(lǐng)導(dǎo)選舉跌榔,分布式會(huì)話异雁,群集狀態(tài))。它們可以在任何分布式環(huán)境中正常工作僧须,包括開發(fā)人員自己的筆記本電腦纲刀,裸機(jī)數(shù)據(jù)中心以及Cloud Foundry等托管平臺(tái)。
2.什么是微服務(wù)担平?
所謂的微服務(wù)是SOA架構(gòu)下的最終產(chǎn)物示绊,該架構(gòu)的設(shè)計(jì)目標(biāo)是為了肢解業(yè)務(wù),使得服務(wù)能夠獨(dú)立運(yùn)行暂论。微服務(wù)設(shè)計(jì)原則:
1面褐、各司其職 。
2空另、服務(wù)高可用和可擴(kuò)展性盆耽。
3.SpringCloud有哪些特征?
Spring Cloud專注于為典型的用例和可擴(kuò)展性機(jī)制(包括其他用例)提供良好的開箱即用體驗(yàn)。
分布式/版本化配置
服務(wù)注冊(cè)和發(fā)現(xiàn)
路由
服務(wù)到服務(wù)的調(diào)用
負(fù)載均衡
斷路器
全局鎖
領(lǐng)導(dǎo)選舉和集群狀態(tài)
分布式消息傳遞
4.SpringCloud核心組件?
Eureka : 注冊(cè)中心
Ribbon :客服端負(fù)載均衡
Hystrix : 服務(wù)容錯(cuò)處理
Feign: 聲明式REST客戶端
Zuul : 服務(wù)網(wǎng)關(guān)
Config : 分布式配置
5.SpringCloud基于什么協(xié)議扼菠?
HTTP
6.SpringCloud和Dubbo區(qū)別?
7.Eureka是什么?
云端服務(wù)發(fā)現(xiàn)坝咐,一個(gè)基于 REST 的服務(wù)循榆,用于定位服務(wù),以實(shí)現(xiàn)云端中間層服務(wù)發(fā)現(xiàn)和故障轉(zhuǎn)移墨坚。
8.服務(wù)治理的基礎(chǔ)角色秧饮?
服務(wù)注冊(cè)中心:提供服務(wù)注冊(cè)與發(fā)現(xiàn)的能力。
服務(wù)提供者:提供服務(wù)的應(yīng)用泽篮,會(huì)把自己提供的服務(wù)注冊(cè)到注冊(cè)中心盗尸。
服務(wù)消費(fèi)者:服務(wù)的消費(fèi)者,從注冊(cè)中心獲取服務(wù)列表帽撑。
9.什么是服務(wù)續(xù)約泼各?
在注冊(cè)完服務(wù)以后,服務(wù)提供者會(huì)維護(hù)一個(gè)心跳來向注冊(cè)中心證明自己還活著亏拉,以此防止被“剔除服務(wù)”扣蜻。
10.什么是服務(wù)下線?
當(dāng)服務(wù)實(shí)例進(jìn)行正常關(guān)閉時(shí)及塘,會(huì)發(fā)送一個(gè)REST請(qǐng)求(我要下線了)給注冊(cè)中心莽使,收到請(qǐng)求后,將該服務(wù)狀態(tài)設(shè)置下線(DOWN)笙僚,并把這事件傳播出去芳肌。
11.什么是失效剔除?
當(dāng)服務(wù)非正常下線時(shí),可能服務(wù)注冊(cè)中心沒有收到下線請(qǐng)求亿笤,注冊(cè)中心會(huì)創(chuàng)建一個(gè)定時(shí)任務(wù)(默認(rèn)60s)將沒有在固定時(shí)間(默認(rèn)90s)內(nèi)續(xù)約的服務(wù)剔除掉翎迁。
12.什么是自我保護(hù)機(jī)制?
在運(yùn)行期間责嚷,注冊(cè)中心會(huì)統(tǒng)計(jì)心跳失敗比例在15分鐘之內(nèi)是否低于85%,如果低于的情況鸳兽,注冊(cè)中心會(huì)將當(dāng)前注冊(cè)實(shí)例信息保護(hù)起來,不再刪除這些實(shí)例信息罕拂,當(dāng)網(wǎng)絡(luò)恢復(fù)后揍异,退出自我保護(hù)機(jī)制。
自我保護(hù)機(jī)制讓服務(wù)集群更穩(wěn)定爆班、健壯衷掷。
13.Ribbon是什么?
提供云端負(fù)載均衡,有多種負(fù)載均衡策略可供選擇柿菩,可配合服務(wù)發(fā)現(xiàn)和斷路器使用戚嗅。
14.Ribbon負(fù)載均衡的注解是?
@LoadBalanced
15.Ribbon負(fù)載均衡策略有哪些?
RandomRule : 隨機(jī)枢舶。
RoundRobinRule : 輪詢懦胞。
RetryRule : 重試。
WeightedResponseTimeRule : 權(quán)重凉泄。
ClientConfigEnabledRoundRobinRule : 一般不用躏尉,通過繼承該策略,默認(rèn)的choose就實(shí)現(xiàn)了線性輪詢機(jī)制后众≌兔樱可以基于它來做擴(kuò)展。
BestAvailableRule : 通過便利負(fù)載均衡器中維護(hù)的所有服務(wù)實(shí)例蒂誉,會(huì)過濾到故障的教藻,并選擇并發(fā)請(qǐng)求最小的一個(gè)。
PredicateBasedRule : 先過濾清單右锨,再輪詢括堤。
AvailabilityFilteringRule :繼承了父類的先過濾清單,再輪詢陡蝇。調(diào)整了算法痊臭。
ZoneAvoidanceRule : 該類也是PredicateBasedRule的子類,它可以組合過濾條件登夫。以ZoneAvoidancePredicate為主過濾條件广匙,以AvailabilityPredicate為次過濾條件。
16.什么是服務(wù)熔斷恼策?
服務(wù)熔斷的作用類似于我們家用的保險(xiǎn)絲鸦致,當(dāng)某服務(wù)出現(xiàn)不可用或響應(yīng)超時(shí)的情況時(shí)潮剪,為了防止整個(gè)系統(tǒng)出現(xiàn)雪崩,暫時(shí)停止對(duì)該服務(wù)的調(diào)用分唾。
17.什么是服務(wù)降級(jí)抗碰?
服務(wù)降級(jí)是當(dāng)服務(wù)器壓力劇增的情況下,根據(jù)當(dāng)前業(yè)務(wù)情況及流量對(duì)一些服務(wù)和頁(yè)面有策略的降級(jí)绽乔,以此釋放服務(wù)器資源以保證核心任務(wù)的正常運(yùn)行弧蝇。
18.什么是Hystrix?
熔斷器,容錯(cuò)管理工具折砸,旨在通過熔斷機(jī)制控制服務(wù)和第三方庫(kù)的節(jié)點(diǎn),從而對(duì)延遲和故障提供更強(qiáng)大的容錯(cuò)能力看疗。
19.斷路器Hystrix的有哪些功能?
通過第三方客戶端訪問依賴服務(wù)出現(xiàn)高延遲或者失敗時(shí),為系統(tǒng)提供保護(hù)和控制 睦授。
在復(fù)雜的分布式系統(tǒng)中防止級(jí)聯(lián)失敗(服務(wù)雪崩效應(yīng)) 两芳。
快速失敗 (Failfast) 同時(shí)能快速恢復(fù)。
提供失敗回滾 (Fallback) 和優(yōu)雅的服務(wù)降級(jí)機(jī)制去枷。
提供近實(shí)時(shí)的監(jiān)控怖辆、 報(bào)警和運(yùn)維控制手段。
20.Hystrix將遠(yuǎn)程調(diào)用封裝到删顶?
HystrixCommand 或者 HystrixObservableCommand對(duì)象中竖螃。
21.啟動(dòng)熔斷降級(jí)服務(wù)的注解?
@EnableHystrix
22.什么是Feign?
Feign是一種聲明式逗余、模板化的HTTP客戶端斑鼻。
23.Feign優(yōu)點(diǎn)?
1.feign采用的是基于接口的注解猎荠。2.feign整合了ribbon,具有負(fù)載均衡的能力蜀备。3.整合了Hystrix关摇,具有熔斷的能力。
24.什么是Config?
配置管理工具包碾阁,讓你可以把配置放到遠(yuǎn)程服務(wù)器输虱,集中化管理集群配置,目前支持本地存儲(chǔ)脂凶、Git以及Subversion宪睹。
25.Config組件中的兩個(gè)角色?
Config Server : 配置中心服務(wù)端。
Config Client : 配置中心客戶端蚕钦。
26.什么是Zuul?
Zuul 是在云平臺(tái)上提供動(dòng)態(tài)路由,監(jiān)控,彈性,安全等邊緣服務(wù)的框架亭病。Zuul 相當(dāng)于是設(shè)備和 Netflix 流應(yīng)用的 Web 網(wǎng)站后端所有請(qǐng)求的前門。
27.使用Zuul的優(yōu)點(diǎn)?
方便監(jiān)控嘶居∽锾可以在微服務(wù)網(wǎng)管手機(jī)監(jiān)控?cái)?shù)據(jù)并將其推送到外部系統(tǒng)進(jìn)行分析。
方便認(rèn)證≌可在網(wǎng)關(guān)進(jìn)行統(tǒng)一認(rèn)證菠齿,然后在講請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)。
隱藏架構(gòu)實(shí)現(xiàn)細(xì)節(jié)坐昙,提供統(tǒng)一的入口給客戶端請(qǐng)求绳匀,減少了客戶端和每個(gè)微服務(wù)的交互次數(shù)。
可以統(tǒng)一處理切面任務(wù)炸客,避免每個(gè)微服務(wù)自己開發(fā)疾棵,提升效率。
高可用高伸縮性的服務(wù)嚷量,避免單點(diǎn)失效陋桂。
28.Zuul的核心是?
過濾器蝶溶。
29.Zuul有幾種過濾器類型嗜历?分別是?
4種抖所。
pre : 可以在請(qǐng)求被路由之前調(diào)用梨州。
適用于身份認(rèn)證的場(chǎng)景,認(rèn)證通過后再繼續(xù)執(zhí)行下面的流程田轧。
route : 在路由請(qǐng)求時(shí)被調(diào)用暴匠。
適用于灰度發(fā)布場(chǎng)景,在將要路由的時(shí)候可以做一些自定義的邏輯傻粘。
post :在 route 和 error 過濾器之后被調(diào)用每窖。
這種過濾器將請(qǐng)求路由到達(dá)具體的服務(wù)之后執(zhí)行。適用于需要添加響應(yīng)頭弦悉,記錄響應(yīng)日志等應(yīng)用場(chǎng)景窒典。
error : 處理請(qǐng)求時(shí)發(fā)生錯(cuò)誤時(shí)被調(diào)用。
在執(zhí)行過程中發(fā)送錯(cuò)誤時(shí)會(huì)進(jìn)入 error 過濾器稽莉,可以用來統(tǒng)一記錄錯(cuò)誤信息瀑志。
30.什么是Sleuth?
日志收集工具包,封裝了Dapper和log-based追蹤以及Zipkin和HTrace操作污秆,為SpringCloud應(yīng)用實(shí)現(xiàn)了一種分布式追蹤解決方案劈猪。
31.Sleuth幫助我們做了哪些工作?
可以方便的了解到每個(gè)采樣的請(qǐng)求耗時(shí)良拼,分析出哪些服務(wù)調(diào)用比較耗時(shí)战得。
對(duì)于程序未捕捉的異常,可以在集成Zipkin服務(wù)頁(yè)面上看到将饺。
識(shí)別調(diào)用比較頻繁的服務(wù)贡避,從而進(jìn)行優(yōu)化痛黎。
32.什么是Bus?
事件、消息總線刮吧,用于在集群(例如湖饱,配置變化事件)中傳播狀態(tài)變化,可與Spring Cloud Config聯(lián)合實(shí)現(xiàn)熱部署杀捻。
**33.eureka比zookeeper的優(yōu)勢(shì)在井厌?****
A:高可用 C:一致性,P:分區(qū)容錯(cuò)性
Zookeeper保證了CP致讥,Eureka保證了AP仅仆。
Eureka可以很好的應(yīng)對(duì)因網(wǎng)絡(luò)故障導(dǎo)致部分節(jié)點(diǎn)失去聯(lián)系的情況,而不會(huì)像Zookeeper那樣使整個(gè)微服務(wù)癱瘓垢袱。
34.什么是Stream?
數(shù)據(jù)流操作開發(fā)包墓拜,封裝了與Redis,Rabbit、Kafka等發(fā)送接收消息请契。
35.你還知道哪些微服務(wù)框架咳榜?
Dubbo Motan Tars gRPC Thrift
參考:
《Spring Cloud微服務(wù)實(shí)戰(zhàn)》
《Spring Cloud微服務(wù)全棧技術(shù)與案例解析》
《Spring Cloud微服務(wù)架構(gòu)開發(fā)實(shí)戰(zhàn)》