2020年SpringCloud面試題(1)


一.微服務的優點缺點?說下開發項目中遇到的坑?

優點:

1.每個服務直接足夠內聚,代碼容易理解
2.開發效率高,一個服務只做一件事,適合小團隊開發
3.松耦合,有功能意義的服務。
4.可以用不同語言開發,面向接口編程。
5.易於第三方集成
6.微服務只是業務邏輯的代碼,不會和HTML,CSS或其他界面結合.
7.可以靈活搭配,連接公共庫/連接獨立庫

缺點:
1.分布式系統的責任性
2.多服務運維難度加大。
3.系統部署依賴,服務間通信成本,數據一致性,系統集成測試,性能監控。

二.什么是springcloud?

Spring cloud流應用程序啟動器是基於Spring Boot的Spring集成應用程序,提供與外部系統的集成。Spring cloud Task,一個生命周期短暫的微服務框架,用於快速構建執行有限數據處理的應用程序

三.spring cloud 和dubbo區別?

1.服務調用方式 dubbo是RPC springcloud Rest Api
2.注冊中心,dubbo 是zookeeper springcloud是eureka,也可以是zookeeper
3.服務網關,dubbo本身沒有實現,只能通過其他第三方技術整合,springcloud有Zuul路由網關,作為路由服務器,進行消費者的請求分發,springcloud支持斷路器,與git完美集成配置文件支持版本控制,事物總線實現配置文件的更新與服務自動裝配等等一系列的微服務架構要素。

四.REST 和RPC對比

1.RPC主要的缺陷是服務提供方和調用方式之間的依賴太強,需要對每一個微服務進行接口的定義,並通過持續繼承發布,嚴格版本控制才不會出現沖突。
2.REST是輕量級的接口,服務的提供和調用不存在代碼之間的耦合,只需要一個約定進行規范。

五.你所知道的微服務技術棧?

維度(springcloud)
服務開發:springboot spring springmvc
服務配置與管理:Netfix公司的Archaiusm ,阿里的Diamond
服務注冊與發現:Eureka,Zookeeper
服務調用:Rest RPC gRpc
服務熔斷器:Hystrix
服務負載均衡:Ribbon Nginx
服務接口調用:Fegin
消息隊列:Kafka Rabbitmq activemq
服務配置中心管理:SpringCloudConfig
服務路由(API網關)Zuul
事件消息總線:SpringCloud Bus

七.微服務之間是如何獨立通訊的?

1.遠程調用,比如feign調用,直接通過遠程過程調用來訪問別的service。
2.消息中間件

八.springcloud如何實現服務的注冊?

1.服務發布時,指定對應的服務名,將服務注冊到 注冊中心(eureka zookeeper)
2.注冊中心加@EnableEurekaServer,服務用@EnableDiscoveryClient,然后用ribbon或feign進行服務直接的調用發現。

九.Eureka和Zookeeper區別

1.Eureka取CAP的AP,注重可用性,Zookeeper取CAP的CP注重
一致性。
2.Zookeeper在選舉期間注冊服務癱瘓,雖然服務最終會恢復,但選舉期間不可用。
3.eureka的自我保護機制,會導致一個結果就是不會再從注冊列表移除因長時間沒收到心跳而過期的服務。依然能接受新服務的注冊和查詢請求,但不會被同步到其他節點。不會服務癱瘓。
4.Zookeeper有Leader和Follower角色,Eureka各個節點平等。
5.Zookeeper采用過半數存活原則,Eureka采用自我保護機制解決分區問題。
6.eureka本質是一個工程,Zookeeper只是一個進程。

十.eureka自我保護機制是什么?

1.當Eureka Server 節點在短時間內丟失了過多實例的連接時(比如網絡故障或頻繁啟動關閉客戶端)節點會進入自我保護模式,保護注冊信息,不再刪除注冊數據,故障恢復時,自動退出自我保護模式。

十二.什么是Ribbon?

ribbon是一個負載均衡客戶端,可以很好的控制htt和tcp的一些行為。feign默認集成了ribbon。

