微服務面試題目


轉:

1.什么是微服務?

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

3.SpringCloud 和 Dubbo 有哪些區別?

4.SpringBoot 和 SpringCloud 之間關系?

5.什么是熔斷?什么是服務降級?

6.微服務的優缺點是什么?說下你在項目中碰到的坑。

7.eureka和zookeeper都可以提供服務注冊與發現的功能,請說說兩個的區別?

8.你所知道微服務的技術棧有哪些?列舉一二。

9.什么是微服務架構?

練武不練功,到頭一場空。

1.什么是微服務?
     單個輕量級服務一般為一個單獨微服務,微服務講究的是 專注某個功能的實現,比如登錄系統只專注於用戶登錄方面功能的實現,講究的是職責單一,開箱即用,可以獨立運行。微服務架構系統是一個分布式的系統,按照業務進行划分服務單元模塊,解決單個系統的不足,滿足越來越復雜的業務需求。

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

通俗的來講:

微服務就是一個獨立的職責單一的服務應用程序。在 intellij idea 工具里面就是用maven開發的一個個獨立的module,具體就是使用springboot 開發的一個小的模塊,處理單一專業的業務邏輯,一個模塊只做一個事情。

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

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

    更多了解見:https://blog.csdn.net/sunming709424/article/details/80578559

    業界大牛 馬丁福勒(Martin Fowler)講解 :https://martinfowler.com/bliki/

     看不懂英文,這里有中文博客翻譯的:https://blog.csdn.net/u013970991/article/details/53333921

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


    參考:https://www.cnblogs.com/cbxBlog/p/9198401.html

4.SpringBoot 和 SpringCloud 之間關系?
SpringBoot:專注於快速方便的開發單個個體微服務(關注微觀);
SpringCloud:關注全局的微服務協調治理框架,將SpringBoot開發的一個個單體微服務組合並管理起來(關注宏觀);

SpringBoot可以離開SpringCloud獨立使用,但是SpringCloud不可以離開SpringBoot,屬於依賴關系。

    參考:https://blog.csdn.net/qq_41497111/article/details/91042405

5.什么是熔斷?什么是服務降級?
服務熔斷的作用類似於我們家用的保險絲,當某服務出現不可用或響應超時的情況時,為了防止整個系統出現雪崩,暫時停止對該服務的調用。

服務降級是從整個系統的負荷情況出發和考慮的,對某些負荷會比較高的情況,為了預防某些功能(業務場景)出現負荷過載或者響應慢的情況,在其內部暫時舍棄對一些非核心的接口和數據的請求,而直接返回一個提前准備好的fallback(退路)錯誤處理信息。這樣,雖然提供的是一個有損的服務,但卻保證了整個系統的穩定性和可用性。

參考:https://blog.csdn.net/pengjunlee/article/details/86688858

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.什么是微服務架構?
在前面你理解什么是微服務,那么對於微服務架構基本上就已經理解了。

微服務架構 就是 對微服務進行管理整合應用的。微服務架構 依賴於 微服務,是在微服務基礎之上的。

例如:上面已經列舉了什么是微服務。在醫院里,每一個科室都是一個獨立的微服務,那么 這個醫院 就是 一個大型的微服務架構,就類似 院長 可以 對下面的 科室進行管理。微服務架構主要就是這種功能。
---------------------
作者:Lafe Belief
來源:CSDN
原文:https://blog.csdn.net/qq_41497111/article/details/92067565
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM