javascript
关于SpringCloud、SpringBoot 希望这是说得最详细的
幾年前,沒幾個(gè)jar沖突一下都不叫搭框架 —— java面試必修
什么是Spring Boot
用我的話來理解,Spring Boot就是整合了框架的框架,它讓一切依賴都變得有序簡單,你不用操心A.jar是什么版本,又依賴哪些版本的jar,它默認(rèn)配置了很多框架的使用方式,就像 maven整合了所有的jar包,Spring Boot整合了所有的框架,第三方庫的功能你拿著就能用。
Spring Boot的核心思想就是約定大于配置,一切由內(nèi)定的約束來自動(dòng)完成。采用 Spring Boot可以大大的簡化你的開發(fā)模式,節(jié)省大部分照搬照抄的成本,通過少量的代碼就能創(chuàng)建一個(gè)獨(dú)立的,它都有對(duì)應(yīng)的組件支持。
它是由 Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡化新 Spring應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進(jìn)行配置,從而使開發(fā)人員不再需要定義樣板化的配置。
什么是Spring Cloud
Spring Cloud是一套分布式服務(wù)治理的框架,既然它是一套服務(wù)治理的框架,那么它本身不會(huì)提供具體功能性的操作,更專注于服務(wù)之間的通訊、熔斷、監(jiān)控等。因此就需要很多的組件來支持一套功能。
微服務(wù)是可以獨(dú)立部署、水平擴(kuò)展、獨(dú)立訪問(或者有獨(dú)立的數(shù)據(jù)庫)的服務(wù)單元, Spring Cloud就是這些微服務(wù)的大管家,采用了微服務(wù)這種架構(gòu)之后,項(xiàng)目的數(shù)量會(huì)非常多, Spring Cloud做為大管家就需要提供各種方案來維護(hù)整個(gè)生態(tài)。
SpringColoud的小弟們
小弟們可是非常多,就像梁山108好漢那樣
默默無聞服務(wù)
融合在每個(gè)微服務(wù)中、依賴其它組件并為其提供服務(wù)。
-
Ribbon,客戶端負(fù)載均衡,特性有區(qū)域親和、重試機(jī)制。
-
Hystrix,客戶端容錯(cuò)保護(hù),特性有服務(wù)降級(jí)、服務(wù)熔斷、請(qǐng)求緩存、請(qǐng)求合并、依賴隔離。
-
Feign,聲明式服務(wù)調(diào)用,本質(zhì)上就是Ribbon+Hystrix
-
Stream,消息驅(qū)動(dòng),有Sink、Source、Processor三種通道,特性有訂閱發(fā)布、消費(fèi)組、消息分區(qū)。
-
Bus,消息總線,配合Config倉庫修改的一種Stream實(shí)現(xiàn),
- Sleuth,分布式服務(wù)追蹤,需要搞清楚TraceID和SpanID以及抽樣,如何與ELK整合。
利刃獨(dú)挑大梁
獨(dú)自啟動(dòng)不需要依賴其它組件,單槍匹馬都能干。
-
Eureka,服務(wù)注冊中心,特性有失效剔除、服務(wù)保護(hù)。
-
Dashboard,Hystrix儀表盤,監(jiān)控集群模式和單點(diǎn)模式,其中集群模式需要收集器Turbine配合。
-
Zuul,API服務(wù)網(wǎng)關(guān),功能有路由分發(fā)和過濾。
- Config,分布式配置中心,支持本地倉庫、SVN、Git、Jar包內(nèi)配置等模式,
各司其職
每個(gè)組件都不是平白無故的產(chǎn)生的,是為了解決某一特定的問題而存在。
-
Eureka和Ribbon,是最基礎(chǔ)的組件,一個(gè)注冊服務(wù),一個(gè)消費(fèi)服務(wù)。
-
Hystrix為了優(yōu)化Ribbon、防止整個(gè)微服務(wù)架構(gòu)因?yàn)槟硞€(gè)服務(wù)節(jié)點(diǎn)的問題導(dǎo)致崩潰,是個(gè)保險(xiǎn)絲的作用。
-
Dashboard給Hystrix統(tǒng)計(jì)和展示用的,而且監(jiān)控服務(wù)節(jié)點(diǎn)的整體壓力和健康情況。
-
Turbine是集群收集器,服務(wù)于Dashboard的。
-
Feign是方便我們程序員些更優(yōu)美的代碼的。
-
Zuul是加在整個(gè)微服務(wù)最前沿的防火墻和代理器,隱藏微服務(wù)結(jié)點(diǎn)IP端口信息,加強(qiáng)安全保護(hù)的。
-
Config是為了解決所有微服務(wù)各自維護(hù)各自的配置,設(shè)置一個(gè)同意的配置中心,方便修改配置的。
-
Bus是因?yàn)閏onfig修改完配置后各個(gè)結(jié)點(diǎn)都要refresh才能生效實(shí)在太麻煩,所以交給bus來通知服務(wù)節(jié)點(diǎn)刷新配置的。
-
Stream是為了簡化研發(fā)人員對(duì)MQ使用的復(fù)雜度,弱化MQ的差異性,達(dá)到程序和MQ松耦合。
- Sleuth是因?yàn)閱未握?qǐng)求在微服務(wù)節(jié)點(diǎn)中跳轉(zhuǎn)無法追溯,解決任務(wù)鏈日志追蹤問題的。
特殊成員Zipkin,之所以特殊是因?yàn)閺膉ar包和包名來看它不屬于Spring Cloud的一員,但是它與Spring Cloud Sleuth的抽樣日志結(jié)合的天衣無縫。乍一看它與Hystrix的Dashboard作用有重疊的部分,但是他們的側(cè)重點(diǎn)完全不同。Dashboard側(cè)重的是單個(gè)服務(wù)的統(tǒng)計(jì)和是否可用,Zipkin側(cè)重的監(jiān)控環(huán)節(jié)時(shí)長。簡言之,Dashboard側(cè)重故障診斷,Ziokin側(cè)重性能優(yōu)化。
與SpringCloud區(qū)別
通俗的說,SpringBoot是構(gòu)建單個(gè)服務(wù)的快速架構(gòu),比如它是全家桶中的1個(gè)漢堡,SpringCloud是關(guān)注全局的微服務(wù)協(xié)調(diào)整理治理框架,類似于組成多個(gè)服務(wù)的全家桶,桶里面不光有漢堡,還有薯?xiàng)l,還有番茄醬,那現(xiàn)在我要給漢堡加點(diǎn)番茄醬,它就更好吃了,意思就是SpringBoot可以配合全家桶中的這些工具組成一個(gè)強(qiáng)大的微服務(wù)體系,有點(diǎn)類似于Collection和Collections。
作者有話說:喜歡的話就請(qǐng)移步Java面試必修網(wǎng),請(qǐng)自備水,更多干、干、干貨等著你
轉(zhuǎn)載于:https://blog.51cto.com/14010905/2296354
總結(jié)
以上是生活随笔為你收集整理的关于SpringCloud、SpringBoot 希望这是说得最详细的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 锁屏壁纸时钟,桌面锁屏时
- 下一篇: Eclipse查找文件存储路径