十三.什么是feigin?它的優點是什么?

1.feign采用的是基於接口的注解
2.feign整合了ribbon,具有負載均衡的能力
3.整合了Hystrix,具有熔斷的能力

使用:
1.添加pom依賴。
2.啟動類添加@EnableFeignClients
3.定義一個接口@FeignClient(name=“xxx”)指定調用哪個服務

十四.Ribbon和Feign的區別?

1.Ribbon都是調用其他服務的,但方式不同。
2.啟動類注解不同,Ribbon是@RibbonClient feign的是@EnableFeignClients
3.服務指定的位置不同,Ribbon是在@RibbonClient注解上聲明,Feign則是在定義抽象方法的接口中使用@FeignClient聲明。
4.調用方式不同,Ribbon需要自己構建http請求,模擬http請求然后使用RestTemplate發送給其他服務,步驟相當繁瑣。Feign需要將調用的方法定義成抽象方法即可。

十五.什么是Spring Cloud Bus?

spring cloud bus 將分布式的節點用輕量的消息代理連接起來,它可以用於廣播配置文件的更改或者服務直接的通訊,也可用於監控。
如果修改了配置文件,發送一次請求,所有的客戶端便會重新讀取配置文件。
使用:
1.添加依賴
2.配置rabbimq

十六.springcloud斷路器作用?

當一個服務調用另一個服務由於網絡原因或自身原因出現問題,調用者就會等待被調用者的響應 當更多的服務請求到這些資源導致更多的請求等待,發生連鎖效應(雪崩效應)
斷路器有完全打開狀態:一段時間內 達到一定的次數無法調用 並且多次監測沒有恢復的跡象 斷路器完全打開 那么下次請求就不會請求到該服務
半開:短時間內 有恢復跡象 斷路器會將部分請求發給該服務,正常調用時 斷路器關閉
關閉:當服務一直處於正常狀態 能正常調用

十七.什么是SpringCloudConfig?

在分布式系統中,由於服務數量巨多,為了方便服務配置文件統一管理,實時更新,所以需要分布式配置中心組件。在Spring Cloud中,有分布式配置中心組件spring cloud config ,它支持配置服務放在配置服務的內存中(即本地),也支持放在遠程Git倉庫中。在spring cloud config 組件中,分兩個角色,一是config server,二是config client。

使用:
1、添加pom依賴
2、配置文件添加相關配置
3、啟動類添加注解@EnableConfigServer

十八.Spring Cloud Gateway?

Spring Cloud Gateway是Spring Cloud官方推出的第二代網關框架,取代Zuul網關。網關作為流量的,在微服務系統中有着非常作用,網關常見的功能有路由轉發、權限校驗、限流控制等作用。

使用了一個RouteLocatorBuilder的bean去創建路由,除了創建路由RouteLocatorBuilder可以讓你添加各種predicates和filters,predicates斷言的意思,顧名思義就是根據具體的請求的規則,由具體的route去處理,filters是各種過濾器,用來對請求做各種判斷和修改。

十九.架構?

在微服務架構中,需要幾個基礎的服務治理組件,包括服務注冊與發現、服務消費、負載均衡、斷路器、智能路由、配置管理等,由這幾個基礎組件相互協作,共同組建了一個簡單的微服務系統

在Spring Cloud微服務系統中,一種常見的負載均衡方式是,客戶端的請求首先經過負載均衡(zuul、Ngnix),再到達服務網關(zuul集群),然后再到具體的服。,服務統一注冊到高可用的服務注冊中心集群,服務的所有的配置文件由配置服務管理,配置服務的配置文件放在git倉庫,方便開發人員隨時改配置。

二十.什么是Hystrix?

防雪崩利器,具備服務降級,服務熔斷,依賴隔離,監控(Hystrix Dashboard)
服務降級:
雙十一 提示 哎喲喂,被擠爆了。 app秒殺 網絡開小差了,請稍后再試。
優先核心服務,非核心服務不可用或弱可用。通過HystrixCommand注解指定。
fallbackMethod(回退函數)中具體實現降級邏輯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM