【Java架構(gòu)師面試網(wǎng)】收集整理了幾乎整個(gè)架構(gòu)師學(xué)習(xí)途中會(huì)遇到的面試題磨镶,希望大家都能早日圓自己的架構(gòu)師夢~
公眾號:Java架構(gòu)師面試網(wǎng)溃蔫,關(guān)注回復(fù)“資料”即可領(lǐng)取精美整理的面試資料一份哦~
1、微服務(wù)的優(yōu)缺點(diǎn)分別是什么?說下你在項(xiàng)目開發(fā)中碰到的坑琳猫。
優(yōu)點(diǎn):
1) 每一個(gè)服務(wù)足夠內(nèi)聚,代碼容易理解
2) 開發(fā)效率提高,一個(gè)服務(wù)只做一件事
3) 微服務(wù)能夠被小團(tuán)隊(duì)單獨(dú)開發(fā)
4) 微服務(wù)是松耦合的,是有功能意義的服務(wù)
5) 可以用不同的語言開發(fā),面向接口編程
6) 易于與第三方集成
7) 微服務(wù)只是業(yè)務(wù)邏輯的代碼,不會(huì)和HTML,CSS或者其他界面組合
8) 開發(fā)中,兩種開發(fā)模式
9) 前后端分離
10) 全棧工程師
11) 可以靈活搭配,連接公共庫/連接獨(dú)立庫
缺點(diǎn):
1) 分布式系統(tǒng)的負(fù)責(zé)性
2) 多服務(wù)運(yùn)維難度,隨著服務(wù)的增加,運(yùn)維的壓力也在增大
3) 系統(tǒng)部署依賴
4) 服務(wù)間通信成本
5) 數(shù)據(jù)一致性
6) 系統(tǒng)集成測試
7) 性能監(jiān)控
2伟叛、什么是Spring Cloud?
Spring cloud流應(yīng)用程序啟動(dòng)器是基于Spring Boot的Spring集成應(yīng)用程序沸移,提供與外部系統(tǒng)的集成痪伦。Spring cloud Task,一個(gè)生命周期短暫的微服務(wù)框架雹锣,用于快速構(gòu)建執(zhí)行有限數(shù)據(jù)處理的應(yīng)用程序网沾。
3、SpringBoot和SpringCloud
1) SpringBoot專注于快速方便的開發(fā)單個(gè)個(gè)體的微服務(wù)
2) SpringCloud是關(guān)注全局的微服務(wù)協(xié)調(diào)整理治理框架,整合并管理各個(gè)微服務(wù),為各個(gè)微服務(wù)之間提供,配置管理,服務(wù)發(fā)現(xiàn),斷路器,路由,事件總線等集成服務(wù)
3) SpringBoot不依賴于SpringCloud,SpringCloud依賴于SpringBoot,屬于依賴關(guān)系
4) SpringBoot專注于快速,方便的開發(fā)單個(gè)的微服務(wù)個(gè)體,SpringCloud關(guān)注全局的服務(wù)治理框架
4蕊爵、SpringCloud和Dubbo
1) 區(qū)別
a. 服務(wù)的調(diào)用方式Dubbo使用的是RPC遠(yuǎn)程調(diào)用,而SpringCloud使用的是 Rest API,其實(shí)更符合微服務(wù)官方的定義
b. 服務(wù)的注冊中心來看,Dubbo使用了第三方的ZooKeeper作為其底層的注冊中心,實(shí)現(xiàn)服務(wù)的注冊和發(fā)現(xiàn),SpringCloud使用Spring Cloud Netflix Eureka實(shí)現(xiàn)注冊中心,當(dāng)然SpringCloud也可以使用ZooKeeper實(shí)現(xiàn),但一般我們不會(huì)這樣做
c. 服務(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)嗦菲?與git完美集成分布式配置文件支持版本控制,事務(wù)總線實(shí)現(xiàn)配置文件的更新與服務(wù)自動(dòng)裝配等等一系列的微服務(wù)架構(gòu)要素
2) 技術(shù)選型
a. 目前國內(nèi)的分布式系統(tǒng)選型主要還是Dubbo畢竟國產(chǎn),而且國內(nèi)工程師的技術(shù)熟練程度高,并且Dubbo在其他維度上的缺陷可以由其他第三方框架進(jìn)行集成進(jìn)行彌補(bǔ)
b. 而SpringCloud目前是國外比較流行,當(dāng)然我覺得國內(nèi)的市場也會(huì)慢慢的偏向SpringCloud,就連劉軍作為Dubbo重啟的負(fù)責(zé)人也發(fā)表過觀點(diǎn),Dubbo的發(fā)展方向是積極適應(yīng)SpringCloud生態(tài),并不是起沖突
3) Rest和RPC對比
其實(shí)如果仔細(xì)閱讀過微服務(wù)提出者馬丁福勒的論文的話可以發(fā)現(xiàn)其定義的服務(wù)間通信機(jī)制就是Http Rest辉哥。
RPC最主要的缺陷就是服務(wù)提供方和調(diào)用方式之間依賴太強(qiáng),我們需要為每一個(gè)微服務(wù)進(jìn)行接口的定義,并通過持續(xù)繼承發(fā)布,需要嚴(yán)格的版本控制才不會(huì)出現(xiàn)服務(wù)提供和調(diào)用之間因?yàn)榘姹静煌a(chǎn)生的沖突
而REST是輕量級的接口,服務(wù)的提供和調(diào)用不存在代碼之間的耦合,只是通過一個(gè)約定進(jìn)行規(guī)范,但也有可能出現(xiàn)文檔和接口不一致而導(dǎo)致的服務(wù)集成問題,但可以通過swagger工具整合,是代碼和文檔一體化解決,所以REST在分布式環(huán)境下比RPC更加靈活
這也是為什么當(dāng)當(dāng)網(wǎng)的DubboX在對Dubbo的增強(qiáng)中增加了對REST的支持的原因
- 文檔質(zhì)量和社區(qū)活躍度
SpringCloud社區(qū)活躍度遠(yuǎn)高于Dubbo,畢竟由于梁飛團(tuán)隊(duì)的原因?qū)е翫ubbo停止更新迭代五年,而中小型公司無法承擔(dān)技術(shù)開發(fā)的成本導(dǎo)致Dubbo社區(qū)嚴(yán)重低落,而SpringCloud異軍突起,迅速占領(lǐng)了微服務(wù)的市場,背靠Spring混的風(fēng)生水起
Dubbo經(jīng)過多年的積累文檔相當(dāng)成熟,對于微服務(wù)的架構(gòu)體系各個(gè)公司也有穩(wěn)定的現(xiàn)狀
5、你所知道的微服務(wù)技術(shù)棧有哪些?請列舉一二攒射。維度(SpringCloud)
1) 服務(wù)開發(fā):SpringBoot醋旦、Spring、SpringMVC
2) 服務(wù)配置與管理:Netfilx公司的Archaiusm,阿里的Diamond
3) 服務(wù)注冊與發(fā)現(xiàn):Eureka,ZooKeeper
4) 服務(wù)調(diào)用:Rest,RPC,gRPC
5) 服務(wù)熔斷器:Hystrix
6) 服務(wù)負(fù)載均衡:Ribbon,Nginx
7) 服務(wù)接口調(diào)用:Feign
8) 消息隊(duì)列:Kafka,RabbitMq,ActiveMq
9) 服務(wù)配置中心管理:SpringCloudConfing
10) 服務(wù)路由(API網(wǎng)關(guān)):Zuul
11) 事件消息總線:SpringCloud Bus
6会放、負(fù)載平衡的意義什么饲齐?
在計(jì)算中,負(fù)載平衡可以改善跨計(jì)算機(jī)咧最,計(jì)算機(jī)集群捂人,網(wǎng)絡(luò)鏈接御雕,中央處理單元或磁盤驅(qū)動(dòng)器等多種計(jì)算資源的工作負(fù)載分布。負(fù)載平衡旨在優(yōu)化資源使用滥搭,最大化吞吐量酸纲,最小化響應(yīng)時(shí)間并避免任何單一資源的過載。使用多個(gè)組件進(jìn)行負(fù)載平衡而不是單個(gè)組件可能會(huì)通過冗余來提高可靠性和可用性瑟匆。負(fù)載平衡通常涉及專用軟件或硬件闽坡,例如多層交換機(jī)或域名系統(tǒng)服務(wù)器進(jìn)程。
7愁溜、微服務(wù)之間是如何獨(dú)立通訊的
1) 遠(yuǎn)程過程調(diào)用(Remote Procedure Invocation)
也就是我們常說的服務(wù)的注冊與發(fā)現(xiàn)疾嗅,直接通過遠(yuǎn)程過程調(diào)用來訪問別的service。
優(yōu)點(diǎn):
簡單祝谚,常見,因?yàn)闆]有中間件代理宪迟,系統(tǒng)更簡單
缺點(diǎn):
a. 只支持請求/響應(yīng)的模式,不支持別的交惯,比如通知次泽、請求/異步響應(yīng)、發(fā)布/訂閱席爽、發(fā)布/異步響應(yīng)意荤;
b. 降低了可用性,因?yàn)榭蛻舳撕头?wù)端在請求過程中必須都是可用的
2) 消息
使用異步消息來做服務(wù)間通信只锻。服務(wù)間通過消息管道來交換消息玖像,從而通信。
優(yōu)點(diǎn):
a. 把客戶端和服務(wù)端解耦齐饮,更松耦合
b. 提高可用性捐寥,因?yàn)橄⒅虚g件緩存了消息,直到消費(fèi)者可以消費(fèi)
c. 支持很多通信機(jī)制比如通知祖驱、請求/異步響應(yīng)握恳、發(fā)布/訂閱、發(fā)布/異步響應(yīng)
缺點(diǎn):
消息中間件有額外的復(fù)雜性
8捺僻、springcloud如何實(shí)現(xiàn)服務(wù)的注冊和發(fā)現(xiàn)
服務(wù)在發(fā)布時(shí) 指定對應(yīng)的服務(wù)名(服務(wù)名包括了IP地址和端口) 將服務(wù)注冊到注冊中心(eureka或者zookeeper)
這一過程是springcloud自動(dòng)實(shí)現(xiàn) 只需要在main方法添加@EnableDisscoveryClient 同一個(gè)服務(wù)修改端口就可以啟動(dòng)多個(gè)實(shí)例
調(diào)用方法:傳遞服務(wù)名稱通過注冊中心獲取所有的可用實(shí)例 通過負(fù)載均衡策略調(diào)用(ribbon和feign)對應(yīng)的服務(wù)
9乡洼、Eureka和ZooKeeper都可以提供服務(wù)注冊與發(fā)現(xiàn)的功能,請說說兩個(gè)的區(qū)別。
1) Eureka取CAP中的AP匕坯,注重可用性束昵。Zookepper取CAP理論中的CP強(qiáng)調(diào)高的一致性。
ZooKeeper在選舉期間注冊服務(wù)癱瘓,雖然服務(wù)最終會(huì)恢復(fù),但是選舉期間不可用的
Eureka各個(gè)節(jié)點(diǎn)是平等關(guān)系,只要有一臺(tái)Eureka就可以保證服務(wù)可用,而查詢到的數(shù)據(jù)并不是最新的自我保護(hù)機(jī)制會(huì)導(dǎo)致
Eureka不再從注冊列表移除因長時(shí)間沒收到心跳而應(yīng)該過期的服務(wù)
Eureka仍然能夠接受新服務(wù)的注冊和查詢請求,但是不會(huì)被同步到其他節(jié)點(diǎn)(高可用)
當(dāng)網(wǎng)絡(luò)穩(wěn)定時(shí),當(dāng)前實(shí)例新的注冊信息會(huì)被同步到其他節(jié)點(diǎn)中(最終一致性)
Eureka可以很好的應(yīng)對因網(wǎng)絡(luò)故障導(dǎo)致部分節(jié)點(diǎn)失去聯(lián)系的情況,而不會(huì)像ZooKeeper一樣使得整個(gè)注冊系統(tǒng)癱瘓
2) ZooKeeper有Leader和Follower角色,Eureka各個(gè)節(jié)點(diǎn)平等
3) ZooKeeper采用過半數(shù)存活原則,Eureka采用自我保護(hù)機(jī)制解決分區(qū)問題
4) Eureka本質(zhì)上是一個(gè)工程,而ZooKeeper只是一個(gè)進(jìn)程
10葛峻、eureka自我保護(hù)機(jī)制
當(dāng) Eureka Server 節(jié)點(diǎn)在短時(shí)間內(nèi)丟失了過多實(shí)例的連接時(shí)(比如網(wǎng)絡(luò)故障或頻繁的啟動(dòng)關(guān)閉客戶端)锹雏,那么這個(gè)節(jié)點(diǎn)就會(huì)進(jìn)入自我保護(hù)模式,一旦進(jìn)入到該模式术奖,Eureka server 就會(huì)保護(hù)服務(wù)注冊表中的信息逼侦,不再刪除服務(wù)注冊表中的數(shù)據(jù)(即不會(huì)注銷任何微服務(wù))匿辩,當(dāng)網(wǎng)絡(luò)故障恢復(fù)后,該 Ereaka Server 節(jié)點(diǎn)就會(huì)自動(dòng)退出自我保護(hù)模式(我的 Eureka Server 已經(jīng)幾個(gè)月了榛丢,至今未自動(dòng)退出該模式)
11、什么是服務(wù)熔斷?什么是服務(wù)降級
在復(fù)雜的分布式系統(tǒng)中,微服務(wù)之間的相互調(diào)用,有可能出現(xiàn)各種各樣的原因?qū)е路?wù)的阻塞,在高并發(fā)場景下,服務(wù)的阻塞意味著線程的阻塞,導(dǎo)致當(dāng)前線程不可用,服務(wù)器的線程全部阻塞,導(dǎo)致服務(wù)器崩潰,由于服務(wù)之間的調(diào)用關(guān)系是同步的,會(huì)對整個(gè)微服務(wù)系統(tǒng)造成服務(wù)雪崩
為了解決某個(gè)微服務(wù)的調(diào)用響應(yīng)時(shí)間過長或者不可用進(jìn)而占用越來越多的系統(tǒng)資源引起雪崩效應(yīng)就需要進(jìn)行服務(wù)熔斷和服務(wù)降級處理挺庞。
所謂的服務(wù)熔斷指的是某個(gè)服務(wù)故障或異常一起類似顯示世界中的“保險(xiǎn)絲"當(dāng)某個(gè)異常條件被觸發(fā)就直接熔斷整個(gè)服務(wù)晰赞,而不是一直等到此服務(wù)超時(shí)。
服務(wù)熔斷就是相當(dāng)于我們電閘的保險(xiǎn)絲,一旦發(fā)生服務(wù)雪崩的,就會(huì)熔斷整個(gè)服務(wù),通過維護(hù)一個(gè)自己的線程池,當(dāng)線程達(dá)到閾值的時(shí)候就啟動(dòng)服務(wù)降級,如果其他請求繼續(xù)訪問就直接返回fallback的默認(rèn)值
12选侨、如何使用Eureka
1) 添加pom依賴
2) 配置文件添加相關(guān)配置
3) 啟動(dòng)類添加注解@EnableDiscoveryClient
13掖鱼、什么是Ribbon?
ribbon是一個(gè)負(fù)載均衡客戶端,可以很好的控制htt和tcp的一些行為援制。Feign默認(rèn)集成了ribbon戏挡。
使用:
1) 添加pom依賴
2) 配置文件添加相關(guān)配置
3) 啟動(dòng)類添加注解@EnableEurekaServer
4) 向程序的ioc注入一個(gè)bean: restTemplate;并通過@LoadBalanced注解表明這個(gè)restRemplate開啟負(fù)載均衡的功能
5) 寫一個(gè)測試類HelloService,通過之前注入ioc容器的restTemplate來消費(fèi)service-hi服務(wù)的“/hi”接口
源碼:
Ribbon的負(fù)載均衡晨仑,主要通過LoadBalancerClient來實(shí)現(xiàn)的褐墅,而LoadBalancerClient具體交給了ILoadBalancer來處理,ILoadBalancer通過配置IRule洪己、IPing等信息妥凳,并向EurekaClient獲取注冊列表的信息,并默認(rèn)10秒一次向EurekaClient發(fā)送“ping”,進(jìn)而檢查是否更新服務(wù)列表答捕,最后逝钥,得到注冊列表后,ILoadBalancer根據(jù)IRule的策略進(jìn)行負(fù)載均衡拱镐。
而RestTemplate 被@LoadBalance注解后艘款,能過用負(fù)載均衡,主要是維護(hù)了一個(gè)被@LoadBalance注解的RestTemplate列表沃琅,并給列表中的RestTemplate添加攔截器哗咆,進(jìn)而交給負(fù)載均衡器去處理。
14阵难、什么是Feign岳枷?它的優(yōu)點(diǎn)是什么?
Feign是一個(gè)聲明式的偽Http客戶端呜叫,它使得寫Http客戶端變得更簡單空繁。使用Feign,只需要?jiǎng)?chuàng)建一個(gè)接口并注解朱庆。它具有可插拔的注解特性盛泡,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的編碼器和解碼器娱颊。Feign默認(rèn)集成了Ribbon傲诵,并和Eureka結(jié)合凯砍,默認(rèn)實(shí)現(xiàn)了負(fù)載均衡的效果。
簡而言之:
Feign 采用的是基于接口的注解
Feign 整合了ribbon拴竹,具有負(fù)載均衡的能力
整合了Hystrix悟衩,具有熔斷的能力
使用:
1) 添加pom依賴
2) 配置文件添加相關(guān)配置
3) 啟動(dòng)類添加注解@EnableFeignClients
4) 定義一個(gè)接口,使用注解@ FeignClient(“服務(wù)名”)栓拜,來指定調(diào)用哪個(gè)服務(wù)
源碼實(shí)現(xiàn)過程:
首先通過@EnableFeignCleints注解開啟FeignCleint
根據(jù)Feign的規(guī)則實(shí)現(xiàn)接口座泳,并加@FeignCleint注解
程序啟動(dòng)后,會(huì)進(jìn)行包掃描幕与,掃描所有的@ FeignCleint的注解的類挑势,并將這些信息注入到ioc容器中。
當(dāng)接口的方法被調(diào)用啦鸣,通過jdk的代理潮饱,來生成具體的RequesTemplate
RequesTemplate在生成Request
Request交給Client去處理,其中Client可以是HttpUrlConnection诫给、HttpClient也可以是Okhttp
最后Client被封裝到LoadBalanceClient類香拉,這個(gè)類結(jié)合類Ribbon做到了負(fù)載均衡。
15蝙搔、Ribbon和Feign的區(qū)別:
Ribbon和Feign都是用于調(diào)用其他服務(wù)的缕溉,不過方式不同。
1.啟動(dòng)類使用的注解不同吃型,Ribbon用的是@RibbonClient证鸥,F(xiàn)eign用的是@EnableFeignClients。
2.服務(wù)的指定位置不同勤晚,Ribbon是在@RibbonClient注解上聲明枉层,F(xiàn)eign則是在定義抽象方法的接口中使用@FeignClient聲明。
3.調(diào)用方式不同赐写,Ribbon需要自己構(gòu)建http請求鸟蜡,模擬http請求然后使用RestTemplate發(fā)送給其他服務(wù),步驟相當(dāng)繁瑣挺邀。
Feign則是在Ribbon的基礎(chǔ)上進(jìn)行了一次改進(jìn)揉忘,采用接口的方式,將需要調(diào)用的其他服務(wù)的方法定義成抽象方法即可端铛,
不需要自己構(gòu)建http請求泣矛。不過要注意的是抽象方法的注解、方法簽名要和提供服務(wù)的方法完全一致禾蚕。
16您朽、什么是Spring Cloud Bus?
Spring Cloud Bus 將分布式的節(jié)點(diǎn)用輕量的消息代理連接起來换淆。它可以用于廣播配置文件的更改或者服務(wù)之間的通訊哗总,也可以用于監(jiān)控几颜。
如果修改了配置文件,發(fā)送一次請求讯屈,所有的客戶端便會(huì)重新讀取配置文件
使用:
1蛋哭、添加依賴
2、配置rabbitmq
17涮母、什么是zuul?
Zuul的主要功能是路由轉(zhuǎn)發(fā)和過濾器具壮。路由功能是微服務(wù)的一部分,比如/api/user轉(zhuǎn)發(fā)到到user服務(wù)哈蝇,/api/shop轉(zhuǎn)發(fā)到到shop服務(wù)。zuul默認(rèn)和Ribbon結(jié)合實(shí)現(xiàn)了負(fù)載均衡的功能攘已。
使用:
1炮赦、添加pom依賴
2、配置文件添加相關(guān)配置
3样勃、啟動(dòng)類添加注解@EnableZuulProxy
在zuul中吠勘, 整個(gè)請求的過程是這樣的,首先將請求給zuulservlet處理峡眶,zuulservlet中有一個(gè)zuulRunner對象剧防,該對象中初始化了RequestContext:作為存儲(chǔ)整個(gè)請求的一些數(shù)據(jù),并被所有的zuulfilter共享辫樱。zuulRunner中還有 FilterProcessor峭拘,F(xiàn)ilterProcessor作為執(zhí)行所有的zuulfilter的管理器。FilterProcessor從filterloader 中獲取zuulfilter狮暑,而zuulfilter是被filterFileManager所加載鸡挠,并支持groovy熱加載,采用了輪詢的方式熱加載搬男。有了這些filter之后拣展,zuulservelet首先執(zhí)行的Pre類型的過濾器,再執(zhí)行route類型的過濾器缔逛,最后執(zhí)行的是post 類型的過濾器备埃,如果在執(zhí)行這些過濾器有錯(cuò)誤的時(shí)候則會(huì)執(zhí)行error類型的過濾器。執(zhí)行完這些過濾器褐奴,最終將請求的結(jié)果返回給客戶端按脚。
18、什么是Hystrix歉糜?它如何實(shí)現(xiàn)容錯(cuò)乘寒?
Hystrix是一個(gè)延遲和容錯(cuò)庫,旨在隔離遠(yuǎn)程系統(tǒng)匪补,服務(wù)和第三方庫的訪問點(diǎn)伞辛,當(dāng)出現(xiàn)故障是不可避免的故障時(shí)烂翰,停止級聯(lián)故障并在復(fù)雜的分布式系統(tǒng)中實(shí)現(xiàn)彈性。
通常對于使用微服務(wù)架構(gòu)開發(fā)的系統(tǒng)蚤氏,涉及到許多微服務(wù)甘耿。這些微服務(wù)彼此協(xié)作。
使用:
1竿滨、添加pom依賴
2佳恬、啟動(dòng)類使用注解@EnableHystrix
3、在Service方法上加上@HystrixCommand注解于游。該注解對該方法創(chuàng)建了熔斷器的功能毁葱,并指定了fallbackMethod熔斷方法
** 19、springcloud斷路器的作用**
當(dāng)一個(gè)服務(wù)調(diào)用另一個(gè)服務(wù)由于網(wǎng)絡(luò)原因或者自身原因出現(xiàn)問題時(shí) 調(diào)用者就會(huì)等待被調(diào)用者的響應(yīng) 當(dāng)更多的服務(wù)請求到這些資源時(shí)贰剥,導(dǎo)致更多的請求等待 這樣就會(huì)發(fā)生連鎖效應(yīng)(雪崩效應(yīng)) 斷路器就是解決這一問題倾剿。
斷路器有完全打開狀態(tài):一定時(shí)間內(nèi) 達(dá)到一定的次數(shù)無法調(diào)用 并且多次檢測沒有恢復(fù)的跡象 斷路器完全打開,那么下次請求就不會(huì)請求到該服務(wù)
半開:短時(shí)間內(nèi) 有恢復(fù)跡象 斷路器會(huì)將部分請求發(fā)給該服務(wù) 當(dāng)能正常調(diào)用時(shí) 斷路器關(guān)閉
關(guān)閉:當(dāng)服務(wù)一直處于正常狀態(tài) 能正常調(diào)用 斷路器關(guān)閉
20蚌成、Spring Cloud 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吵取。
使用:
1、添加pom依賴
2锯厢、配置文件添加相關(guān)配置
3皮官、啟動(dòng)類添加注解@EnableConfigServer
21、Spring Cloud 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)、限流控制等作用。
使用了一個(gè)RouteLocatorBuilder的bean去創(chuàng)建路由馍佑,除了創(chuàng)建路由RouteLocatorBuilder可以讓你添加各種predicates和filters斋否,predicates斷言的意思,顧名思義就是根據(jù)具體的請求的規(guī)則拭荤,由具體的route去處理茵臭,filters是各種過濾器,用來對請求做各種判斷和修改舅世。
22旦委、架構(gòu):
在微服務(wù)架構(gòu)中,需要幾個(gè)基礎(chǔ)的服務(wù)治理組件雏亚,包括服務(wù)注冊與發(fā)現(xiàn)缨硝、服務(wù)消費(fèi)、負(fù)載均衡罢低、斷路器追葡、智能路由、配置管理等奕短,由這幾個(gè)基礎(chǔ)組件相互協(xié)作,共同組建了一個(gè)簡單的微服務(wù)系統(tǒng)
在Spring Cloud微服務(wù)系統(tǒng)中匀钧,一種常見的負(fù)載均衡方式是翎碑,客戶端的請求首先經(jīng)過負(fù)載均衡(zuul、Ngnix)之斯,再到達(dá)服務(wù)網(wǎng)關(guān)(zuul集群)日杈,然后再到具體的服。佑刷,服務(wù)統(tǒng)一注冊到高可用的服務(wù)注冊中心集群莉擒,服務(wù)的所有的配置文件由配置服務(wù)管理,配置服務(wù)的配置文件放在git倉庫瘫絮,方便開發(fā)人員隨時(shí)改配置涨冀。
嗨,你好呀麦萤,未來的架構(gòu)師鹿鳖,本文由Java架構(gòu)師面試網(wǎng)www.javajiagoushi.com收集整理并進(jìn)行編輯發(fā)布,謝謝大家的支持~