Spring Cloud架構(gòu)說明

架構(gòu)圖1

架構(gòu)圖1

架構(gòu)圖2

架構(gòu)圖2

名詞理解:

1、Nginx

用來做反向代理戴质、負(fù)載均衡度宦,當(dāng)有請求的時候,根據(jù)配置的調(diào)度策略(加權(quán)輪詢置森、IP哈希斗埂、最少連接數(shù)符糊、一致性哈希)給請求者返回相應(yīng)的服務(wù)器IP凫海。

2、Zuul服務(wù)網(wǎng)關(guān)

zuul的核心是一系列的filters, 其作用可以類比Servlet框架的Filter
Zuul的主要功能是路由和過濾器男娄。是各種服務(wù)的統(tǒng)一入口行贪,同時還會用來提供監(jiān)控漾稀、授權(quán)、安全建瘫、調(diào)度等等崭捍;可以通過擴(kuò)展ZuulFilter,在執(zhí)行方法之前啰脚,做各種檢查工作殷蛇。

3、Ribbon客戶端負(fù)載均衡

Spring Cloud Ribbon是一個基于HTTP和TCP的客戶端負(fù)載均衡工具橄浓,它基于Netflix Ribbon實現(xiàn)粒梦。通過Spring Cloud的封裝,可以讓我們輕松地將面向服務(wù)的REST模版請求自動轉(zhuǎn)換成客戶端負(fù)載均衡的服務(wù)調(diào)用荸实。Spring Cloud Ribbon雖然只是一個工具類框架匀们,它不像服務(wù)注冊中心、配置中心准给、API網(wǎng)關(guān)那樣需要獨(dú)立部署泄朴,但是它幾乎存在于每一個Spring Cloud構(gòu)建的微服務(wù)和基礎(chǔ)設(shè)施中。因為微服務(wù)間的調(diào)用露氮,API網(wǎng)關(guān)的請求轉(zhuǎn)發(fā)等內(nèi)容祖灰,實際上都是通過Ribbon來實現(xiàn)的,包括后續(xù)我們將要介紹的Feign畔规,它也是基于Ribbon實現(xiàn)的工具夫植。所以,對Spring Cloud Ribbon的理解和使用油讯,對于我們使用Spring Cloud來構(gòu)建微服務(wù)非常重要详民。

4、Feign

Feign是一個聲明性web服務(wù)客戶端陌兑。它使編寫web服務(wù)客戶機(jī)變得更容易沈跨。要使用Feign創(chuàng)建一個接口并對其進(jìn)行注釋。它具有可插入的注釋支持兔综,包括偽注釋和JAX-RS注釋饿凛。Feign還支持可插拔的編碼器和解碼器。Spring Cloud增加了對Spring MVC注釋的支持软驰,并支持使用在Spring Web中默認(rèn)使用的相同httpmessageconverter涧窒。Spring Cloud集成Ribbon和Eureka,在使用Feign時提供負(fù)載均衡的http客戶端锭亏。

5纠吴、Sleuth-鏈路跟蹤

為服務(wù)之間調(diào)用提供鏈路追蹤。通過Sleuth可以很清楚的了解到一個服務(wù)請求經(jīng)過了哪些服務(wù)慧瘤,每個服務(wù)處理花費(fèi)了多長戴已。從而讓我們可以很方便的理清各微服務(wù)間的調(diào)用關(guān)系固该。

6、斷路器(Hystrix)

在微服務(wù)架構(gòu)中糖儡,根據(jù)業(yè)務(wù)來拆分成一個個的服務(wù)伐坏,服務(wù)與服務(wù)之間可以相互調(diào)用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign來調(diào)用握联。為了保證其高可用桦沉,單個服務(wù)通常會集群部署。由于網(wǎng)絡(luò)原因或者自身的原因金闽,服務(wù)并不能保證100%可用永部,如果單個服務(wù)出現(xiàn)問題,調(diào)用這個服務(wù)就會出現(xiàn)線程阻塞呐矾,此時若有大量的請求涌入苔埋,Servlet容器的線程資源會被消耗完畢,導(dǎo)致服務(wù)癱瘓蜒犯。服務(wù)與服務(wù)之間的依賴性组橄,故障會傳播,會對整個微服務(wù)系統(tǒng)造成災(zāi)難性的嚴(yán)重后果罚随,這就是服務(wù)故障的“雪崩”效應(yīng)玉工。Netflix開源了Hystrix組件,實現(xiàn)了斷路器模式淘菩,SpringCloud對這一組件進(jìn)行了整合

7遵班、Turbine集群監(jiān)控

Turbine 是聚合服務(wù)器發(fā)送事件流數(shù)據(jù)的一個工具,用來監(jiān)控集群下 hystrix 的 metrics 情況潮改。
通過turbine可以監(jiān)控集群的請求量兵钮,可以知道系統(tǒng)的請求高峰期雏赦,從而更好的知道系統(tǒng)的短板在哪里。

8、Consul服務(wù)治理 和Eureka服務(wù)治理

由于Spring Cloud為服務(wù)治理做了一層抽象接口垃喊,所以在Spring Cloud應(yīng)用中可以支持多種不同的服務(wù)治理框架尖淘,比如:Netflix Eureka颈将、Consul驹针、Zookeeper。
Spring Cloud Consul項目是針對Consul的服務(wù)治理實現(xiàn)阿蝶。Consul是一個分布式高可用的系統(tǒng)雳锋,它包含多個組件,但是作為一個整體羡洁,在微服務(wù)架構(gòu)中為我們的基礎(chǔ)設(shè)施提供服務(wù)發(fā)現(xiàn)和服務(wù)配置的工具玷过。它包含了下面幾個特性: 服務(wù)發(fā)現(xiàn)、 健康檢查、 Key/Value存儲冶匹、 多數(shù)據(jù)中心习劫。由于Consul自身提供了服務(wù)端咆瘟,所以我們不需要像之前實現(xiàn)Eureka的時候創(chuàng)建服務(wù)注冊中心嚼隘,直接通過下載consul的服務(wù)端程序就可以使用。Consul比Eureka注冊支持的更多一些袒餐。

9飞蛹、config配置管理

引入spring cloud config后,我們的外部配置文件就可以集中放置在一個git倉庫里灸眼,再新建一個config server卧檐,用來管理所有的配置文件,維護(hù)的時候需要更改配置時焰宣,只需要在本地更改后霉囚,推送到遠(yuǎn)程倉庫,所有的服務(wù)實例都可以通過config server來獲取配置文件匕积,這時每個服務(wù)實例就相當(dāng)于配置服務(wù)的客戶端config client,為了保證系統(tǒng)的穩(wěn)定盈罐,配置服務(wù)端config server可以進(jìn)行集群部署

什么是微服務(wù)(Microservice)

微服務(wù)英文名稱Microservice,Microservice架構(gòu)模式就是將整個Web應(yīng)用組織為一系列小的Web服務(wù)闪唆。這些小的Web服務(wù)可以獨(dú)立地編譯及部署盅粪,并通過各自暴露的API接口相互通訊。它們彼此相互協(xié)作悄蕾,作為一個整體為用戶提供功能票顾,卻可以獨(dú)立地進(jìn)行擴(kuò)。

微服務(wù)架構(gòu)需要的功能或使用場景

1:我們把整個系統(tǒng)根據(jù)業(yè)務(wù)拆分成幾個子系統(tǒng)帆调。

2:每個子系統(tǒng)可以部署多個應(yīng)用奠骄,多個應(yīng)用之間使用負(fù)載均衡。

3:需要一個服務(wù)注冊中心番刊,所有的服務(wù)都在注冊中心注冊戚揭,負(fù)載均衡也是通過在注冊中心注冊的服務(wù)來使用一定策略來實現(xiàn)。

