中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

江陰 網(wǎng)站開發(fā)新東方烹飪學(xué)校學(xué)費(fèi)價(jià)目表

江陰 網(wǎng)站開發(fā),新東方烹飪學(xué)校學(xué)費(fèi)價(jià)目表,jsp環(huán)保主題網(wǎng)站代做,百度推廣話術(shù)為什么要有服務(wù)網(wǎng)關(guān)? 我們都知道在微服務(wù)架構(gòu)中,系統(tǒng)會(huì)被拆分為很多個(gè)微服務(wù)。那么作為客戶端要如何去調(diào)用這么多的微服務(wù)呢?難道要一個(gè)個(gè)的去調(diào)用嗎?很顯然這是不太實(shí)際的,我們需要有一個(gè)統(tǒng)一的接口與這些微服務(wù)打交道&#xf…

為什么要有服務(wù)網(wǎng)關(guān)?

我們都知道在微服務(wù)架構(gòu)中,系統(tǒng)會(huì)被拆分為很多個(gè)微服務(wù)。那么作為客戶端要如何去調(diào)用這么多的微服務(wù)呢?難道要一個(gè)個(gè)的去調(diào)用嗎?很顯然這是不太實(shí)際的,我們需要有一個(gè)統(tǒng)一的接口與這些微服務(wù)打交道,這就是我們需要服務(wù)網(wǎng)關(guān)的原因。

我們已經(jīng)知道,在微服務(wù)架構(gòu)中,不同的微服務(wù)可以有不同的網(wǎng)絡(luò)地址,各個(gè)微服務(wù)之間通過(guò)互相調(diào)用完成用戶請(qǐng)求,客戶端可能通過(guò)調(diào)用N個(gè)微服務(wù)的接口完成一個(gè)用戶請(qǐng)求。比如:用戶查看一個(gè)商品的信息,它可能包含商品基本信息、價(jià)格信息、評(píng)論信息、折扣信息、庫(kù)存信息等等,而這些信息獲取則來(lái)源于不同的微服務(wù),諸如產(chǎn)品系統(tǒng)、價(jià)格系統(tǒng)、評(píng)論系統(tǒng)、促銷系統(tǒng)、庫(kù)存系統(tǒng)等等,那么要完成用戶信息查看則需要調(diào)用多個(gè)微服務(wù),這樣會(huì)帶來(lái)幾個(gè)問(wèn)題:

客戶端多次請(qǐng)求不同的微服務(wù),增加客戶端代碼或配置編寫的復(fù)雜性 認(rèn)證繁雜,訪問(wèn)每個(gè)服務(wù)都要進(jìn)行一次認(rèn)證 每個(gè)服務(wù)都通過(guò)http訪問(wèn),導(dǎo)致http請(qǐng)求增加,效率不高拖慢系統(tǒng)性能 多個(gè)服務(wù)存在跨域請(qǐng)求問(wèn)題,處理起來(lái)比較復(fù)雜

我們?cè)撊绾谓鉀Q這些問(wèn)題呢?我們可以嘗試想一下,不要讓前端直接知道后臺(tái)諸多微服務(wù)的存在,我們的系統(tǒng)本身就是從業(yè)務(wù)領(lǐng)域的層次上進(jìn)行劃分,形成多個(gè)微服務(wù),這是后臺(tái)的處理方式。對(duì)于前臺(tái)而言,后臺(tái)應(yīng)該仍然類似于單體應(yīng)用一樣,一次請(qǐng)求即可,于是我們可以在客戶端和服務(wù)端之間增加一個(gè)API網(wǎng)關(guān),所有的外部請(qǐng)求先通過(guò)這個(gè)微服務(wù)網(wǎng)關(guān)。它只需跟網(wǎng)關(guān)進(jìn)行交互,而由網(wǎng)關(guān)進(jìn)行各個(gè)微服務(wù)的調(diào)用。

這樣的話,我們就可以解決上面提到的問(wèn)題,同時(shí)開發(fā)就可以得到相應(yīng)的簡(jiǎn)化,還可以有如下優(yōu)點(diǎn):

