天天看點

常見SpringCloud面試題及答案

全文目錄

  1. 什麼是微服務?
  2. 微服務之間如何獨立通訊的?
  3. SpringCloud 和 Dubbo 有哪些差別?
  4. SpringBoot 和 SpringCloud 之間關系?
  5. 什麼是熔斷?什麼是服務降級?
  6. 微服務的優缺點是什麼?說下你在項目中碰到的坑。
  7. eureka和zookeeper都可以提供服務注冊與發現的功能,請說說兩個的差別?
  8. 你所知道微服務的技術棧有哪些?列舉一二。

1.什麼是微服務?

單個輕量級服務一般為一個單獨微服務,微服務講究的是 專注某個功能的實作,比如登入系統隻專注于使用者登入方面功能的實作,講究的是職責單一,開箱即用,可以獨立運作。微服務架構系統是一個分布式的系統,按照業務進行劃分服務單元子產品,解決單個系統的不足,滿足越來越複雜的業務需求。

馬丁福勒(Martin Fowler):就目前而言,對于微服務業界并沒有一個統一的、标準的定義。但通常而言,微服務架構是一種架構模式或者說是架構風格,它提倡将單一應用程式劃分成一組小的服務。每個服務運作在其獨立的自己的程序中服務之間互相配合、互相協調,為使用者提供最終價值。服務之間采用輕量級通信。每個服務都圍繞具體業務進行建構,并能夠獨立部署到生産環境等。另外應盡量避免統一的、集中的服務管理機制。

通俗的來講:

微服務就是一個獨立的職責單一的服務應用程式。在 intellij idea 工具裡面就是用maven開發的一個個獨立的module,具體就是使用springboot 開發的一個小的子產品,處理單一專業的業務邏輯,一個子產品隻做一個事情。

微服務強調的是服務大小,關注的是某一個點,具體解決某一個問題/落地對應的一個服務應用,可以看做是idea 裡面一個 module。

比如你去醫院:你的牙齒不舒服,那麼你就去牙科。你的頭疼,那麼你就去腦科。一個個的科室,就是一個微服務,一個功能就是一個服務

2.微服務之間如何獨立通訊的?

同步通信:dobbo通過 RPC 遠端過程調用、springcloud通過 REST 接口json調用 等。

異步:消息隊列,如:RabbitMq、ActiveM、Kafka 等。

.SpringCloud 和 Dubbo 有哪些差別?

首先,他們都是分布式管理架構。

dubbo 是二進制傳輸,占用帶寬會少一點。SpringCloud是http 傳輸,帶寬會多一點,同時使用http協定一般會使用JSON封包,消耗會更大。

dubbo 開發難度較大,所依賴的 jar 包有很多問題大型工程無法解決。SpringCloud 對第三方的繼承可以一鍵式生成,天然內建。

SpringCloud 接口協定約定比較松散,需要強有力的行政措施來限制接口無序更新。

最大的差別:

Spring Cloud抛棄了Dubbo 的RPC通信,采用的是基于HTTP的REST方式。

嚴格來說,這兩種方式各有優劣。雖然在一定程度上來說,後者犧牲了服務調用的性能,但也避免了上面提到的原生RPC帶來的問題。而且REST相比RPC更為靈活,服務提供方和調用方的依賴隻依靠一紙契約,不存在代碼級别的強依賴,這在強調快速演化的微服務環境下,顯得更為合适

常見SpringCloud面試題及答案

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各個節點是平等的,一個節點挂掉,其他節點仍會正常保證服務
下一篇: atlas 初體驗

繼續閱讀