9題微服務面試題,你能回答上來幾個?
如今,微服務是我們Java開發者必備的技能之一了。不管你工作是否真的使用微服務架構,但面試官一定會問你,所以田哥為你整理一份微服務面試題。
話不多說,我們直入主題。
1. 什麼是微服務?
單一輕量級服務一般為一個單獨微服務,微服務講究的是專注某個功能的實現,例如登入系統只專注於使用者登入方面功能的實現,講究的是職責單一,開箱即用,可以獨立運作。微服務架構系統是一個分散式的系統,依照業務進行分割服務單元模組,解決單一系統的不足,滿足越來越複雜的業務需求。
馬丁福勒(Martin Fowler):就目前而言,對於微服務業界並沒有一個統一的、標準的定義。但通常而言,微服務架構是一種架構模式或架構風格,它提倡將單一應用程式分割成一組小的服務。每個服務運作在其獨立的自己的進程中服務之間相互配合、相互協調,為使用者提供最終價值。服務之間採用輕量級通訊。每個服務都圍繞著具體業務進行構建,並能夠獨立部署到生產環境等。另外應盡量避免統一的、集中的服務管理機制。
通俗的來講:
微服務就是一個獨立的職責單一的服務應用程式。在 intellij idea 工具裡面就是用 maven 開發的一個個獨立的 module,具體就是使用 springboot 開發的一個小的模組,處理單一專業的業務邏輯,一個模組只做一個事情。
微服務強調的是服務大小,關注的是某一點,具體解決某一個問題 / 落地對應的一個服務應用,可以看做是 idea 裡面一個 module。
例如你去醫院:你的牙齒不舒服,那你就去牙科。你的頭疼,那你就去腦科。一個個的科室,就是一個微服務,一個功能就是一個服務。
2. 微服務之間如何獨立通訊的?
同步通訊:dobbo 透過 RPC 遠端過程呼叫、springcloud 透過 REST 介面 json 呼叫 等。非同步:訊息佇列,如:RabbitMq、ActiveM、Kafka 等。
3.SpringCloud 和 Dubbo 有哪些不同?
首先,他們都是分散式管理框架。
dubbo 是二進位傳輸,佔用頻寬會少一點。 SpringCloud 是 http 傳輸,頻寬會多一點,同時使用 http 協定一般會使用 JSON 封包,消耗會更大。
dubbo 開發難度較大,所依賴的 jar 套件有很多問題大型工程無法解決。 SpringCloud 對第三方的繼承可以一鍵式生成,天然整合。
SpringCloud 介面協定約定比較鬆散,需要強而有力的行政措施來限制介面無序升級。
最大的區別: Spring Cloud 拋棄了 Dubbo 的 RPC 通信,採用的是基於 HTTP 的 REST 方式。
嚴格來說,這兩種方式各有優劣。雖然在某種程度上來說,後者犧牲了服務呼叫的效能,但也避免了上述的原生 RPC 所帶來的問題。而 REST 相比 RPC 更為靈活,服務提供者和調用方的依賴只依靠一紙契約,不存在程式碼層級的強依賴,這在強調快速演化的微服務環境下,顯得更為合適。

