Spring Cloud 面試總結

2021-10-22 17:07:51 字數 1731 閱讀 6511

resttemplate是spring提供的用於傳送http請求的客戶端工具,它遵循restful原則,resttemplate預設依賴jdk的http連線工具httpurlconnection,你也可以替換不同的源,比如okhttp、apache httpcomponents 等等。。

feign是spring cloud元件中乙個輕量級restful的http服務客戶端,feign內建了ribbon,用來做客戶端負載均衡,去呼叫服務註冊中心的服務。feign的使用方式是:使用feign的註解定義介面,呼叫介面,就可以呼叫服務註冊中心的服務。

微服務需要對服務進行拆分,服務拆分之後,就涉及服務的通訊,通訊的話可以使用resttemplate,乙個服務可能放在多台機器上,有多個副本,這個時候就需要做負載均衡,可用將robbin與resttemplate整合後實現負載均衡,所以在resttemplate真正發起http請求之前做了乙個攔截,這個攔截就是loadbalancerinterceptor完成的,它的最終實現是ribbonloadblancerclient去進行攔截和處理,在攔截過程中分析了幾個階段,第乙個階段是初始化階段,怎麼對加了loadbalancer的註解resttemplate進行攔截,通過講解了自動裝配過程,講到loadbalancerautoconfiguration自動裝配類,這個裝配類裡邊是巢狀的bean的依賴,下圖的順序就是bean的初始化的過程。通過這個乙個過程對resttemplate加了乙個攔截,就可以使用負載均衡處理。

robbin的呼叫流程分為四個部分:

1,初始化階段,通過自動裝配將resttemplate與loadbalancerinterceptor繫結到一起;

3,解析url,將服務名請求路徑轉轉為ip+埠的請求形式

接著呼叫

ribbonloadbalancerclient.execute()方法,其一系列的鏈路呼叫,最終ribbonloadbalancerclient.reconstructuri方法重構url;

接著使用asyncclienthttprequestexecution.execte()發起非同步遠端呼叫。

openfigen呼叫過程

openfeign的呼叫過程:

可以沿著兩條路線進行分析,一是分析@enablefeignclients,@feignclient

接著是構建動態動態**物件

當我們通過@autowired ***xfeignclient的時候,會通過feignclientfactorybean.gettarget()獲取目標物件,接著呼叫hystrixtargeter.target(),接著呼叫feign.target();reflectivefeign.newinstance()

接著是解析介面類的注釋宣告下面從http網路通訊的角度來分析,

前台發起http請求,會受到動態**的攔截,通過feigninvocationhandler.invoke(),它會呼叫 this.dispatch.get(method)).invoke(args)

Spring Cloud技術總結

spring cloud是微服務化得綜合性解決框架,提供服務治理eureka,容錯hystrix,客戶端負載均衡ribbon,配置中心config,基於ribbon和hystrix的宣告式服務呼叫元件feign,閘道器zuul,訊息匯流排bus等。對於第一次接觸微服務架構的團隊或者架構人員不足的團隊...

SpringCloud元件超時總結

目錄 1 ribbon的超時 2 feign的超時 3 resttemplate的超時 4 zuul的超時 4.1 如果zuul的路由使用了ribbon 4.2 如果zuul的路由未使用ribbon 5 hystrix的超時 全域性設定 ribbon readtimeout 60000 connec...

spring cloud 入門系列 總結

一 該系列博文列表 1spring cloud 入門系列一 初識spring cloud 2spring cloud 入門系列二 使用eureka 進行服務治理 3spring cloud 入門系列三 使用eureka 搭建高可用服務註冊中心 4spring cloud 入門系列四 使用hystri...