減少客戶端與微服務(wù)之間的調(diào)用次數(shù),提高效率 便于監(jiān)控,可在網(wǎng)關(guān)中監(jiān)控?cái)?shù)據(jù),可以做統(tǒng)一切面任務(wù)處理 便于認(rèn)證,只需要在網(wǎng)關(guān)進(jìn)行認(rèn)證即可,無(wú)需每個(gè)微服務(wù)都進(jìn)行認(rèn)證 降低客戶端調(diào)用服務(wù)端的復(fù)雜度 這里可以聯(lián)想到一個(gè)概念,面向?qū)ο笤O(shè)計(jì)中的門面模式,即對(duì)客戶端隱藏細(xì)節(jié),API網(wǎng)關(guān)也是類似的東西,只不過(guò)叫法不同而已。它是系統(tǒng)的入口,封裝了應(yīng)用程序的內(nèi)部結(jié)構(gòu),為客戶端提供統(tǒng)一服務(wù),一些與業(yè)務(wù)本身功能無(wú)關(guān)的公共邏輯可以在這里實(shí)現(xiàn),諸如認(rèn)證、鑒權(quán)、監(jiān)控、緩存、負(fù)載均衡、流量管控、路由轉(zhuǎn)發(fā)等等。示意圖

SpringCloud Gateway網(wǎng)關(guān)介紹

  • SpringCloud Gateway是Spring Cloud 的一個(gè)全新項(xiàng)目,該項(xiàng)目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技術(shù)開發(fā)的網(wǎng)關(guān),它旨在為微服務(wù)架構(gòu)提供一種簡(jiǎn)單有效的統(tǒng)一的 API 路由管理方式。
  • SpringCloud Gateway作為Spring Cloud 生態(tài)系統(tǒng)中的網(wǎng)關(guān),目標(biāo)是替代 Zuul,在Spring Cloud 2.0以上版本中,沒(méi)有對(duì)新版本的Zuul 2.0以上最新高性能版本進(jìn)行集成,仍然還是使用的Zuul 2.0之前的非Reactor模式的老版本。而為了提升網(wǎng)關(guān)的性能,SpringCloud Gateway是基于WebFlux框架實(shí)現(xiàn)的,而WebFlux框架底層則使用了高性能的Reactor模式通信框架Netty。

總結(jié)一下,服務(wù)網(wǎng)關(guān)大概就是四個(gè)功能:統(tǒng)一接入、流量管控、協(xié)議適配、安全維護(hù)。而在目前的網(wǎng)關(guān)解決方案里,有Nginx+ Lua、Spring Cloud Zuul以及Spring Cloud Gateway等等。這里以Spring Cloud Gateway為例進(jìn)行說(shuō)明。

Spring Cloud Gateway 的目標(biāo),不僅提供統(tǒng)一的路由方式,并且基于 Filter 鏈的方式提供了網(wǎng)關(guān)基本的功能,例如:安全,監(jiān)控/指標(biāo),和限流。

提前聲明:Spring Cloud Gateway 底層使用了高性能的通信框架Netty。

SpringCloud Gateway 特征

SpringCloud官方,對(duì)SpringCloud Gateway 特征介紹如下:

  1. 基于 Spring Framework 5,Project Reactor 和 Spring Boot 2.0
  2. 集成 Hystrix 斷路器
  3. 集成 Spring Cloud DiscoveryClient
  4. Predicates 和 Filters 作用于特定路由,易于編寫的 Predicates 和 Filters
  5. 具備一些網(wǎng)關(guān)的高級(jí)功能:動(dòng)態(tài)路由、限流、路徑重寫

從以上的特征來(lái)說(shuō),和Zuul的特征差別不大,SpringCloud Gateway和Zuul主要的區(qū)別,還是在底層的通信框架上。

簡(jiǎn)單說(shuō)明一下上文中的三個(gè)術(shù)語(yǔ):

Filter(過(guò)濾器):

和Zuul的過(guò)濾器在概念上類似,可以使用它攔截和修改請(qǐng)求,并且對(duì)上游的響應(yīng),進(jìn)行二次處理。

過(guò)濾器為org.springframework.cloud.gateway.filter.GatewayFilter類的實(shí)例。

Route(路由):

網(wǎng)關(guān)配置的基本組成模塊,和Zuul的路由配置模塊類似。

一個(gè)Route模塊由一個(gè) ID,一個(gè)目標(biāo) URI,一組斷言和一組過(guò)濾器定義。如果斷言為真,則路由匹配,目標(biāo)URI會(huì)被訪問(wèn)。

Predicate(斷言):

一個(gè) Java 8 的 Predicate,可以使用它來(lái)匹配來(lái)自 HTTP 請(qǐng)求的任何內(nèi)容,例如 headers 或參數(shù)。斷言的輸入類型是一個(gè) ServerWebExchange。

SpringCloud Gateway的核心架構(gòu)

迎來(lái)了Webflux,Webflux的出現(xiàn)填補(bǔ)了Spring在響應(yīng)式編程上的空白,Webflux的響應(yīng)式編程不僅僅是編程風(fēng)格的改變,而且對(duì)于一系列的著名框架,都提供了響應(yīng)式訪問(wèn)的開發(fā)包,比如Netty、Redis等等。

SpringCloud Gateway 使用的Webflux中的reactor-netty響應(yīng)式編程組件,底層使用了Netty通訊框架。

SpringCloud Zuul的核心架構(gòu)

SpringCloud Zuul的IO模型

Springcloud中所集成的Zuul版本,采用的是Tomcat容器,使用的是傳統(tǒng)的Servlet IO處理模型。

servlet由servlet container進(jìn)行生命周期管理。
  • container啟動(dòng)時(shí)構(gòu)造servlet對(duì)象并調(diào)用servlet init()進(jìn)行初始化;
  • container關(guān)閉時(shí)調(diào)用servlet destory()銷毀servlet;
  • container運(yùn)行時(shí)接受請(qǐng)求,并為每個(gè)請(qǐng)求分配一個(gè)線程(一般從線程池中獲取空閑線程)然后調(diào)用service()。
Servlet的IO模型

servlet是一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)IO模型,當(dāng)請(qǐng)求進(jìn)入servlet container時(shí),servlet container就會(huì)為其綁定一個(gè)線程,在并發(fā)不高的場(chǎng)景下這種模型是適用的,但是一旦并發(fā)上升,線程數(shù)量就會(huì)上漲,而線程資源代價(jià)是昂貴的(上線文切換,內(nèi)存消耗大)嚴(yán)重影響請(qǐng)求的處理時(shí)間。

在一些簡(jiǎn)單的業(yè)務(wù)場(chǎng)景下,不希望為每個(gè)request分配一個(gè)線程,只需要1個(gè)或幾個(gè)線程就能應(yīng)對(duì)極大并發(fā)的請(qǐng)求,這種業(yè)務(wù)場(chǎng)景下servlet模型沒(méi)有優(yōu)勢(shì)。

Springcloud Zuul 是基于servlet之上的一個(gè)阻塞式處理模型,即spring實(shí)現(xiàn)了處理所有request請(qǐng)求的一個(gè)servlet(DispatcherServlet),并由該servlet阻塞式處理處理。

Springcloud Zuul無(wú)法擺脫servlet模型的弊端,雖然Zuul 2.0開始,使用了Netty,并且已經(jīng)有了大規(guī)模Zuul 2.0集群部署的成熟案例,但是,Springcloud官方已經(jīng)沒(méi)有集成改版本的計(jì)劃了。

Webflux 服務(wù)器

Webflux模式替換了舊的Servlet線程模型,用少量的線程處理request和response io操作,這些線程稱為L(zhǎng)oop線程,而業(yè)務(wù)交給響應(yīng)式編程框架處理,響應(yīng)式編程是非常靈活的,用戶可以將業(yè)務(wù)中阻塞的操作提交到響應(yīng)式框架的work線程中執(zhí)行,而不阻塞的操作依然可以在Loop線程中進(jìn)行處理,大大提高了Loop線程的利用率。官方結(jié)構(gòu)圖:

Webflux雖然可以兼容多個(gè)底層的通信框架,但是一般情況下,底層使用的還是Netty,Netty是目前業(yè)界認(rèn)可的最高性能的通信框架。

而Webflux的Loop線程,正好就是著名的Reactor 模式IO處理模型的Reactor線程,如果使用的是高性能的通信框架Netty,這就是Netty的EventLoop線程。

Spring Cloud Gateway的處理流程

  1. GatewayClassPathWarningAutoConfiguration 作用檢查是否配置我們webflux依賴。
  2. GatewayAutoConfiguration 加載了我們Gateway需要注入的類。
  3. GatewayLoadBalancerClientAutoConfiguration 網(wǎng)關(guān)需要使用的負(fù)載均衡,Lb//jarye-member// 根據(jù)服務(wù)名稱查找真實(shí)地址
  4. GatewayRedisAutoConfiguration 網(wǎng)關(guān)整合Redis整合Lua實(shí)現(xiàn)限流
  5. GatewayDiscoveryClientAutoConfiguration 服務(wù)注冊(cè)與發(fā)現(xiàn)功能

  1. 客戶端向網(wǎng)關(guān)發(fā)送Http請(qǐng)求,會(huì)到達(dá)DispatcherHandler接受請(qǐng)求,匹配到RoutePredicateHandlerMapping。
  2. 根據(jù)RoutePredicateHandlerMapping匹配到具體的路由策略。
  3. FilteringWebHandler獲取的路由的GatewayFilter數(shù)組,創(chuàng)建GatewayFilterChain處理過(guò)濾請(qǐng)求
  4. 執(zhí)行我們的代理業(yè)務(wù)邏輯訪問(wèn)。

Spring Cloud Gateway的源碼流程

過(guò)濾器默認(rèn)有8種,采用責(zé)任鏈模式關(guān)聯(lián)著:

SpringCloud Gateway官方資源

源碼及案例

  • github.com/spring-clou…
  • github.com/spring-clou…

案例

  • spring.io/projects/sp…

分享資源

資源分享
獲取以上資源請(qǐng)?jiān)L問(wèn)開源項(xiàng)目 點(diǎn)擊跳轉(zhuǎn)

http://www.risenshineclean.com/news/940.html

相關(guān)文章:

  • 旅游網(wǎng)站建設(shè)內(nèi)容網(wǎng)站搜索排名優(yōu)化怎么做
  • 網(wǎng)站開發(fā)中的網(wǎng)頁(yè)上傳和網(wǎng)站發(fā)布網(wǎng)站點(diǎn)擊量與排名
  • 公司做網(wǎng)站的費(fèi)用如何記賬軟文文案范文
  • iapp怎么把網(wǎng)站做軟件網(wǎng)站推廣計(jì)劃書范文500字
  • 設(shè)計(jì)建設(shè)網(wǎng)站搜索排名怎么做
  • 化妝品網(wǎng)站開發(fā)流程和進(jìn)度安排網(wǎng)絡(luò)營(yíng)銷模式有哪些
  • 新余做網(wǎng)站沈陽(yáng)網(wǎng)絡(luò)營(yíng)銷推廣的公司
  • 怎么用java 做網(wǎng)站互聯(lián)網(wǎng)推廣怎么找渠道
  • 如何做網(wǎng)站與網(wǎng)頁(yè)微信營(yíng)銷軟件
  • 陜西省建設(shè)監(jiān)理協(xié)會(huì)證書查詢網(wǎng)站寧波網(wǎng)站推廣怎么做
  • 管理咨詢公司稅收優(yōu)惠青島seo優(yōu)化
  • 鎮(zhèn)江網(wǎng)站推廣南寧seo外包要求
  • 網(wǎng)站有了訂單郵箱提醒代碼營(yíng)銷策略模板
  • 這么做國(guó)外網(wǎng)站的國(guó)內(nèi)鏡像站甘肅搜索引擎網(wǎng)絡(luò)優(yōu)化
  • 西安網(wǎng)絡(luò)公司網(wǎng)站建設(shè)小紅書推廣平臺(tái)
  • 網(wǎng)站開發(fā)基于什么平臺(tái)自己代理一款手游需要多少錢
  • go語(yǔ)言怎么搭建網(wǎng)頁(yè)東莞網(wǎng)站優(yōu)化關(guān)鍵詞排名
  • 用jsp做網(wǎng)站的難點(diǎn)云優(yōu)化
  • index.html網(wǎng)站怎么做重慶seo優(yōu)化公司
  • 免費(fèi)下載建設(shè)銀行官方網(wǎng)站濟(jì)南優(yōu)化網(wǎng)站的哪家好
  • 岳陽(yáng)網(wǎng)站開發(fā)商城網(wǎng)絡(luò)推廣項(xiàng)目計(jì)劃書
  • 校園網(wǎng)站建設(shè)模板上海網(wǎng)站排名seo公司哪家好
  • 做網(wǎng)站賭博代理違法嗎品牌推廣是做什么的
  • 做營(yíng)銷網(wǎng)站制作seo綜合查詢是什么意思
  • 企業(yè)網(wǎng)站怎么做畢業(yè)設(shè)計(jì)網(wǎng)站怎么營(yíng)銷推廣
  • b2b平臺(tái)有哪些類別網(wǎng)絡(luò)營(yíng)銷優(yōu)化
  • 做免費(fèi)網(wǎng)站教程國(guó)vs百度seo排名優(yōu)化軟件化
  • 萊蕪二手房網(wǎng)湖南seo優(yōu)化報(bào)價(jià)
  • wordpress顯示輪播圖深圳市seo上詞多少錢
  • 網(wǎng)絡(luò)投注網(wǎng)站是怎么建設(shè)簡(jiǎn)述網(wǎng)絡(luò)營(yíng)銷的概念