Spring Cloud 基本概念

網(wǎng)站架構(gòu)演變過程
傳統(tǒng)架構(gòu)
傳統(tǒng)的 SSM、SSH 架構(gòu),分為三層架構(gòu)Web控制層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層。
傳統(tǒng)架構(gòu)也就是單點(diǎn)應(yīng)用,所有功能模塊全部堆放在一個(gè)工程中,業(yè)務(wù)沒有進(jìn)行拆分,一般適用于個(gè)人和小型團(tuán)隊(duì)開發(fā)。
這種架構(gòu)模式,一旦有一個(gè)模塊出問題,可能就會(huì)導(dǎo)致整個(gè)應(yīng)用程序奔潰。
分布式架構(gòu)
分布式架構(gòu)基于傳統(tǒng)架構(gòu)演變過來,將傳統(tǒng)的單體項(xiàng)目以項(xiàng)目模塊進(jìn)行拆分,拆分為會(huì)員項(xiàng)目、訂單項(xiàng)目、支付項(xiàng)目、優(yōu)惠券項(xiàng)目等,從而降低耦合度,這種項(xiàng)目架構(gòu)模式慢慢開始適合于互聯(lián)網(wǎng)公司規(guī)模人數(shù)開發(fā)。例如我們正在開發(fā)的項(xiàng)目就是采用這種架構(gòu)模式。
SOA
SOA架構(gòu)代表面向與服務(wù)架構(gòu),俗稱服務(wù)化,通俗的理解為面向與業(yè)務(wù)邏輯層開發(fā),將共同的業(yè)務(wù)邏輯抽取出來形成一個(gè)服務(wù),提供給其他服務(wù)接口進(jìn)行調(diào)用,服務(wù)與服務(wù)之間調(diào)用使用rpc遠(yuǎn)程技術(shù)。
SOA架構(gòu)特點(diǎn):
- SOA架構(gòu)中通常使用XML方式實(shí)現(xiàn)通訊,在高并發(fā)情況下XML比較冗余會(huì)帶來極大的影響,所以最后微服務(wù)架構(gòu)中采用JSON替代xml方式。
- SOA架構(gòu)的底層實(shí)現(xiàn)通過WebService和ESB(xml與中間件混合物),Web Service技術(shù)是SOA服務(wù)化的一種實(shí)現(xiàn)方式,WebService底層采用soap協(xié)議進(jìn)行通訊,soap協(xié)議就是Http或者是Https通道傳輸XML數(shù)據(jù)實(shí)現(xiàn)的協(xié)議。
微服務(wù)架構(gòu)
微服務(wù)架構(gòu)產(chǎn)生的原因
微服務(wù)架構(gòu)基于SOA架構(gòu)演變過來的
在傳統(tǒng)的WebService架構(gòu)中有如下問題:
- 依賴中心化服務(wù)發(fā)現(xiàn)機(jī)制
- 使用Soap通訊協(xié)議,通常使用XML格式來序列化通訊數(shù)據(jù),xml格式非常喜歡重,比較占寬帶傳輸。
- 服務(wù)化管理和 治理設(shè)施不完善
什么是微服務(wù)
微服務(wù)架是從SOA架構(gòu)演變過來,比SOA架構(gòu)粒度會(huì)更加精細(xì),讓專業(yè)的人去做專業(yè)的事情(專注),目的提高效率,每個(gè)服務(wù)于服務(wù)之間互不影響,微服務(wù)架構(gòu)中,每個(gè)服務(wù)必須獨(dú)立部署,互不影響,微服務(wù)架構(gòu)更加體現(xiàn)輕巧、輕量級(jí),是適合于互聯(lián)網(wǎng)公司敏捷開發(fā)。
微服務(wù)架構(gòu)特征
微服務(wù)架構(gòu)倡導(dǎo)應(yīng)用程序設(shè)計(jì)程多個(gè)獨(dú)立、可配置、可運(yùn)行和可微服務(wù)的子服務(wù)。
服務(wù)與服務(wù)通訊協(xié)議采用Http協(xié)議,使用restful風(fēng)格API形式來進(jìn)行通訊,數(shù)據(jù)交換格式輕量級(jí)json格式通訊,整個(gè)傳輸過程中,采用二進(jìn)制,所以http協(xié)議可以跨語言平臺(tái),并且可以和其他不同的語言進(jìn)行相互的通訊,所以很多開放平臺(tái)都采用http協(xié)議接口。
微服務(wù)架構(gòu)如何拆分
- 微服務(wù)把每一個(gè)職責(zé)單一功能存放在獨(dú)立的服務(wù)中
- 每個(gè)服務(wù)運(yùn)行在單獨(dú)的進(jìn)程中
- 每個(gè)服務(wù)有自己獨(dú)立數(shù)據(jù)庫存儲(chǔ)、實(shí)際上有自己獨(dú)立的緩存、數(shù)據(jù)庫、消息隊(duì)列等資源。
微服務(wù)架構(gòu)與SOA架構(gòu)的區(qū)別
- 微服務(wù)架構(gòu)基于 SOA架構(gòu) 演變過來,繼承 SOA架構(gòu)的優(yōu)點(diǎn),在微服務(wù)架構(gòu)中去除 SOA 架構(gòu)中的 ESB 消息總線,采用 http+json(restful)進(jìn)行傳輸。
- 微服務(wù)架構(gòu)比 SOA 架構(gòu)粒度會(huì)更加精細(xì),讓專業(yè)的人去做專業(yè)的事情(專注),目的提高效率,每個(gè)服務(wù)于服務(wù)之間互不影響,微服務(wù)架構(gòu)中,每個(gè)服務(wù)必須獨(dú)立部署,微服務(wù)架構(gòu)更加輕巧,輕量級(jí)。
- SOA 架構(gòu)中可能數(shù)據(jù)庫存儲(chǔ)會(huì)發(fā)生共享,微服務(wù)強(qiáng)調(diào)獨(dú)每個(gè)服務(wù)都是單獨(dú)數(shù)據(jù)庫,保證每個(gè)服務(wù)于服務(wù)之間互不影響。
- 項(xiàng)目體現(xiàn)特征微服務(wù)架構(gòu)比 SOA 架構(gòu)更加適合與互聯(lián)網(wǎng)公司敏捷開發(fā)、快速迭代版本,因?yàn)榱6确浅>?xì)。
Spring Cloud微服務(wù)框架
Spring Cloud 是什么?
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發(fā)便利性巧妙地簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā),如服務(wù)發(fā)現(xiàn)注冊(cè)、配置中心、消息總線、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控等,都可以用Spring Boot的開發(fā)風(fēng)格做到一鍵啟動(dòng)和部署。Spring Cloud并沒有重復(fù)制造輪子,它只是將目前各家公司開發(fā)的比較成熟、經(jīng)得起實(shí)際考驗(yàn)的服務(wù)框架組合起來,通過Spring Boot風(fēng)格進(jìn)行再封裝屏蔽掉了復(fù)雜的配置和實(shí)現(xiàn)原理,最終給開發(fā)者留出了一套簡(jiǎn)單易懂、易部署和易維護(hù)的分布式系統(tǒng)開發(fā)工具包。簡(jiǎn)而言之就是一套“一站式微服務(wù)解決方案”。
為什么選擇Spring Cloud?
因?yàn)镾pringCloud出現(xiàn),對(duì)微服務(wù)技術(shù)提供了非常大的幫助,因?yàn)镾pringCloud 提供了一套完整的微服務(wù)解決方案,不像其他框架只是解決了微服務(wù)中某個(gè)問題。
服務(wù)治理: 阿里巴巴開源的Dubbo和當(dāng)當(dāng)網(wǎng)在其基礎(chǔ)上擴(kuò)展的Dubbox、Eureka、Apache 的Consul等
分布式配置中心: 百度的disconf、Netfix的Archaius、360的QConf、SpringCloud、攜程的阿波羅等。
分布式任務(wù):xxl-job、elastic-job、springcloud的task等。
服務(wù)跟蹤:京東的hyra、springcloud的sleuth等
Spring Cloud簡(jiǎn)介
SpringCloud是基于SpringBoot基礎(chǔ)之上開發(fā)的微服務(wù)框架,SpringCloud是一套目前非常完整的微服務(wù)解決方案 框架,其內(nèi)容包含服務(wù)治理、注冊(cè)中心、配置管理、斷路器、智能路由、微代理、控制總線、全局鎖、分布式會(huì)話等。

SpringCloud包含眾多的子項(xiàng)目
SpringCloud config 分布式配置中心
SpringCloud netflix 核心組件:
- Eureka:服務(wù)治理 注冊(cè)中心
- Hystrix:服務(wù)保護(hù)框架
- Ribbon:客戶端負(fù)載均衡器
- Feign:基于ribbon和hystrix的聲明式服務(wù)調(diào)用組件
- Zuul: 網(wǎng)關(guān)組件,提供智能路由、訪問過濾等功能。