面試官常問的 微服務 問題(六)

51.什麼是服務熔斷?什麼是服務降級?

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

52.什麼是 feigin?它的優點是什麼?

feign 採用的是基於接口的註解;
優點:feign 整合了 ribbon,具有負載均衡的能力;整合了 Hystrix,具有熔斷的能力;
使用:
1)添加 pom 依賴;
2)啓動類添加@EnableFeignClients;
3)定義一個接口@FeignClient(name=“xxx”)指定調用哪個服務;

53.Ribbon 和 Feign 的區別?

Ribbon和Feign都是用於調用其他服務的,不過方式不同。

1.啓動類使用的註解不同,Ribbon用的是@RibbonClient,Feign用的是@EnableFeignClients。

2.服務的指定位置不同,Ribbon是在@RibbonClient註解上聲明,Feign則是在定義抽象方法的接口中使用@FeignClient聲明。

3.調用方式不同,Ribbon需要自己構建http請求,模擬http請求然後使用RestTemplate發送給其他服務,步驟相當繁瑣。
Feign則是在Ribbon的基礎上進行了一次改進,採用接口的方式,將需要調用的其他服務的方法定義成抽象方法即可。Feign 不需要自己構建http請求,不過要注意的是抽象方法的註解、方法簽名要和提供服務的方法完全一致。

54.springcloud 斷路器作用?

當一個服務調用另一個服務由於網絡原因或自身原因出現問題,調用者就會等待被調用者的響應 當更多的服務請求到這些資源導致更多的請求等待,發生連鎖效應(雪崩效應) 。

斷路器狀態:
1)完全打開狀態:一段時間內達到一定次數無法調用,並且多次監測沒有恢復的跡象,斷路器完全打開那麼下次請求就不會請求該服務;
2)半開:短時間內有恢復跡象斷路器會將部分請求發給該服務,正常調用時,斷路器關閉;
3)關閉:當服務一直處於正常狀態,能正常調用

55.什麼是 SpringCloudConfig(配置中心)?

SpringCloudConfig(配置中心):有本地版和git版;

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

用處:配置中心配置數據庫的連接;(數據庫分庫分表,一個模塊訪問一個數據庫,直接在配置中心配置數據庫,要哪個庫就導入哪個庫的配置,但是不能導入兩個,會衝突。)

56.什麼是 docker?

Docker 是一個容器化平臺,它將應用程序及其所有依賴項以容器的形式打包在一起,以確保應用程序在任何環境(無論是開發環 境、測試環境還是生產環境)中無縫運行。

Docker 容器,將一個軟件包在一個完整的文件系統中,其中包含運行所需的一切:代碼、運行時、系統工具、系統庫等任何可以 安裝在服務器上的東西。

它都將始終運行相同的程序,無論軟件的環境如何。

57.Docker 與虛擬機有何不同?

Docker 不是虛擬化方法。它依賴於實際實現基於容器的虛擬化或操作系統級虛擬化的其他工具。
Docker 最初使用 LXC驅動 程序,然後移動到 libcontainer 現在重命名爲 runc。
Docker 主要專注於在應用程序容器內自動部署應用程序。應用程序容器旨在打包和 運行單個服務,而系統容器則設計爲運行多個進程,如虛擬機。
因此,Docker 被視爲容器化系統上的容器管理或應用程序部署工具。

1)與虛擬機不同,容器不需要引導操作系統內核,因此可以在不到一秒的時間內創建容器。此功能使基於容器的虛擬化比其他虛擬化方法更加獨特和可取。

2)由於基於容器的虛擬化爲主機增加了很少或沒有開銷,因此基於容器的虛擬化具有接近本機的性能

3)對於基於容器的虛擬化,與其他虛擬化不同,不需要其他軟件。

4)主機上的所有容器共享主機的調度程序,從而節省了額外資源的需求。

5)與虛擬機映像相比,容器狀態(Docker 或 LXC映像)的大小很小,因此容器映像很容易分發。

6)容器中的資源管理是通過 cgroup 實現的。Cgroups 不允許容器消耗比分配給它們更多的資源。雖然主機的所有資源都在虛擬機中可見,但無法使用。這可以通過在容器和主機上同時運行 top 或 htop 來實現。所有環境的輸出看起來都很相似。

在這裏插入圖片描述

58.什麼是 Docker 鏡像?

Docker 鏡像是 Docker 容器的源代碼。換句話說,Docker 鏡像用於創建容器。使用 build 命令創建映像,並且在使用 run 啓動時它們將生成容器。鏡像存儲在 Docker 註冊表 registry.hub.docker.com 中,因爲它們可能變得非常大,鏡像被設計爲由其他鏡像層組成,允 許在通過網絡傳輸鏡像時發送最少量的數據。

59.什麼是 Docker 容器?

Docker 容器包括應用程序及其所有依賴項,但與其他容器共享內核,作爲主機操作系統上用戶空間中的獨立進程運行。Docker 容 器不依賴於任何特定的基礎架構:它們可以在任何計算機,任何基礎架構和任何雲中運行。

60.什麼是 Docker Hub?

Docker hub 是一個基於雲的註冊表服務,允許您鏈接到代碼存儲庫,構建鏡像並測試它們,存儲手動推送的鏡像以及指向 Docker 雲的鏈接,以便您可以將鏡像部署到主機。
它爲整個開發流程中的容器鏡像發現,分發和變更管理,用戶和團隊協作以及工作流自動化提供了集中資源。

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