摘要:系統(tǒng)中的各個(gè)微服務(wù)可被獨(dú)立部署,各個(gè)微服務(wù)之間是松耦合的。每個(gè)微服務(wù)僅關(guān)注于完成一件任務(wù)并很好地完成該任務(wù)。傳統(tǒng)架構(gòu)升級(jí)困難。新的輕量級(jí)協(xié)議容器化的出現(xiàn)。熔斷處理在微服務(wù)出現(xiàn)問(wèn)題時(shí)防止出現(xiàn)雪崩效應(yīng)。
聊完Spring Boot,我們來(lái)看看Spring Boot最重要的一方面的應(yīng)用——Spring Cloud。Spring Cloud
再聊SpringCloud之前我們先聊聊微服務(wù)。
什么是微服務(wù)?微服務(wù)(Micro Service):微服務(wù)是一種架構(gòu)風(fēng)格,一個(gè)大型復(fù)雜軟件應(yīng)用由一個(gè)或多個(gè)微服務(wù)組成。系統(tǒng)中的各個(gè)微服務(wù)可被獨(dú)立部署,各個(gè)微服務(wù)之間是松耦合的。每個(gè)微服務(wù)僅關(guān)注于完成一件任務(wù)并很好地完成該任務(wù)。在所有情況下,每個(gè)任務(wù)代表著一個(gè)小的業(yè)務(wù)能力。微服務(wù)為什么會(huì)出現(xiàn)?
大型整體式應(yīng)用維護(hù)困難。
傳統(tǒng)架構(gòu)升級(jí)困難。
新的輕量級(jí)協(xié)議(RESTful)、容器化(Docker)的出現(xiàn)。
說(shuō)完了什么是微服務(wù),我們?cè)陂_(kāi)來(lái)看Spring Cloud。
什么是Spring Cloud?提到spring Cloud 大家可能以為他是和云計(jì)算相關(guān)的框架。其實(shí)不是,Spring Cloud是一套用于微服務(wù)的、簡(jiǎn)單易懂、易部署和易維護(hù)的分布式系統(tǒng)開(kāi)發(fā)工具包。
它利用Spring Boot的開(kāi)發(fā)便利性巧妙地簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開(kāi)發(fā),如服務(wù)發(fā)現(xiàn)注冊(cè)、配置中心、消息總線、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控等,都可以用Spring Boot的開(kāi)發(fā)風(fēng)格做到一鍵啟動(dòng)和部署。
Eureka(注冊(cè)中心):負(fù)責(zé)所有微服務(wù)的管理。
Ribbon(服務(wù)發(fā)現(xiàn)):主要負(fù)責(zé)客戶端的負(fù)載均衡
Feign(接口偽裝):使微服務(wù)之間的調(diào)用像本地調(diào)用一樣簡(jiǎn)單。
Hystrix(熔斷處理):在微服務(wù)出現(xiàn)問(wèn)題時(shí)防止出現(xiàn)雪崩效應(yīng)。
Zuul(代理機(jī)制):安全認(rèn)證、動(dòng)態(tài)路由、流量管理、服務(wù)器負(fù)載均衡
Config(配置管理):管理所有微服務(wù)的配置文件(GIT/SVN)。
具體的實(shí)現(xiàn)流程如下:
將使用Spring Boot寫(xiě)的用戶微服務(wù)注冊(cè)于Eureka,使其受Eureka統(tǒng)一的調(diào)度管理。
在Eureka外部再包裹一個(gè)Ribbon組件,再用戶去訪問(wèn)用戶微服務(wù)的時(shí)候,由Ribbon負(fù)責(zé)多個(gè)用戶微服務(wù)之間的負(fù)載均衡。Ribbon有一個(gè)‘心跳’機(jī)制,去檢測(cè)用戶微服務(wù)的狀態(tài),在用戶微服務(wù)出現(xiàn)問(wèn)題時(shí)能夠及時(shí)發(fā)現(xiàn),并處理。
在Ribbon的外層,還有一個(gè)feign組件用于給微服務(wù)做接口偽裝,有了feign在用戶調(diào)用微服務(wù)時(shí)就像調(diào)用本地的接口一樣簡(jiǎn)單,完全隱藏了微服務(wù)的存在。
再聊Hystrix之前,我們的先聊一下什么是雪崩效應(yīng)?以及它有什么危害?先來(lái)看一張微服務(wù)之間相互調(diào)用的關(guān)系圖:
假如說(shuō)用戶希望調(diào)用一下微服務(wù)A,微服務(wù)A又會(huì)調(diào)用微服務(wù)B,微服務(wù)B又會(huì)去調(diào)用微服務(wù)C,這時(shí)候微服務(wù)C出現(xiàn)故障,不能被使用了,如果沒(méi)有Hystrix,微服務(wù)B所有的調(diào)用微服務(wù)C的線程都會(huì)阻塞,直到把微服務(wù)B給拖垮,微服務(wù)B一掛,那么微服務(wù)A和微服務(wù)Y也就掛了。最后微服務(wù)X也掛了。這就是雪崩效應(yīng)。Hystrix就是用來(lái)解決這個(gè)問(wèn)題的,假如有了Hystrix,微服務(wù)B在調(diào)用微服務(wù)C出現(xiàn)問(wèn)題,線程并不會(huì)一直等待,而是直接調(diào)用微服務(wù)B的一個(gè)CallBack的回調(diào)方法,直接給微服務(wù)A返回一個(gè)錯(cuò)誤消息。再過(guò)一段時(shí)間之后,微服務(wù)B會(huì)再次嘗試調(diào)用微服務(wù)C看微服務(wù)C是否已經(jīng)恢復(fù)。這就給了整個(gè)微服務(wù)的集群一個(gè)自我恢復(fù)的能力。
Zuul就是一個(gè)微服務(wù)的代理,我們前面說(shuō)到的代理能干的事它都能干。
Config是用于微服務(wù)的配置文件管理的,雖然在Spring Boot的加持下微服務(wù)的配置文件已經(jīng)很少了,但是,在成百上千的微服務(wù)集群中,配置文件還是應(yīng)該有一個(gè)組件統(tǒng)一管理和部署。Config使用SVN或者GIT做到配置文件的統(tǒng)一管理,還是十分的方便。
當(dāng)然Spring Cloud不僅僅只有這幾個(gè)工具,其他更有用的工具要靠大家自己發(fā)掘了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68177.html
摘要:通過(guò)我們可以更輕松地入門(mén),更簡(jiǎn)單的使用的框架。團(tuán)隊(duì)為了擺脫框架中各類(lèi)繁復(fù)紛雜的配置,使用約定優(yōu)于配置的思想,在基礎(chǔ)上整合了大量常用的第三方庫(kù)的開(kāi)發(fā)框架。這里還要說(shuō)的一點(diǎn),的出現(xiàn)并不是單純的為了簡(jiǎn)化開(kāi)發(fā),更是為做鋪墊。 說(shuō)完了Spring 我們來(lái)聊聊Spring的進(jìn)階版Spring Boot,如果你還不知道Spring Boot,那希望這篇文章能夠?yàn)槟阒该鞣较颉?Spring Boot ...
摘要:是結(jié)構(gòu)在框架中的一種表現(xiàn)形式。這句話聽(tīng)起來(lái)有點(diǎn)繞,我們可以看一下下面這張圖,大家可以吧容器中的理解為全局變量,吧容器中的理解為局部變量。在方法體中可以訪問(wèn)局部變量和全局變量,但是在方法外,就只能訪問(wèn)全局變量,是不能訪問(wèn)局部變量的。 聊完了Spring,我們來(lái)看看Spring在web方面的應(yīng)用Spring MVC。 MVC 首先我們來(lái)看什么是mvc? 大家知道在jsp里面也是可以寫(xiě)jav...
摘要:模塊負(fù)責(zé)的所有面向切面的功能??偨Y(jié)的統(tǒng)一管理,降低了對(duì)象之間的耦合對(duì)主流的框架提供了很好的集成支持提供眾多組件,事務(wù)管理,等具有高度可開(kāi)放性,開(kāi)發(fā)者可以自由選擇部分或全部主要使用工廠模式和代理模式。 聊完了Spring框架中最重要的兩種設(shè)計(jì)模式,我們來(lái)看一下Spring框架的模塊和結(jié)構(gòu)圖。 Spring框架的結(jié)構(gòu) 下圖是Spring官方給出的Spring框架的結(jié)構(gòu)圖。 showImg(...
摘要:聊完了工廠模式,下面我們來(lái)說(shuō)框架中的另一個(gè)核心設(shè)計(jì)模式代理模式。這里的外賣(mài)小哥就相當(dāng)于是我們的代理。主要分為代理和代理。 聊完了工廠模式,下面我們來(lái)說(shuō)Spring框架中的另一個(gè)核心設(shè)計(jì)模式——代理模式(Proxy Pattern)。 代理模式 大家可以先不用看概念,先舉個(gè)吃飯的例子:比如說(shuō)我們想吃飯,我們可以選擇自己做飯吃、去飯店吃、叫外賣(mài)吃。如果我們選擇自己做著吃,我們就需要去買(mǎi)菜、...
摘要:相對(duì)于工廠模式,抽象工廠模式生產(chǎn)的對(duì)象更加具體,也更加豐富,但相對(duì)編碼也更加復(fù)雜。具體的抽象工廠模式的實(shí)現(xiàn)大家可以參考菜鳥(niǎo)教程。知道了工廠模式和抽象工廠模式的區(qū)別,請(qǐng)大家使用的時(shí)候應(yīng)該根據(jù)具體的情況進(jìn)行選擇。 大家好,今天給大家分享一些Spring的學(xué)習(xí)心得,在講Spring之前,先和大家分享Spring中核心的設(shè)計(jì)模式。 工廠模式 在聊概念之前我先問(wèn)問(wèn)大家:什么是工廠? 這個(gè)很簡(jiǎn)單,...
閱讀 3997·2021-11-22 15:31
閱讀 2540·2021-11-18 13:20
閱讀 3118·2021-11-15 11:37
閱讀 7053·2021-09-22 15:59
閱讀 750·2021-09-13 10:27
閱讀 3787·2021-09-09 09:33
閱讀 1450·2019-08-30 15:53
閱讀 2572·2019-08-29 15:37