首頁 >Java >Java面試題 >9題微服務面試題,你能回答上來幾個?

9題微服務面試題,你能回答上來幾個?

Java后端技术全栈
Java后端技术全栈轉載
2023-08-22 15:46:381547瀏覽

如今,微服務是我們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 更為靈活,服務提供者和調用方的依賴只依靠一紙契約,不存在程式碼層級的強依賴,這在強調快速演化的微服務環境下,顯得更為合適。

9題微服務面試題,你能回答上來幾個?
SpringCloud 和 Dubbo.png

#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 等###服務呼叫#######Rest(服務通訊)、RPC( Dubbo)、GRpc######
微服務條目 著陸技術
服務熔斷器 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中文網其他相關文章!

陳述:
本文轉載於:Java后端技术全栈。如有侵權,請聯絡admin@php.cn刪除