做教育網(wǎng)站多少錢淘寶推廣引流方法有哪些
目錄
- 回顧
- 架構(gòu)分類
- 單體架構(gòu)
- 分布式架構(gòu)
- 微服務(wù)架構(gòu)
- 什么是微服務(wù)
- 優(yōu)點
- 缺點
- 微服務(wù)的架構(gòu)特征:
- 微服務(wù)架構(gòu)面臨的挑戰(zhàn)
- 技術(shù)挑戰(zhàn)
- 微服架構(gòu)的設(shè)計原則
- 微服務(wù)概念
- 提供者(Provider)
- 消費者(Consumer)
- RPC和Restful
- 集群
- 分布式
- 總結(jié)
- 服務(wù)拆分和遠(yuǎn)程調(diào)用
- 服務(wù)拆分原則
- 服務(wù)拆分示例
- 思考
- 主流的微服務(wù)框架
- Spring Cloud Netflix概述
- Netflix OSS
- Netflix OSS
- 畢馬威:顛覆性公司和商業(yè)模式報告
- Netflix是什么,與Spring Cloud有什么關(guān)系
- Netflix OSS的開源組件
- Eureka:服務(wù)注冊和發(fā)現(xiàn)
- Zuul:網(wǎng)關(guān)
- Ribbon,即負(fù)載均衡
- Feign,服務(wù)客戶端
- Hystrix,監(jiān)控和斷路器
- Turbine,監(jiān)控聚合
- Spring Cloud
- Spring Cloud簡介
- Spring Cloud特征
- 版本
- 版本依賴關(guān)系
- Spring Cloud 規(guī)范下的實現(xiàn)
- 本教程中選用的組件
回顧
架構(gòu)分類
單體架構(gòu)
-
單體架構(gòu):將業(yè)務(wù)的所有功能集中在一個項目中開發(fā),打成一個包部署。
-
優(yōu)點:
- 架構(gòu)簡單
- 部署成本低
-
缺點:
- 耦合度高(維護(hù)困難、升級困難)
- 耦合度高(維護(hù)困難、升級困難)
分布式架構(gòu)
-
分布式架構(gòu):根據(jù)業(yè)務(wù)功能對系統(tǒng)做拆分,每個業(yè)務(wù)功能模塊作為獨立項目開發(fā),稱為一個服務(wù)。
-
優(yōu)點:
- 降低服務(wù)耦合
- 有利于服務(wù)升級和拓展
-
缺點:
- 服務(wù)調(diào)用關(guān)系錯綜復(fù)雜
- 服務(wù)調(diào)用關(guān)系錯綜復(fù)雜
-
分布式架構(gòu)雖然降低了服務(wù)耦合,但是服務(wù)拆分時也有很多問題需要思考:
- 服務(wù)拆分的粒度如何界定?
- 服務(wù)之間如何調(diào)用?
- 服務(wù)的調(diào)用關(guān)系如何管理?
人們需要制定一套行之有效的標(biāo)準(zhǔn)來約束分布式架構(gòu)。
微服務(wù)架構(gòu)
什么是微服務(wù)
- 微服務(wù)的概念源于2014年3月Martin Fowler(馬丁·福勒)所寫的一篇文章:https://martinfowler.com/microservices。
- 微服務(wù)架構(gòu)風(fēng)格是一種將一個單體應(yīng)用程序開發(fā)為一組小型服務(wù)的方法,每個服務(wù)運行在自己的進(jìn)程中,服務(wù)間通信采用輕量級通信機(jī)制(通常是基于HTTP協(xié)議的RESTful API)。這些服務(wù)圍繞業(yè)務(wù)能力構(gòu)建,并且可通過全自動部署機(jī)制獨立部署。這些服務(wù)共用一個最小型的集中式的管理,服務(wù)可用不同的語言開發(fā),使用不同的數(shù)據(jù)存儲技術(shù)。
優(yōu)點
- 邏輯清晰,項目復(fù)雜度降低:通過對共享業(yè)務(wù)更加細(xì)粒度的拆分,一個服務(wù)只需要關(guān)注一個特定的業(yè)務(wù)領(lǐng)域,并通過定義良好的接口清晰表述服務(wù)邊界。由于體積小、復(fù)雜度低,開發(fā)、維護(hù)會更加簡單;
- 技術(shù)選型更加靈活:每個微服務(wù)都有不同的團(tuán)隊來維護(hù),所以可以結(jié)合業(yè)務(wù)特性自由選擇技術(shù)棧;
- 可擴(kuò)展性更強(qiáng):可以根據(jù)每個微服務(wù)的性能要求和業(yè)務(wù)特點對服務(wù)進(jìn)行靈活擴(kuò)展;
- 獨立部署:單個微服務(wù)的代碼量比較小,使得發(fā)布更加高效;
- 容錯性:如果某一個服務(wù)發(fā)生故障,可以通過重試、降級等機(jī)制實現(xiàn)容錯;
缺點
- 性能降低,微服務(wù)的間通過REST、RPC等形式進(jìn)行交互,通信的延時會受到較大的影響;
- 提升了運維的難度(版本發(fā)布、問題排查、配置管理、監(jiān)控);
- 數(shù)據(jù)一致性的問題;
微服務(wù)的架構(gòu)特征:
- 單一職責(zé):微服務(wù)拆分粒度更小,每一個服務(wù)都對應(yīng)唯一的業(yè)務(wù)能力,做到單一職責(zé)
- 自治:團(tuán)隊獨立、技術(shù)獨立、數(shù)據(jù)獨立,獨立部署和交付
- 面向服務(wù):服務(wù)提供統(tǒng)一標(biāo)準(zhǔn)的接口,與語言和技術(shù)無關(guān)
- 隔離性強(qiáng):服務(wù)調(diào)用做好隔離、容錯、降級,避免出現(xiàn)級聯(lián)問題
微服務(wù)的上述特性其實是在給分布式架構(gòu)制定一個標(biāo)準(zhǔn),進(jìn)一步降低服務(wù)之間的耦合度,提供服務(wù)的獨立性和靈活性。做到高內(nèi)聚,低耦合。
因此,可以認(rèn)為微服務(wù)是一種經(jīng)過良好架構(gòu)設(shè)計的分布式架構(gòu)方案 。
微服務(wù)架構(gòu)面臨的挑戰(zhàn)
- 微服務(wù)粒度大小難以劃分,需要設(shè)計人員對業(yè)務(wù)有很好的掌握;
- 分布式復(fù)雜性,主要體現(xiàn)在分布式事務(wù)、網(wǎng)絡(luò)延遲、系統(tǒng)容錯等問題解決難度較大;
- 微服務(wù)之間通信成本較高,對微服務(wù)之間網(wǎng)絡(luò)穩(wěn)定性、通信速度要求較高;
- 由于微服務(wù)數(shù)量較大,運維人員運維、部署有較大的挑戰(zhàn)
技術(shù)挑戰(zhàn)
- 微服務(wù)架構(gòu)的主要目的是實現(xiàn)業(yè)務(wù)服務(wù)的解耦;
- 對服務(wù)進(jìn)行治理(服務(wù)的注冊與發(fā)現(xiàn)、服務(wù)與服務(wù)之間的調(diào)用、熔斷限流、負(fù)載均衡、鏈路追蹤、分布式配置中心、服務(wù)路由等);
微服架構(gòu)的設(shè)計原則
微服務(wù)概念
提供者(Provider)
- 提供接口供其他項目調(diào)用的項目
消費者(Consumer)
- 調(diào)用提供者接口的項目
RPC和Restful
- RPC:RPC遠(yuǎn)程過程調(diào)用(Remote Procedure Call)的縮寫形式,主要是基于TCP/IP協(xié)議的。
- Restful:Restful是一種網(wǎng)絡(luò)應(yīng)用程序的設(shè)計風(fēng)格和開發(fā)方式,基于HTTP協(xié)議,可以使用XML格式定義或JSON格式定義。
集群
- 集群就是單機(jī)的多實例,在多個服務(wù)器上部署多個服務(wù),每個服務(wù)就是一個節(jié)點,部署N個節(jié)點,處理業(yè)務(wù)的能力就提升 N倍(大約),這些節(jié)點的集合就叫做集群。
分布式
- 分布式結(jié)構(gòu)就是將一個完整的系統(tǒng),按照業(yè)務(wù)功能,拆分成一個個獨立的子系統(tǒng),在分布式結(jié)構(gòu)中,每個子系統(tǒng)就被稱為“服務(wù)”。這些子系統(tǒng)能夠獨立運行在web容器中,它們之間通過RPC或Restful方式通信。
總結(jié)
- 單體架構(gòu):簡單方便,高度耦合,擴(kuò)展性差,適合小型項目。例如:學(xué)生管理系統(tǒng)
- 分布式架構(gòu):松耦合,擴(kuò)展性好,但架構(gòu)復(fù)雜,難度大。適合大型互聯(lián)網(wǎng)項目,例如:京東、淘寶
- 微服務(wù):一種良好的分布式架構(gòu)方案
- 優(yōu)點:拆分粒度更小、服務(wù)更獨立、耦合度更低
- 缺點:架構(gòu)非常復(fù)雜,運維、監(jiān)控、部署難度提高
- SpringCloud是微服務(wù)架構(gòu)的一站式解決方案,集成了各種優(yōu)秀微服務(wù)功能組件
服務(wù)拆分和遠(yuǎn)程調(diào)用
- 何分布式架構(gòu)都離不開服務(wù)的拆分,微服務(wù)也是一樣。
服務(wù)拆分原則
- 不同微服務(wù),不要重復(fù)開發(fā)相同業(yè)務(wù)
- 微服務(wù)數(shù)據(jù)獨立,不要訪問其它微服務(wù)的數(shù)據(jù)庫
- 微服務(wù)可以將自己的業(yè)務(wù)暴露為接口,供其它微服務(wù)調(diào)用
服務(wù)拆分示例
cloud-demo:父工程,管理依賴
- order-service:訂單微服務(wù),負(fù)責(zé)訂單相關(guān)業(yè)務(wù)
- user-service:用戶微服務(wù),負(fù)責(zé)用戶相關(guān)業(yè)務(wù)
說明:
- 訂單微服務(wù)和用戶微服務(wù)都必須有各自的數(shù)據(jù)庫,相互獨立
- 訂單服務(wù)和用戶服務(wù)都對外暴露Restful的接口
- 訂單服務(wù)如果需要查詢用戶信息,只能調(diào)用用戶服務(wù)的Restful接口,不能查詢用戶數(shù)據(jù)庫
思考
方案該怎么落地?選用什么樣的技術(shù)棧?全球的互聯(lián)網(wǎng)公司都在積極嘗試自己的微服務(wù)落地方案。
其中在Java領(lǐng)域最引人注目的就是SpringCloud提供的方案了。
主流的微服務(wù)框架
框架名稱 | 說明 |
---|---|
Motan | Motan(茅臺)是新浪微博開源的RPC框架,官網(wǎng):github.com/weibocom/motan |
JSF JSF(京服) | 是京東的微服務(wù)組件。 |
MSEC | 毫秒服務(wù)引擎(MSEC, Mass Service Engine in Cluster)是騰訊的一個開源框架,適用于在廉價機(jī)器組成的集群上開發(fā)和運營分布式后臺服務(wù)。該項目集RPC、名字發(fā)現(xiàn)服務(wù)、負(fù)載均衡、業(yè)務(wù)監(jiān)控、灰度發(fā)布、容量管理、日志管理、key-value存儲于一體,目的是提高開發(fā)與運營的效率和質(zhì)量。 |
Dubbo | 阿里巴巴開源的RPC框架,后來加入Apache孵化器并成功畢業(yè)。新的名字為Apache Dubbo。 |
DubboX | 當(dāng)當(dāng)網(wǎng)基于Dubbo開源的PRC框架,后來并入Apache Dubbo。 |
Netflix OSS | Netflix OSS是由Netflix公司開發(fā)的一套代碼框架,用于解決分布式系統(tǒng)的問題,如:服務(wù)注冊與發(fā)現(xiàn)、負(fù)載均衡、熔斷降級、限流、網(wǎng)關(guān)等。 |
Spring Cloud | Spring Cloud是基于Spring Boot的一整套實現(xiàn)微服務(wù)的框架。他提供了微服務(wù)開發(fā)所需的配置管理、服務(wù)發(fā)現(xiàn)、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分布式會話和集群狀態(tài)管理等組件。 |
Spring Cloud Netflix | Spring Cloud Netflix是Spring Boot和Netflix OSS在Spring Cloud規(guī)范下的集成。由Netflix開發(fā)后來又并入Spring Cloud大家庭,它主要提供的模塊包括:服務(wù)發(fā)現(xiàn)、斷路器和監(jiān)控、智能路由、客戶端負(fù)載均衡等。 |
Spring Cloud Alibaba | Spring Cloud Alibaba 是阿里巴巴提供的微服務(wù)開發(fā)一站式解決方案,是阿里巴巴開源中間件與 Spring Cloud 體系的融合。Spring Cloud Alibaba 正式入駐Spring Cloud 官方孵化器,并順利畢業(yè)。 |
Spring Cloud 生態(tài)下中微服務(wù)整理 | Spring Cloud并沒有重復(fù)制造輪子,它只是將各家公司開發(fā)的比較成熟、經(jīng)得起實際考驗的服務(wù)框架組合起來,通過Spring Boot風(fēng)格進(jìn)行再封裝屏蔽掉了復(fù)雜的配置和實現(xiàn)原理,最終給開發(fā)者留出了一套簡單易懂、易部署和易維護(hù)的分布式系統(tǒng)開發(fā)工具包。 主流的微服務(wù)治理方案:Spring Cloud Netflix和Spring Cloud Alibaba |
Spring Cloud Netflix概述
-
Spring Cloud Netflix誕生的三個原因
- Spring家族中的大部分項目都是客戶端項目,缺少服務(wù)端項目和分布式項目的經(jīng)驗;
- Netflix開源其分布式領(lǐng)域的中間件,叫做Netflix OSS;
- Dubbo的出現(xiàn),讓Spring母公司(Privotal)感受到了威脅,它需要保持或增值自身價值。
-
Spring母公司缺少分布式項目的經(jīng)驗,而Netflix OSS的開源組件正好涉及分布式領(lǐng)域的核心功能,雙方一拍即合,合作誕生的Spring Cloud Netflix項目用于為快速構(gòu)建分布式系統(tǒng)提供統(tǒng)一的開發(fā)模式。
-
Spring Cloud Netflix是Spring Boot和Netflix OSS在Spring Cloud規(guī)范下的集成。其中,Netflix OSS是由Netflix公司開發(fā)的一套開源框架和組件庫。
Netflix OSS
Netflix OSS
- Netflix OSS(Netflix Open Source Software)即Netflix開源軟件。
- Netflix由于做視頻的原因,訪問量非常的大,從而促使其技術(shù)快速的發(fā)展在背后支撐著,也正是如此,Netflix開始把整體的系統(tǒng)往微服務(wù)上遷移。
- Netflix毫無保留的把一整套微服務(wù)架構(gòu)核心技術(shù)棧開源了出來,叫做Netflix OSS,依靠開源社區(qū)的力量不斷的壯大。
畢馬威:顛覆性公司和商業(yè)模式報告
- 報告顯示Amazon、Apple、Alibaba、Airbnb、Netflix、Google、DJI、Microsoft、Facebook、Baidu、Tencent等公司是最具顛覆性的公司
- 其中Netflix和阿里巴巴分別為第3位和第5位,他們都是對Spring Cloud做出巨大貢獻(xiàn)的公司
Netflix是什么,與Spring Cloud有什么關(guān)系
- 首先,Netflix是一家做視頻的網(wǎng)站,可以這么說該網(wǎng)站上的美劇應(yīng)該是最火的
- Netflix由于做視頻的原因,訪問量非常的大,從而促使其技術(shù)快速的發(fā)展在背后支撐著,也正是如此,Netflix開始把整體的系統(tǒng)往微服務(wù)上遷移。
- Netflix的微服務(wù)做的不是最早的,但是確是最大規(guī)模的在生產(chǎn)級別微服務(wù)的嘗試。也正是這種大規(guī)模的生產(chǎn)級別嘗試,在服務(wù)器運維上依托AWS云。當(dāng)然AWS云同樣受益于Netflix的大規(guī)模業(yè)務(wù)不斷的壯大。[(AWS)Amazon Web Services(亞馬遜網(wǎng)絡(luò)服務(wù))]
- Netflix的微服務(wù)大規(guī)模的應(yīng)用,在技術(shù)上毫無保留的把一整套微服務(wù)架構(gòu)核心技術(shù)棧開源了出來,叫做Netflix OSS,也正是如此,在技術(shù)上依靠開源社區(qū)的力量不斷的壯大。
- Spring Cloud是構(gòu)建微服務(wù)的核心,而Spring Cloud是基于Spring Boot來開發(fā)的
- Pivotal在Netflix開源的一整套核心技術(shù)產(chǎn)品線的同時,做了一系列的封裝,就變成了Spring Cloud;雖然Spring Cloud到現(xiàn)在為止不只有Netflix提供的方案可以集成,還有很多方案,但Netflix是最成熟的。
Netflix OSS的開源組件
Eureka:服務(wù)注冊和發(fā)現(xiàn)
- 它提供了一個服務(wù)注冊中心、服務(wù)發(fā)現(xiàn)的客戶端,還有一個方便的查看所有注冊的服務(wù)的界面。 所有的服務(wù)使用Eureka的服務(wù)發(fā)現(xiàn)客戶端來將自己注冊到Eureka的服務(wù)器上。
Zuul:網(wǎng)關(guān)
- 所有的客戶端請求通過這個網(wǎng)關(guān)訪問后臺的服務(wù)。他可以使用一定的路由配置來判斷某一個URL由哪個服務(wù)來處理。并從Eureka獲取注冊的服務(wù)來轉(zhuǎn)發(fā)請求
Ribbon,即負(fù)載均衡
- Zuul網(wǎng)關(guān)將一個請求發(fā)送給某一個服務(wù)的應(yīng)用的時候,如果一個服務(wù)啟動了多個實例,就會通過Ribbon來通過一定的負(fù)載均衡策略來發(fā)送給某一個服務(wù)實例。
Feign,服務(wù)客戶端
- 服務(wù)之間如果需要相互訪問,可以使用RestTemplate,也可以使用Feign客戶端訪問。它默認(rèn)會使用Ribbon來實現(xiàn)負(fù)載均衡。
Hystrix,監(jiān)控和斷路器
- 我們只需要在服務(wù)接口上添加Hystrix標(biāo)簽,就可以實現(xiàn)對這個接口的監(jiān)控和斷路器功能。Hystrix Dashboard,監(jiān)控面板,他提供了一個界面,可以監(jiān)控各個服務(wù)上的服務(wù)調(diào)用所消耗的時間等。
Turbine,監(jiān)控聚合
- 使用Hystrix監(jiān)控,我們需要打開每一個服務(wù)實例的監(jiān)控信息來查看。而Turbine可以幫助我們把所有的服務(wù)實例的監(jiān)控信息聚合到一個地方統(tǒng)一查看。這樣就不需要挨個打開一個個的頁面一個個查看。
Spring Cloud
Spring Cloud簡介
- Spring Cloud是基于Spring Boot的一整套實現(xiàn)微服務(wù)的框架。
- 他提供了微服務(wù)開發(fā)所需的配置管理、服務(wù)注冊與發(fā)現(xiàn)、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分布式會話和集群狀態(tài)管理等組件。
- 最重要的是跟Spring Boot框架一起使用的話,會讓你非常方便開發(fā)微服務(wù)架構(gòu)的服務(wù)。
- 官網(wǎng):https://spring.io/projects/spring-cloud/
Spring Cloud特征
- 分布式/版本化配置
- 服務(wù)注冊和發(fā)現(xiàn)
- 路由
- 服務(wù)與服務(wù)之間的請求調(diào)用
- 負(fù)載均衡
- 斷路器
- 全局鎖
- 領(lǐng)導(dǎo)選舉和集群狀態(tài)
- 分布式消息傳遞
版本
名稱 | 描述 |
---|---|
SNAPSHOT | 代表快照,也就是未完成的意思 |
GA | 代表穩(wěn)定版 |
RELEASE | 發(fā)行版,沒有太多問題 |
SR | 正式發(fā)布版 |
PRE(M1、M2) | 里程碑版,主要是修復(fù)了一些BUG的版本,一個GA后通常有多個里程碑版 |
BUILD-XXX | 開發(fā)版,開發(fā)團(tuán)隊內(nèi)部使用,不是很穩(wěn)定 |
- 本教程使用版本:Spring Cloud Hoxton.SR12
版本依賴關(guān)系
Spring Cloud所有的子項目都依賴Spring Boot框架,所以Spring Boot框架的版本號和Spring Cloud的版本號之間也存在依賴及兼容的關(guān)系,如下圖所示:
Spring Cloud 規(guī)范下的實現(xiàn)
- 在Spring Cloud這個規(guī)范下,有很多實現(xiàn),比如:Spring-Cloud-Bus、Spring-Cloud-Gateway、Spring-Cloud-Netflix等等。
- 在這些實現(xiàn)中,絕大部分組件都使用“別人已經(jīng)造好的輪子”,然后基于Spring Cloud規(guī)范進(jìn)行整合,使用者只需要使用非常簡單的配置即可完成微服務(wù)架構(gòu)下復(fù)雜的需求。
- 這也是Spring 團(tuán)隊最厲害的地方,他們很少重復(fù)造輪子,最早的Spring 框架,它只提供了IOC和AOP兩個核心功能,對于ORM、MVC等其他功能,Spring都提供了非常好的兼容性,比如:Hibernate、MyBatis、Spring MVC、Strus2。
- 只有在別人提供的東西不夠好的情況下,Spring團(tuán)隊才會考慮自己研發(fā)。比如Strus2經(jīng)常有安全漏洞,所以Spring團(tuán)隊自己研發(fā)了Spring MVC框架。再比如Spring-Cloud-Netflix中的Zuul網(wǎng)關(guān),因為性能及版本迭代較慢,所以Spring團(tuán)隊孵化了一個Spring Cloud Gateway來取代Zuul。
- Spring團(tuán)隊一直在不斷地為開發(fā)者解決一些技術(shù)復(fù)雜度高的問題,使開發(fā)者能夠更高效地專注于業(yè)務(wù)開發(fā)的工作。從Spring到Spring Boot,再到Spring Cloud,都是如此。
本教程中選用的組件
體系組件名稱 | 作用定位 |
---|---|
Eureka | 注冊中心,提供服務(wù)注冊與發(fā)現(xiàn)服務(wù) |
Open Feign | 請求客戶端,簡化微服務(wù)之間請求調(diào)用 |
Hystrix | 容錯處理 |
Ribbon | 為微服務(wù)提供負(fù)載均衡 |
Gateway | 網(wǎng)關(guān),提供服務(wù)轉(zhuǎn)發(fā)與校驗服務(wù) |
Config | 分布式配置,提供統(tǒng)一配置服務(wù) |
Sleuth | 服務(wù)追蹤,提供微服鏈路追蹤服務(wù) |