4:所有的客戶端都通過同一個網(wǎng)關(guān)地址訪問后臺的服務(wù)撵枢,通過路由配置民晒,網(wǎng)關(guān)來判斷一個URL請求由哪個服務(wù)處理。請求轉(zhuǎn)發(fā)到服務(wù)上的時候也使用負(fù)載均衡锄禽。

5:服務(wù)之間有時候也需要相互訪問潜必。例如有一個用戶模塊,其他服務(wù)在處理一些業(yè)務(wù)的時候沃但,要獲取用戶服務(wù)的用戶數(shù)據(jù)磁滚。

6:需要一個斷路器,及時處理服務(wù)調(diào)用時的超時和錯誤,防止由于其中一個服務(wù)的問題而導(dǎo)致整體系統(tǒng)的癱瘓垂攘。

7:還需要一個監(jiān)控功能维雇,監(jiān)控每個服務(wù)調(diào)用花費(fèi)的時間等。

目前主流的微服務(wù)框架:Dubbo晒他、 SpringCloud吱型、thrift、Hessian等陨仅,目前國內(nèi)的中小企業(yè)用的大多數(shù)都是Dubbo津滞,SpringCloud。

SpringCloud項目簡介

springCloud是基于SpringBoot的一整套實現(xiàn)微服務(wù)的框架灼伤。他提供了微服務(wù)開發(fā)所需的配置管理触徐、服務(wù)發(fā)現(xiàn)、斷路器狐赡、智能路由撞鹉、微代理、控制總線颖侄、全局鎖鸟雏、決策競選、分布式會話和集群狀態(tài)管理等組件发皿。最重要的是崔慧,

跟spring boot框架一起使用的話,會讓你開發(fā)微服務(wù)架構(gòu)的云服務(wù)非常好的方便穴墅。

SpringBoot旨在簡化創(chuàng)建產(chǎn)品級的 Spring 應(yīng)用和服務(wù)惶室,簡化了配置文件,使用嵌入式web服務(wù)器玄货,含有諸多開箱即用微服務(wù)功能

spring cloud子項目包括:

Spring Cloud Config:配置管理開發(fā)工具包皇钞,可以讓你把配置放到遠(yuǎn)程服務(wù)器,目前支持本地存儲松捉、Git以及Subversion夹界。

Spring Cloud Bus:事件、消息總線隘世,用于在集群(例如可柿,配置變化事件)中傳播狀態(tài)變化,可與Spring Cloud Config聯(lián)合實現(xiàn)熱部署丙者。

Spring Cloud Netflix:針對多種Netflix組件提供的開發(fā)工具包复斥,其中包括Eureka、Hystrix械媒、Zuul目锭、Archaius等评汰。

Netflix Eureka:云端負(fù)載均衡,一個基于 REST 的服務(wù)痢虹,用于定位服務(wù)被去,以實現(xiàn)云端的負(fù)載均衡和中間層服務(wù)器的故障轉(zhuǎn)移。

Netflix Hystrix:容錯管理工具奖唯,旨在通過控制服務(wù)和第三方庫的節(jié)點,從而對延遲和故障提供更強(qiáng)大的容錯能力惨缆。

Netflix Zuul:邊緣服務(wù)工具,是提供動態(tài)路由臭埋,監(jiān)控踪央,彈性臀玄,安全等的邊緣服務(wù)瓢阴。

Netflix Archaius:配置管理API,包含一系列配置管理API健无,提供動態(tài)類型化屬性荣恐、線程安全配置操作、輪詢框架累贤、回調(diào)機(jī)制等功能叠穆。

Spring Cloud for Cloud Foundry:通過Oauth2協(xié)議綁定服務(wù)到CloudFoundry,CloudFoundry是VMware推出的開源PaaS云平臺臼膏。

Spring Cloud Sleuth:日志收集工具包硼被,封裝了Dapper,Zipkin和HTrace操作。

Spring Cloud Data Flow:大數(shù)據(jù)操作工具渗磅,通過命令行方式操作數(shù)據(jù)流嚷硫。

Spring Cloud Security:安全工具包,為你的應(yīng)用程序添加安全控制始鱼,主要是指OAuth2仔掸。

Spring Cloud Consul:封裝了Consul操作,consul是一個服務(wù)發(fā)現(xiàn)與配置工具医清,與Docker容器可以無縫集成起暮。

Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服務(wù)注冊和發(fā)現(xiàn)会烙。

Spring Cloud Stream:數(shù)據(jù)流操作開發(fā)包负懦,封裝了與Redis,Rabbit、Kafka等發(fā)送接收消息柏腻。

Spring Cloud CLI:基于 Spring Boot CLI纸厉,可以讓你以命令行方式快速建立云組件。

SpringCloud特點

1:約定優(yōu)于配置

2:開箱即用葫盼、快速啟動

3:適用于各種環(huán)境

4:輕量級的組件

5:組件支持豐富残腌,功能齊全

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子抛猫,更是在濱河造成了極大的恐慌蟆盹,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闺金,死亡現(xiàn)場離奇詭異逾滥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)败匹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門寨昙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人掀亩,你說我怎么就攤上這事舔哪。” “怎么了槽棍?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵捉蚤,是天一觀的道長。 經(jīng)常有香客問我炼七,道長缆巧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任豌拙,我火速辦了婚禮陕悬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘按傅。我一直安慰自己捉超,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布逞敷。 她就那樣靜靜地躺著狂秦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪推捐。 梳的紋絲不亂的頭發(fā)上裂问,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機(jī)與錄音牛柒,去河邊找鬼堪簿。 笑死,一個胖子當(dāng)著我的面吹牛皮壁,可吹牛的內(nèi)容都是我干的椭更。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼蛾魄,長吁一口氣:“原來是場噩夢啊……” “哼虑瀑!你這毒婦竟也來了湿滓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤舌狗,失蹤者是張志新(化名)和其女友劉穎叽奥,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體痛侍,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡朝氓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了主届。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赵哲。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖君丁,靈堂內(nèi)的尸體忽然破棺而出枫夺,到底是詐尸還是另有隱情,我是刑警寧澤谈截,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布筷屡,位于F島的核電站涧偷,受9級特大地震影響簸喂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜燎潮,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一喻鳄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧确封,春花似錦除呵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至秉剑,卻和暖如春泛豪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背侦鹏。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工诡曙, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人略水。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓价卤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親渊涝。 傳聞我的和親對象是個殘疾皇子慎璧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 微服務(wù)架構(gòu)模式的核心在于如何識別服務(wù)的邊界床嫌,設(shè)計出合理的微服務(wù)。但如果要將微服務(wù)架構(gòu)運(yùn)用到生產(chǎn)項目上胸私,并且能夠發(fā)揮...
    java菜閱讀 2,942評論 0 6
  • 微服務(wù)架構(gòu)模式的核心在于如何識別服務(wù)的邊界既鞠,設(shè)計出合理的微服務(wù)。但如果要將微服務(wù)架構(gòu)運(yùn)用到生產(chǎn)項目上盖文,并且能夠發(fā)揮...
    程序員技術(shù)圈閱讀 2,777評論 10 27
  • 1 為什么需要服務(wù)發(fā)現(xiàn) 簡單來說嘱蛋,服務(wù)化的核心就是將傳統(tǒng)的一站式應(yīng)用根據(jù)業(yè)務(wù)拆分成一個一個的服務(wù),而微服務(wù)在這個基...
    謙小易閱讀 25,080評論 4 93
  • 今天忽然發(fā)現(xiàn)五续,簡書竟然是在2015年1月注冊的洒敏,但是,我卻始終沒有好好地去看他疙驾,更沒有用他來提高自己凶伙,這是自己放縱...
    巴山夜雨十年燈閱讀 158評論 0 1
  • 一人一劇 即興表演 很難用語言描述它的魅力 2018年1月3日晚7點到8點30 天氣寒冷 可是有一個地方 正在表演...
    水天一色飛飛閱讀 220評論 0 0