<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          談?wù)剮讉€(gè) Spring Cloud 常見(jiàn)面試題及答案

          共 3128字,需瀏覽 7分鐘

           ·

          2020-08-26 14:17

          點(diǎn)擊上方藍(lán)色“小哈學(xué)Java”,選擇“設(shè)為星標(biāo)

          回復(fù)“資源”獲取獨(dú)家整理的學(xué)習(xí)資料!

          來(lái)自:Wbw Belief

          鏈接:blog.csdn.net/qq_41497111/article/details/92067565

          全文目錄


          1. 什么是微服務(wù)?

          2. 微服務(wù)之間如何獨(dú)立通訊的?

          3. SpringCloud 和 Dubbo 有哪些區(qū)別?

          4. SpringBoot 和 SpringCloud 之間關(guān)系?

          5. 什么是熔斷?什么是服務(wù)降級(jí)?

          6. 微服務(wù)的優(yōu)缺點(diǎn)是什么?說(shuō)下你在項(xiàng)目中碰到的坑。

          7. eureka和zookeeper都可以提供服務(wù)注冊(cè)與發(fā)現(xiàn)的功能,請(qǐng)說(shuō)說(shuō)兩個(gè)的區(qū)別?

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

          9. 什么是微服務(wù)架構(gòu)?


          1. 什么是微服務(wù)?


          單個(gè)輕量級(jí)服務(wù)一般為一個(gè)單獨(dú)微服務(wù),微服務(wù)講究的是 專(zhuān)注某個(gè)功能的實(shí)現(xiàn),比如登錄系統(tǒng)只專(zhuān)注于用戶(hù)登錄方面功能的實(shí)現(xiàn),講究的是職責(zé)單一,開(kāi)箱即用,可以獨(dú)立運(yùn)行。微服務(wù)架構(gòu)系統(tǒng)是一個(gè)分布式的系統(tǒng),按照業(yè)務(wù)進(jìn)行劃分服務(wù)單元模塊,解決單個(gè)系統(tǒng)的不足,滿(mǎn)足越來(lái)越復(fù)雜的業(yè)務(wù)需求。


          馬丁福勒(Martin Fowler):就目前而言,對(duì)于微服務(wù)業(yè)界并沒(méi)有一個(gè)統(tǒng)一的、標(biāo)準(zhǔn)的定義。但通常而言,微服務(wù)架構(gòu)是一種架構(gòu)模式或者說(shuō)是架構(gòu)風(fēng)格,它提倡將單一應(yīng)用程序劃分成一組小的服務(wù)。每個(gè)服務(wù)運(yùn)行在其獨(dú)立的自己的進(jìn)程中服務(wù)之間相互配合、相互協(xié)調(diào),為用戶(hù)提供最終價(jià)值。服務(wù)之間采用輕量級(jí)通信。每個(gè)服務(wù)都圍繞具體業(yè)務(wù)進(jìn)行構(gòu)建,并能夠獨(dú)立部署到生產(chǎn)環(huán)境等。另外應(yīng)盡量避免統(tǒng)一的、集中的服務(wù)管理機(jī)制。


          通俗的來(lái)講:

          微服務(wù)就是一個(gè)獨(dú)立的職責(zé)單一的服務(wù)應(yīng)用程序。在 intellij idea 工具里面就是用maven開(kāi)發(fā)的一個(gè)個(gè)獨(dú)立的module,具體就是使用springboot 開(kāi)發(fā)的一個(gè)小的模塊,處理單一專(zhuān)業(yè)的業(yè)務(wù)邏輯,一個(gè)模塊只做一個(gè)事情。


          微服務(wù)強(qiáng)調(diào)的是服務(wù)大小,關(guān)注的是某一個(gè)點(diǎn),具體解決某一個(gè)問(wèn)題/落地對(duì)應(yīng)的一個(gè)服務(wù)應(yīng)用,可以看做是idea 里面一個(gè) module。


          比如你去醫(yī)院:你的牙齒不舒服,那么你就去牙科。你的頭疼,那么你就去腦科。一個(gè)個(gè)的科室,就是一個(gè)微服務(wù),一個(gè)功能就是一個(gè)服務(wù)。

          業(yè)界大牛 馬丁福勒(Martin Fowler)講解 :

          https://martinfowler.com/bliki/


          看不懂英文,這里有中文博客翻譯的:

          https://blog.csdn.net/u013970991/article/details/53333921

          2. 微服務(wù)之間如何獨(dú)立通訊的?


          同步通信:dobbo通過(guò) RPC 遠(yuǎn)程過(guò)程調(diào)用、springcloud通過(guò) REST ?接口json調(diào)用?等。


          異步:消息隊(duì)列,如:RabbitMq、ActiveM、Kafka 等。


          3. SpringCloud 和 Dubbo 有哪些區(qū)別?


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


          dubbo 是二進(jìn)制傳輸,占用帶寬會(huì)少一點(diǎn)。SpringCloud是http 傳輸,帶寬會(huì)多一點(diǎn),同時(shí)使用http協(xié)議一般會(huì)使用JSON報(bào)文,消耗會(huì)更大。


          關(guān)注公眾號(hào)程序員小樂(lè)回復(fù)關(guān)鍵字“offer”獲取算法面試題和答案。


          dubbo 開(kāi)發(fā)難度較大,所依賴(lài)的 jar 包有很多問(wèn)題大型工程無(wú)法解決。SpringCloud 對(duì)第三方的繼承可以一鍵式生成,天然集成。


          SpringCloud 接口協(xié)議約定比較松散,需要強(qiáng)有力的行政措施來(lái)限制接口無(wú)序升級(jí)。


          最大的區(qū)別:


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


          嚴(yán)格來(lái)說(shuō),這兩種方式各有優(yōu)劣。雖然在一定程度上來(lái)說(shuō),后者犧牲了服務(wù)調(diào)用的性能,但也避免了上面提到的原生RPC帶來(lái)的問(wèn)題。而且REST相比RPC更為靈活,服務(wù)提供方和調(diào)用方的依賴(lài)只依靠一紙契約,不存在代碼級(jí)別的強(qiáng)依賴(lài),這在強(qiáng)調(diào)快速演化的微服務(wù)環(huán)境下,顯得更為合適。



          4. SpringBoot 和 SpringCloud 之間關(guān)系?


          SpringBoot:專(zhuān)注于快速方便的開(kāi)發(fā)單個(gè)個(gè)體微服務(wù)(關(guān)注微觀);SpringCloud:關(guān)注全局的微服務(wù)協(xié)調(diào)治理框架,將SpringBoot開(kāi)發(fā)的一個(gè)個(gè)單體微服務(wù)組合并管理起來(lái)(關(guān)注宏觀);


          SpringBoot可以離開(kāi)SpringCloud獨(dú)立使用,但是SpringCloud不可以離開(kāi)SpringBoot,屬于依賴(lài)關(guān)系。

          參考:

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


          5. 什么是熔斷?什么是服務(wù)降級(jí)?


          服務(wù)熔斷的作用類(lèi)似于我們家用的保險(xiǎn)絲,當(dāng)某服務(wù)出現(xiàn)不可用或響應(yīng)超時(shí)的情況時(shí),為了防止整個(gè)系統(tǒng)出現(xiàn)雪崩,暫時(shí)停止對(duì)該服務(wù)的調(diào)用。


          服務(wù)降級(jí)是從整個(gè)系統(tǒng)的負(fù)荷情況出發(fā)和考慮的,對(duì)某些負(fù)荷會(huì)比較高的情況,為了預(yù)防某些功能(業(yè)務(wù)場(chǎng)景)出現(xiàn)負(fù)荷過(guò)載或者響應(yīng)慢的情況,在其內(nèi)部暫時(shí)舍棄對(duì)一些非核心的接口和數(shù)據(jù)的請(qǐng)求,而直接返回一個(gè)提前準(zhǔn)備好的fallback(退路)錯(cuò)誤處理信息。這樣,雖然提供的是一個(gè)有損的服務(wù),但卻保證了整個(gè)系統(tǒng)的穩(wěn)定性和可用性。


          6. 微服務(wù)的優(yōu)缺點(diǎn)是什么?說(shuō)下你在項(xiàng)目中碰到的坑。


          優(yōu)點(diǎn):松耦合,聚焦單一業(yè)務(wù)功能,無(wú)關(guān)開(kāi)發(fā)語(yǔ)言,團(tuán)隊(duì)規(guī)模降低。在開(kāi)發(fā)中,不需要了解多有業(yè)務(wù),只專(zhuān)注于當(dāng)前功能,便利集中,功能小而精。微服務(wù)一個(gè)功能受損,對(duì)其他功能影響并不是太大,可以快速定位問(wèn)題。微服務(wù)只專(zhuān)注于當(dāng)前業(yè)務(wù)邏輯代碼,不會(huì)和 html、css 或其他界面進(jìn)行混合。可以靈活搭配技術(shù),獨(dú)立性比較舒服。


          缺點(diǎn):隨著服務(wù)數(shù)量增加,管理復(fù)雜,部署復(fù)雜,服務(wù)器需要增多,服務(wù)通信和調(diào)用壓力增大,運(yùn)維工程師壓力增大,人力資源增多,系統(tǒng)依賴(lài)增強(qiáng),數(shù)據(jù)一致性,性能監(jiān)控。


          7. eureka和zookeeper都可以提供服務(wù)注冊(cè)與發(fā)現(xiàn)的功能,請(qǐng)說(shuō)說(shuō)兩個(gè)的區(qū)別?


          • zookeeper 是CP原則,強(qiáng)一致性和分區(qū)容錯(cuò)性。

          • eureka 是AP 原則 可用性和分區(qū)容錯(cuò)性。

          • zookeeper當(dāng)主節(jié)點(diǎn)故障時(shí),zk會(huì)在剩余節(jié)點(diǎn)重新選擇主節(jié)點(diǎn),耗時(shí)過(guò)長(zhǎng),雖然最終能夠恢復(fù),但是選取主節(jié)點(diǎn)期間會(huì)導(dǎo)致服務(wù)不可用,這是不能容忍的。

          • eureka各個(gè)節(jié)點(diǎn)是平等的,一個(gè)節(jié)點(diǎn)掛掉,其他節(jié)點(diǎn)仍會(huì)正常保證服務(wù)。


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




          9. 什么是微服務(wù)架構(gòu)?


          在前面你理解什么是微服務(wù),那么對(duì)于微服務(wù)架構(gòu)基本上就已經(jīng)理解了。


          微服務(wù)架構(gòu) 就是 對(duì)微服務(wù)進(jìn)行管理整合應(yīng)用的。微服務(wù)架構(gòu) 依賴(lài)于 微服務(wù),是在微服務(wù)基礎(chǔ)之上的。


          例如:上面已經(jīng)列舉了什么是微服務(wù)。在醫(yī)院里,每一個(gè)科室都是一個(gè)獨(dú)立的微服務(wù),那么 這個(gè)醫(yī)院 就是 一個(gè)大型的微服務(wù)架構(gòu),就類(lèi)似 院長(zhǎng) 可以 對(duì)下面的 科室進(jìn)行管理。微服務(wù)架構(gòu)主要就是這種功能。


          END


          有熱門(mén)推薦?

          1.?最受歡迎的男友職業(yè)排行榜,程序員擠進(jìn)前三!

          2.?短 URL 服務(wù),怎么設(shè)計(jì)與實(shí)現(xiàn)?

          3.?Spring 的 Controller 是單例還是多例?怎么保證并發(fā)的安全?

          4.?面試:如何從 100 億 URL 中找出相同的 URL?

          最近面試BAT,整理一份面試資料Java面試BATJ通關(guān)手冊(cè),覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。

          獲取方式:點(diǎn)“在看”,關(guān)注公眾號(hào)并回復(fù)?Java?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

          文章有幫助的話(huà),在看,轉(zhuǎn)發(fā)吧。

          謝謝支持喲 (*^__^*)

          瀏覽 52
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美操逼图 | 中文字幕亚洲乱伦 | 在线成人中文字幕 | 欧美成人精品在线视频 | 成人性爱片一区 |