java面試---SpringCloud

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

優點:

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 節點在短時間內丟失了過多實例的連接時(比如網絡故障或頻繁啓動關閉客戶端)節點會進入自我保護模式,保護註冊信息,不再刪除註冊數據,故障恢復時,自動退出自我保護模式。

十一.什麼是服務熔斷?什麼是服務降級?

服務直接的調用,比如在高併發情況下出現進程阻塞,導致當前線程不可用,慢慢的全部線程阻塞,導致服務器雪崩。
服務熔斷:相當於保險絲,出現某個異常,直接熔斷整個服務,而不是一直等到服務超時。通過維護一個自己的線程池,當線程到達閾值的時候就啓動服務降級,如果其他請求繼續訪問就直接返回fallback的默認值。

十二.什麼是Ribbon?

ribbon是一個負載均衡客戶端,可以很好的控制http和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(回退函數)中具體實現降級邏輯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章