Srping Cloud學習筆記
常見面試題
-
什么是微服務(wù)由境?
-
概述
微服務(wù)化的核心就是將傳統(tǒng)的一站式應(yīng)用,根據(jù)業(yè)務(wù)(技術(shù))拆分成一個個的服務(wù),徹底地去耦合虏杰,每個微服務(wù)提供單個業(yè)務(wù)功能讥蟆,一個服務(wù)做一件事,
從技術(shù)維度理解纺阔,就是一種小而獨立的處理過程瘸彤,類似進程概念,能夠自行單獨啟動或銷毀笛钝,甚至擁有自己獨立地數(shù)據(jù)庫钧栖。
強調(diào)的是服務(wù)的大小,關(guān)注的是某一個點婆翔,是具體解決某個問題拯杠、提供落地對應(yīng)服務(wù)的一個服務(wù)應(yīng)用。
-
微服務(wù)架構(gòu)
微服務(wù)架構(gòu)是一種架構(gòu)模式或者說是一種架構(gòu)風格啃奴,它提倡將單一應(yīng)用程序劃分成一組小的服務(wù)潭陪,實現(xiàn)解耦、分布式最蕾、高可用依溯、可拓展、分工協(xié)作瘟则、多語言黎炉。
由多個微服程序組成,每個微服務(wù)運行在自己的獨立的進程中醋拧,服務(wù)之間能夠相互協(xié)調(diào)慷嗜,相互配合,為用戶提供最終價值丹壕。
服務(wù)之間采用輕量級的通訊機制互相溝通(通常是基于HTTP的RESTful API)
每個服務(wù)都圍繞著具體業(yè)務(wù)來進行構(gòu)建庆械,并且能夠獨立地部署在生產(chǎn)環(huán)境中。
-
-
微服務(wù)之間是如何通訊的菌赖?
Rest
RPC
-
SpringCloud 與 Dubbo有哪些區(qū)別缭乘?
-
服務(wù)之間的通訊機制不同
SpringCloud 是基于HTTP的REST
Dubbo 是基于RPC
-
SpringBoot 和 SpringCloud,請你談?wù)剬λ麄兊睦斫?/p>
-
什么事服務(wù)熔斷琉用?什么事服務(wù)降級堕绩?
-
服務(wù)熔斷
Hystrix
避免雪崩效應(yīng),在服務(wù)請求超時或者異常的時候邑时,及時返回一個預(yù)留的響應(yīng)奴紧,并且在之后的短時間內(nèi)不在接收請求。
-
服務(wù)降級
- 結(jié)合Feign來使用刁愿,在服務(wù)請求超時或者異常的時候绰寞,及時返回一個預(yù)留的響應(yīng)到逊,并且在之后的短時間內(nèi)接收請求都將返回這個預(yù)留的響應(yīng)铣口。
-
-
微服務(wù)的優(yōu)缺點分別是什么滤钱?說下你在項目開發(fā)中碰到的坑
-
優(yōu)點:
每個服務(wù)足夠內(nèi)聚,足夠小脑题,代碼容易理解件缸,這樣能聚焦一個指定的業(yè)務(wù)功能或者業(yè)務(wù)需求。
開發(fā)簡單叔遂、開發(fā)效率提高他炊,一個服務(wù)可能就是專一的只干一個事。
微服務(wù)能夠被小團隊單獨開發(fā)已艰,這個小團隊是2到5人的開發(fā)人員組成痊末。
微服務(wù)是松耦合的,是有功能意義的服務(wù)哩掺,無論是在開發(fā)階段還是在部署階段都市獨立的凿叠。
微服務(wù)能使用不同的語言開發(fā)。
易于與第三方集成嚼吞,微服務(wù)允許容易且靈活的方式集成自動部署盒件,通過持續(xù)集成工具,入Jekins舱禽、Hudson炒刁、Bamboo
微服務(wù)易于被一個開發(fā)人員理解,修改和維護誊稚,這樣小團隊能夠更關(guān)注自己的工作成果翔始。無需通過合作才能體現(xiàn)價值。
微服務(wù)允許利用融合最新技術(shù)
微服務(wù)只是業(yè)務(wù)邏輯的代碼里伯,不會和HTML绽昏、CSS或其他界面組件混合。
每個微服務(wù)都有自己的存儲能力俏脊,可以有自己的數(shù)據(jù)庫全谤,也可以有統(tǒng)一數(shù)據(jù)庫
-
缺點
開發(fā)人員要處理分布式系統(tǒng)的復(fù)雜性
多服務(wù)運維難度,隨服務(wù)的增加爷贫,運維的壓力也在增大
系統(tǒng)部署依賴认然,可能存在依賴關(guān)系,雖然能夠獨立運行漫萄,但是無法真正完成業(yè)務(wù)操作
服務(wù)間通訊成本
數(shù)據(jù)的一致性
系統(tǒng)集成檢測
性能監(jiān)控...
-
-
你所知道的微服務(wù)技術(shù)棧有哪些卷员?列舉一二
-
一套微服務(wù)架構(gòu)治理方案,多種框架技術(shù)的有序集合
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n310" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;">- 服務(wù)開發(fā) Springboot腾务、Spring毕骡、SpringMVC
- 服務(wù)配置與管理 Netflix公司的Archaius、阿里的Diamond等
- 服務(wù)注冊與發(fā)現(xiàn) Eureka、Consul未巫、Zookeeper等
- 服務(wù)調(diào)用 Rest窿撬、RPC、gRPC
- 服務(wù)熔斷器 Hystrix叙凡、Envoy等
- 負載均衡 Ribbon劈伴、Nginx等
- 服務(wù)接口調(diào)用(客戶端調(diào)用服務(wù)的簡化工具) Feign等
- 消息隊列 Kafka、RabbitMQ握爷、ActiveMQ等
- 服務(wù)配置中心管理 SpringCloudConfig跛璧、Chef等
- 服務(wù)路由(API網(wǎng)關(guān)) Zuul等
- 服務(wù)監(jiān)控 Zabbix、Nagios新啼、Metrics追城、Spectator等
- 全鏈路追蹤 Zipkin,Brave燥撞、Dapper等
- 服務(wù)部署 Docker漓柑、OpenStack、Kubernetes等
- 數(shù)據(jù)流操作開發(fā)包 SpringCloud Stream(封裝與Redis,Rabbit叨吮、Kafka等發(fā)送接收消息)
- 事件消息總線 Spring Cloud Bus
......</pre>
- 微服務(wù)技術(shù)棧有哪些
-
-
Eureka和Zookeeper都可以提供微服務(wù)注冊和發(fā)現(xiàn)的功能辆布,請說說兩個的區(qū)別?
-
Eureka是能保證CAP原理中的AP
availability可用性茶鉴、partition tolerance分區(qū)容錯性
因為高可用的Eureka集群琅捏,每個Eureka的節(jié)點里保存的信息都是一樣的聪建,只要保證任何一個節(jié)點能夠正常運行,就能保證服務(wù)的可用性。
當網(wǎng)絡(luò)出現(xiàn)異常的時候各吨,一個Eureka節(jié)點的服務(wù)注冊信息可能無法及時同步到其它節(jié)點号阿,只有當網(wǎng)絡(luò)恢復(fù)是才能恢復(fù)信息的同步争便,所以無法保證consistency一致性怎静。
-
Zookeeper只能保證CAP原理中的CP
consistency一致性、partition tolerance分區(qū)容錯性
因為高可用的Zookeeper集群舀瓢,采取的是主從模式廷雅,一般都是從節(jié)點,復(fù)制主節(jié)點的數(shù)據(jù)信息京髓,所以能保證數(shù)據(jù)的consistency一致性航缀。
但是當因為網(wǎng)絡(luò)異常,導致主節(jié)點與從節(jié)點失去連接時堰怨,從節(jié)點們會進行l(wèi)eader選舉芥玉,在從節(jié)點中選出新的主節(jié)點,這個過程較為緩慢备图,且這段時間服務(wù)是不可用的灿巧,這就導致這段時間的服務(wù)注冊于發(fā)現(xiàn)是無法執(zhí)行的赶袄,使服務(wù)喪失了availability可用性。
-
-
為什么使用SpringCloud
一套完整的微服務(wù)架構(gòu)治理方案抠藕,多種框架技術(shù)的有序集合
-
選型依據(jù)
整體解決方案和框架成熟度
社區(qū)熱度
可維護性
學習曲線
-
各大IT公司的微服務(wù)架構(gòu)有哪些
阿里 Dubbo / HSF
京東 JSF
新浪微博 Motan
當當網(wǎng) Dubbox
...
-
各微服務(wù)框架對比
- 各微服務(wù)框架對比
-
dubbo與cloud對比
- dubbo與cloud對比
SpringCloud概述
-
是什么
SpringCloud饿肺,是基于SpringBoot,提供的一套完整的微服務(wù)治理解決方案幢痘,包括服務(wù)注冊于發(fā)現(xiàn)唬格、配置中心家破、全鏈路監(jiān)控颜说、服務(wù)網(wǎng)關(guān)、負載均衡汰聋、熔斷器等組件门粪。除了基于NetFlix的開源組件做高度抽象封裝之外,還有一些選型中立的開源組件烹困。
分布式微服務(wù)架構(gòu)的一站式解決方案玄妈,是各個微服務(wù)架構(gòu)落地技術(shù)的集合體,俗稱微服務(wù)全家桶髓梅。
Ribbon負載均衡
-
概述:
類似于nginx
-
是什么
實現(xiàn)客戶端負載均衡的組件
主要功能:提供客戶端軟件的負載均衡算法拟蜻,將Netflix的中間層服務(wù)連接在一起。
Ribbon客戶端組件提供一系列完善的配置項枯饿,如:連接超時酝锅、重試等。
簡單來說奢方,就是在配置文件中列出Load Balancer(負載均衡)后面所有的機器搔扁,Ribbon會自動的幫助你基于某種規(guī)則(如:簡單輪詢,隨機連接)去連接這些機器蟋字。
我們?nèi)菀资褂肦ibbon實現(xiàn)自定義的負載均衡
Feign負載均衡
-
概述
是一個聲明式的Web服務(wù)客戶端稿蹲,是的編寫Web服務(wù)客戶端變得非常容易
只需要創(chuàng)建一個借口,然后在上面注解即可