搜公眾號(hào)【野生程序猿】烤黍,每天更新面試題干貨 | 學(xué)習(xí)教程 | 面試技巧
1. 什么是微服務(wù)知市?
單個(gè)輕量級(jí)服務(wù)一般為一個(gè)單獨(dú)微服務(wù)傻盟,微服務(wù)講究的是
專注某個(gè)功能的實(shí)現(xiàn),比如登錄系統(tǒng)只專注于用戶登錄方面功能的實(shí)現(xiàn)嫂丙,講究的是職責(zé)單一娘赴,開箱即用,可以獨(dú)立運(yùn)行跟啤。微服務(wù)架構(gòu)系統(tǒng)是一個(gè)分布式的系統(tǒng)筝闹,按照業(yè)務(wù)進(jìn)行劃分服務(wù)單元模塊,解決單個(gè)系統(tǒng)的不足腥光,滿足越來越復(fù)雜的業(yè)務(wù)需求关顷。
馬丁福勒(Martin
Fowler):就目前而言,對(duì)于微服務(wù)業(yè)界并沒有一個(gè)統(tǒng)一的武福、標(biāo)準(zhǔn)的定義议双。但通常而言,微服務(wù)架構(gòu)是一種架構(gòu)模式或者說是架構(gòu)風(fēng)格捉片,它提倡將單一應(yīng)用程序劃分成一組小的服務(wù)平痰。每個(gè)服務(wù)運(yùn)行在其獨(dú)立的自己的進(jìn)程中服務(wù)之間相互配合、相互協(xié)調(diào)伍纫,為用戶提供最終價(jià)值宗雇。服務(wù)之間采用輕量級(jí)通信。每個(gè)服務(wù)都圍繞具體業(yè)務(wù)進(jìn)行構(gòu)建莹规,并能夠獨(dú)立部署到生產(chǎn)環(huán)境等赔蒲。另外應(yīng)盡量避免統(tǒng)一的、集中的服務(wù)管理機(jī)制良漱。
通俗的來講:
微服務(wù)就是一個(gè)獨(dú)立的職責(zé)單一的服務(wù)應(yīng)用程序舞虱。在 intellij idea 工具里面就是用maven開發(fā)的一個(gè)個(gè)獨(dú)立的module,具體就是使用springboot 開發(fā)的一個(gè)小的模塊母市,處理單一專業(yè)的業(yè)務(wù)邏輯矾兜,一個(gè)模塊只做一個(gè)事情。
微服務(wù)強(qiáng)調(diào)的是服務(wù)大小患久,關(guān)注的是某一個(gè)點(diǎn)椅寺,具體解決某一個(gè)問題/落地對(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通過 RPC 遠(yuǎn)程過程調(diào)用、springcloud通過 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)程序員小樂回復(fù)關(guān)鍵字“offer”獲取算法面試題和答案缨伊。
dubbo 開發(fā)難度較大,所依賴的 jar 包有很多問題大型工程無法解決进宝。SpringCloud 對(duì)第三方的繼承可以一鍵式生成刻坊,天然集成。
SpringCloud 接口協(xié)議約定比較松散党晋,需要強(qiáng)有力的行政措施來限制接口無序升級(jí)谭胚。
最大的區(qū)別:
Spring Cloud拋棄了Dubbo 的RPC通信,采用的是基于HTTP的REST方式隶校。
嚴(yán)格來說漏益,這兩種方式各有優(yōu)劣驻谆。雖然在一定程度上來說狼讨,后者犧牲了服務(wù)調(diào)用的性能融虽,但也避免了上面提到的原生RPC帶來的問題。而且REST相比RPC更為靈活舞终,服務(wù)提供方和調(diào)用方的依賴只依靠一紙契約,不存在代碼級(jí)別的強(qiáng)依賴癣猾,這在強(qiáng)調(diào)快速演化的微服務(wù)環(huán)境下敛劝,顯得更為合適。
4. SpringBoot 和 SpringCloud 之間關(guān)系纷宇?
SpringBoot:專注于快速方便的開發(fā)單個(gè)個(gè)體微服務(wù)(關(guān)注微觀)夸盟;SpringCloud:關(guān)注全局的微服務(wù)協(xié)調(diào)治理框架,將SpringBoot開發(fā)的一個(gè)個(gè)單體微服務(wù)組合并管理起來(關(guān)注宏觀)像捶;
SpringBoot可以離開SpringCloud獨(dú)立使用上陕,但是SpringCloud不可以離開SpringBoot桩砰,屬于依賴關(guān)系。
參考:
https://blog.csdn.net/qq_41497111/article/details/91042405
5. 什么是熔斷释簿?什么是服務(wù)降級(jí)亚隅?
服務(wù)熔斷的作用類似于我們家用的保險(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ù)場景)出現(xiàn)負(fù)荷過載或者響應(yīng)慢的情況,在其內(nèi)部暫時(shí)舍棄對(duì)一些非核心的接口和數(shù)據(jù)的請求套像,而直接返回一個(gè)提前準(zhǔn)備好的fallback(退路)錯(cuò)誤處理信息酿联。這樣,雖然提供的是一個(gè)有損的服務(wù)凉夯,但卻保證了整個(gè)系統(tǒng)的穩(wěn)定性和可用性货葬。
6. 微服務(wù)的優(yōu)缺點(diǎn)是什么?說下你在項(xiàng)目中碰到的坑劲够。
優(yōu)點(diǎn):松耦合震桶,聚焦單一業(yè)務(wù)功能,無關(guān)開發(fā)語言征绎,團(tuán)隊(duì)規(guī)模降低蹲姐。在開發(fā)中,不需要了解多有業(yè)務(wù)人柿,只專注于當(dāng)前功能柴墩,便利集中,功能小而精凫岖。微服務(wù)一個(gè)功能受損江咳,對(duì)其他功能影響并不是太大,可以快速定位問題哥放。微服務(wù)只專注于當(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)依賴增強(qiáng)挪拟,數(shù)據(jù)一致性,性能監(jiān)控击你。
對(duì)了玉组,更多 Java相關(guān)的文章可以關(guān)注微信公眾號(hào)Java后端,回復(fù) 666 下載丁侄。
7. eureka和zookeeper都可以提供服務(wù)注冊與發(fā)現(xiàn)的功能惯雳,請說說兩個(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í)過長,雖然最終能夠恢復(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) 依賴于 微服務(wù)慎陵,是在微服務(wù)基礎(chǔ)之上的掏秩。
例如:上面已經(jīng)列舉了什么是微服務(wù)。在醫(yī)院里荆姆,每一個(gè)科室都是一個(gè)獨(dú)立的微服務(wù),那么 這個(gè)醫(yī)院 就是 一個(gè)大型的微服務(wù)架構(gòu)映凳,就類似 院長 可以 對(duì)下面的 科室進(jìn)行管理胆筒。微服務(wù)架構(gòu)主要就是這種功能。