SpringCloud面試題(二)

SpringCloud面試題(二)

大家好,我是酷酷的韓金羣~下面提供一些整理的springcloud面試題(二)

前面已經詳細的整理了一版springcloud面試題(一) 地址如下:

https://blog.csdn.net/hjq_ku/article/details/89504229

酷酷的韓金羣
一.爲什麼要使用微服務?
1.隨着互聯網的快速發展,各行各業都在用互聯網。互聯網已經離不開人們的形形色色。隨着越來越多的用戶,業務場景也愈來愈複雜。
2.傳統的單體架構已經很難滿足互聯網技術發展的要求,代碼可維護性擴展性和可讀性降低,維護成本的提高都是驅動微服務的發展趨勢。

二.作爲服務註冊中心,Eureka比Zookeeper好在哪裏?

1.Eureka保證的是一致性和分區容錯性 Zookeeper 保證的是可用性和分區容錯性。
2.Eureka還有一種自我保護機制,如果在15分鐘內超過85%的節點都沒有正常的心跳,那麼Eureka就認爲客戶端與註冊中心出現了網絡故障。而不會像zookeeper那樣使整個註冊服務癱瘓。

三.什麼是 Ribbon負載均衡?

1.Spring Cloud Ribbon是基於Netflix Ribbon實現的一套客戶端 負載均衡的工具。
2. Ribbon客戶端組件提供一系列完善的配置項如連接超時,重試等。簡單的說,就是在配置文件中列出Load Balancer(簡稱LB)後面所有的機器,Ribbon會自動的幫助你基於某種規則(如簡單輪詢,隨機連接等)去連接這些機器。我們也很容易使用Ribbon實現自定義的負載均衡算法。

四.Ribbon負載均衡能幹什麼?

1.將用戶的請求平攤的分配到多個服務上
2.集中式LB即在服務的消費方和提供方之間使用獨立的LB設施(可以是硬件,如F5, 也可以是軟件,如nginx), 由該設施負責把訪問請求通過某種策略轉發至服務的提供方;
3.進程內LB將LB邏輯集成到消費方,消費方從服務註冊中心獲知有哪些地址可用,然後自己再從這些地址中選擇出一個合適的服務器。

注意: Ribbon就屬於進程內LB,它只是一個類庫,集成於消費方進程,消費方通過它來獲取到服務提供方的地址。

五.什麼是 zuul路由網關

1.Zuul 包含了對請求的路由和過濾兩個最主要的功能:其中路由功能負責將外部請求轉發到具體的微服務實例上,是實現外部訪問統一入口的基礎而過濾器功能則負責對請求的處理過程進行干預,是實現請求校驗、服務聚合等功能的基礎、
2.Zuul和Eureka進行整合,將Zuul自身註冊爲Eureka服務治理下的應用,同時從Eureka中獲得其他微服務的消息,也即以後的訪問微服務都是通過Zuul跳轉後獲得。
注意: Zuul服務最終還是會註冊進Eureka 提供=代理+路由+過濾 三大功能。

六.分佈式配置中心能幹嘛?

1.集中管理配置文件不同環境不同配置,動態化的配置更新,分環境部署比如dev/test/prod/beta/release
2.運行期間動態調整配置,不再需要在每個服務部署的機器上編寫配置文件,服務會向配置中心統一拉取配置自己的信息
3.當配置發生變動時,服務不需要重啓即可感知到配置的變化並應用新的配置將配置信息以REST接口的形式暴露

七.微服務的優缺點分別是什麼?說下你在項目開發中碰到的坑?

這個問題感覺比較容易問到~~~~

優點:
1.每個服務足夠內聚,足夠小,代碼容易理解這樣能聚焦一個指定的業務功能或業務需求
2.開發簡單、開發效率提高,一個服務可能就是專一的只幹一件事。
3.微服務能夠被小團隊單獨開發,這個小團隊是2到5人的開發人員組成。
4.微服務是鬆耦合的,是有功能意義的服務,無論是在開發階段或部署階段都是獨立的。
5.微服務能使用不同的語言開發。
6.易於和第三方集成,微服務允許容易且靈活的方式集成自動部署,通過持續集成工具,如Jenkins, Hudson, bamboo 。
7.微服務易於被一個開發人員理解,修改和維護,這樣小團隊能夠更關注自己的工作成果。無需通過合作才能體現價值。
8.微服務允許你利用融合最新技術。
9.微服務只是業務邏輯的代碼,不會和HTML,CSS 或其他界面組件混合。
10.每個微服務都有自己的存儲能力,可以有自己的數據庫。也可以有統一數據庫。
缺點:
1.多服務運維難度,隨着服務的增加,運維的壓力也在增大
2.系統部署依賴
3.服務間通信成本
4.數據一致性
5.系統集成測試
6.性能監控

八.什麼是微服務?
1.微服務是一種架構模式或是一種架構風格,它提倡的是將單一的應用程序劃分成若干個小的服務,每個服務都有獨立的進程,服務之間相互協調,相互配合,最終完成目的。
2.服務之間採用輕量級的通信機制,通常是基於HTTP的TESTful API。
3.每個服務都圍繞着具體業務進行構建,並且能夠被獨立地部署到生產環境、類生產環境等
4.應儘量避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合適的語言、工具對其進行構建,可以有一個非常輕量級的集中式管理來協調這些服務,可以使用不同的語言來編寫服務,也可以使用不同的數據存儲~
5.微服務化的核心就是將傳統的一站式應用,根據業務拆分成一個一個的服務,徹底地去耦合,每一個微服務提供單個業務功能的服務,一個服務做一件事,從技術角度看就是一種小而獨立的處理過程,類似進程概念,能夠自行單獨啓動或銷燬,擁有自己獨立的數據庫。

無論過去如何,未來總是嶄新的。充實今朝,昨日已成過去,讓明天充滿神奇。------酷酷的韓金羣~

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