#4.SpringBoot 和 SpringCloud 之間關係?
SpringBoot:專注於快速方便的開發單一個體微服務(關注微觀);SpringCloud:專注於全局的微服務協調治理框架,將SpringBoot 開發的一個個單體微服務組合並管理起來(關注宏觀);
SpringBoot 可以離開SpringCloud 獨立使用,但是SpringCloud 不可以離開SpringBoot,屬於依賴關係。
5. 什麼是熔斷?什麼是服務降級?
服務熔斷的作用類似於我們家用的保險絲,當某服務出現不可用或回應逾時的情況時,為了防止整個系統出現雪崩,暫時停止對該服務的呼叫。
服務降級是從整個系統的負載情況出發和考慮的,對某些負載會比較高的情況,為了預防某些功能(業務場景)出現負荷過載或回應慢的情況,在其內部暫時捨棄一些非核心的介面和資料的請求,而直接傳回一個提前準備好的fallback(退路)錯誤處理資訊。這樣,雖然提供的是一個有損的服務,但卻保證了整個系統的穩定性和可用性。
6. 微服務的優缺點是什麼?說下你在專案中碰到的坑。
優點:鬆散耦合,聚焦單一業務功能,無關開發語言,團隊規模降低。在開發中,不需要了解多有業務,只專注於當前功能,便利集中,功能小而精。微服務一個功能受損,對其他功能影響並不是太大,可以快速定位問題。微服務只專注於當前業務邏輯程式碼,不會和 html、css 或其他介面進行混合。可以靈活搭配技術,獨立性比較舒服。
缺點:隨著服務數量增加,管理複雜,部署複雜,伺服器需要增多,服務通訊和呼叫壓力增加,維運工程師壓力增加,人力資源增多,系統依賴增強,資料一致性,效能監控。
7.eureka 和 zookeeper有什麼不同?
zookeeper 是 CP 原則,強一致性和分割區容錯性。 eureka 是 AP 原則 可用性和分割區容錯性。 zookeeper 當主節點發生故障時,zk 會在剩餘節點重新選擇主節點,耗時過長,雖然最終能夠恢復,但是選取主節點期間會導致服務不可用,這是不能容忍的。 eureka 各節點是平等的,一個節點掛掉,其他節點仍會正常保證服務。
8. 你所知道微服務的技術堆疊有哪些?列舉一二。
微服務條目 | 著陸技術 |
---|---|
SpringBoot、Spring、SpringMVC | |
Netfix 公司的Archaius、阿里的Dlamond 等 | |
Eurka、Consul、Zookeeper 等 | |
服務熔斷器 | Hystrix、Envoy 等 |
#負載平衡 | Nginx、Ribbon 等 |
#服務介面呼叫(客戶端簡化工具) | Fegin 等 |
#訊息佇列 | Kafka、RabbitMQ、ActiveMQ 等 |
服務設定中心管理 | SpringCloudConfig、Chef 等 |
服務路由(API 閘道) | Zuul 等 |
服務監控 | Zabbix,Nagios,Metrics,Spectator 等 |
全鏈路追蹤 | Zipkin,Brave,Dapper 等 |
服務部署 | Docker,OpenStack,Kubernetes 等 |
資料流操作開發包 | SpringCloud Stream(封裝與Redis,Rabbit,kafka 等人發送接收訊息) |
事件訊息總線 | Spring Cloud Bus |
9. 什麼是微服務架構?
在前面你理解什麼是微服務,那麼對於微服務架構基本上就已經理解了。
微服務架構 就是 對微服務進行管理整合應用的。微服務架構 依賴 微服務,是在微服務基礎上的。
例如:上面已經列舉了什麼是微服務。在醫院裡,每一個科室都是獨立的微服務,那麼 這個醫院 就是 一個大型的微服務架構,就類似 院長 可以 對下面的 科室進行管理。微服務架構主要就是這種功能。
以上是9題微服務面試題,你能回答上來幾個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

你一定知道 Spring , 那說說 Aop 的去全部通知順序, Spring Boot 或 Spring Boot 2 對 aop 的執行順序影響?說說你在 AOP 中遇到的那些坑?

OOM 意味著程式存在漏洞,可能是程式碼或 JVM 參數配置引起的。這篇文章跟讀者聊聊,Java 進程觸發了 OOM 後如何排查。

上週,一位群組裡的朋友去平安保險面試了,結果有些遺憾,蠻可惜的,但希望你不要氣餒,正如你所說的,面試中遇到的問題,基本上都是可以通過背面試題解決的,所以請加油!

Java並發程式設計系列番外篇C A S(Compare and swap),文章風格依然是圖文並茂,簡單易懂,讓讀者們也能與面試官瘋狂對線。

在很多公司的筆試題中,千萬別小看,都是有坑的,一不小心自己就掉進去了。遇到這種關於循環的筆試題,建議,自己冷靜思考,一步一步來。

這篇來看看 Java String類別的 5 題面試題,這五題,我自己在面試過程中親身經歷過幾題目,本篇就帶你了解這些題的答案為什麼是這樣。

快速排序由C. A. R. Hoare在1962年提出。它的基本想法是:透過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以[遞歸]進行,以此達到整個資料變成有序序列。
