日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
架構(gòu)師如何選型分布式業(yè)務(wù)網(wǎng)關(guān)

那么作為一名架構(gòu)師,我們該如何選型“業(yè)務(wù)網(wǎng)關(guān)”呢?我們自己先要學(xué)會做技術(shù)選型,自己預(yù)期有一個技術(shù)成本的預(yù)判,比如我推薦使用Spring Cloud Alibaba+Spring Gateway,就是我自己作為一個架構(gòu)師的技術(shù)預(yù)判。

創(chuàng)新互聯(lián)建站2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元建平做網(wǎng)站,已為上家服務(wù),為建平各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220

Zuul

Zuul是Netflix開源的微服務(wù)網(wǎng)關(guān),可以和Eureka、Ribbon、Hystrix等組件配合使用,Spring Cloud對Zuul進行了整合與增強,Zuul總共有兩個大的版本:Zuul1.0和Zuul2.0,目前最新的版本為v2.2.0,Zuul1.0和Zuul2.0版本之間功能差異性非常大。

Netflix的Zuul包含如下功能:

  • 身份認證與安全: 識別每個資源的驗證要求,并拒絕那些與要求不符的請求;
  • 審查與監(jiān)控:在邊緣位置追蹤有意義的數(shù)據(jù)和統(tǒng)計結(jié)果;
  • 動態(tài)路由: 動態(tài)地將請求路由到不同的后端集群;
  • 壓力測試 : 逐漸增加指向集群的流量,以了解性能;
  • 負載分配: 為每一種負載類型分配對應(yīng)容量 ,并棄用超出限定值的請求 ;
  • 靜態(tài)響應(yīng)處理:在邊緣位置直接建立部分響應(yīng),從而避免其轉(zhuǎn)發(fā)到內(nèi)部集群;
  • 多區(qū)域彈性: 跨越AWS Region進行請求路由,旨在實現(xiàn)ELB(Elastic Load Balancing)使用的多樣化和 以及讓系統(tǒng)的邊緣更貼近系統(tǒng)的使用者。

以上介紹來自Zuul官方文檔,但其實開源版本的Zuul以上功能一個都沒有——開源的Zuul只是幾個Jar包而已,以上能力指的應(yīng)該是Netflix官方自用的Zuul的能力;Netflix自用的Zuul能力是比較強大的,可使用Groovy編寫過濾器,并且可動態(tài)加載/卸載、修改規(guī)則,而且使用Cassandra作為數(shù)據(jù)庫,然而開源版本這些一個都沒有;Spring Cloud中,Zuul絕大部分功能都是Spring Cloud團隊為Zuul開發(fā)的;所以Zuul 2.x的開源進度延后一年,Spring Cloud團隊開發(fā)了自己的SCG,并宣布Spring Cloud不打算支持Zuul 2.x,你還覺得意外嗎?看到這里,很多人可能沒有動力學(xué)習(xí)Zuul了,個人認為還是可以了解一下的,后面講到SCG時,你會發(fā)現(xiàn)很多設(shè)計理念是相通的。

既然說到了Spring Cloud對Zuul的封裝,那么我們來簡單的分析下Spring Cloud與Zuul的關(guān)系。Spring Cloud通過Spring Cloud Netflix 1.X來封裝Zuul1.0,1.X的最后一個版本是v1.4.7.RELEASE,對應(yīng)的Zuul版本是1.3.1。Spring Cloud Netflix從3.X開始就沒有封裝Zuul網(wǎng)關(guān),包括Zuul1.0和Zuul2.0,也就是說開發(fā)者想要通過Spring Cloud來復(fù)用Zuul,只能使用Zuul1.0,暫時不能復(fù)用Zuul2.0。

Zuul目前在github上的star數(shù)為10.2k,fork數(shù)為2k,也就是說還是有很多開源愛好者會基于Zuul來定制化業(yè)務(wù)網(wǎng)關(guān)。

除了開源的Spring Cloud定制化Zuul,開源微服務(wù)框架jhipster也參與了定制,并集成到它的生態(tài)中。Jhipster主要包含generator-jhipster和jhipster-registry,前者star數(shù)微17.7k,fork數(shù)為3.5k,后者star數(shù)為604,fork為607。

Zuul1.0整體架構(gòu)設(shè)計如圖所示。

Zuul2.0整體架構(gòu)設(shè)計如圖所示。

Spring Cloud Gateway

SCG是基于Spring Framework 5.0和Spring Boot 2.0構(gòu)建的API網(wǎng)關(guān),提供路由等功能。其旨在提供一種簡單而有效的方法路由到API,并為它們提供跨領(lǐng)域的關(guān)注點,例如:安全性、監(jiān)視/指標和彈性。

主要特性:

  • J ava8
  • Spring Framework5
  • Spring Boot2
  • 動態(tài)路由
  • Spring Handler Mapping 內(nèi)置的路由匹配
  • HTTP 請求的路由匹配(路徑、方法、 Hea der 、主機等)
  • 過濾器限定范圍以匹配路由
  • 過濾器可以修改下游 HTTP 請求和 HTTP 響應(yīng)(添加、刪除 Header 、添加 / 刪除參數(shù)、重寫路徑、設(shè)置路徑等)
  • API或配置驅(qū)動
  • 支持Spring Cloud Discovery Client配置路由

SCG的專業(yè)術(shù)語包括:

  • 路由:它是基本構(gòu)建模塊,主要包含ID、URI、斷言集合以及過濾器集合,如果能夠匹配斷言就會執(zhí)行路由。
  • 斷言: 主要是指Java8的函數(shù)式斷言,輸入類型是Spring Framework的ServerWebExchange,基于斷言可以匹配基于headers或者parameters的http請求。
  • 過濾器: 它是通過特殊的工廠方法構(gòu)造的基于Spring Framework GatewayFilter的實現(xiàn),通過過濾器開發(fā)者可以在http請求下行之前修改請求響應(yīng)參數(shù),在請求響應(yīng)返回之后可以修改響應(yīng)的結(jié)果。

SCG整體架構(gòu)設(shè)計如圖所示。

自研網(wǎng)關(guān)

一個API網(wǎng)關(guān)的基本功能包括統(tǒng)一接入、協(xié)議適配、流量管控與容錯,以及安全防護,這個四大基本功能構(gòu)成了網(wǎng)關(guān)的核心能力。網(wǎng)關(guān)首要的功能是負責(zé)統(tǒng)一接入,然后將請求的協(xié)議轉(zhuǎn)換成內(nèi)部的接口協(xié)議,在調(diào)用的過程中還要限流、降級和熔斷等容錯的方式來保護網(wǎng)關(guān)的整體穩(wěn)定,同時網(wǎng)關(guān)還要做到基本的安全防護(防刷控制),以及黑白名單(比如IP地址白名單)等基本的安全措施,主要包括:統(tǒng)一標準接入,具備高性能、高并發(fā)和高可靠性,具備負載均衡的能力;

除了基本的四個功能,網(wǎng)關(guān)運行良好的環(huán)境還包括注冊中心(比如通過Nacos讀取已經(jīng)發(fā)布的API接口的動態(tài)配置)。為了實現(xiàn)高性能,將數(shù)據(jù)全部異構(gòu)到緩存(比如Redis)中,同時還可以配合本機緩存來進一步的提高網(wǎng)關(guān)系統(tǒng)的性能。為了提高網(wǎng)關(guān)的吞吐率,可以使用NIO+Servlet3異步的方式,還可以利用Servlet3的異步特性將請求線程與業(yè)務(wù)處理線程分開,為后續(xù)的線程池隔離做好基本的支撐。訪問日志的存儲我們可以放到Hbase或者ES中,如果要作為開放網(wǎng)關(guān)使用,那么需要一個支持OAuth2.0協(xié)議的授權(quán)中心,同時還可以引入Nginx+Lua的方式,將一些基本的校驗判斷前置到應(yīng)用系統(tǒng)之上,這樣可以更加輕量級的處理網(wǎng)關(guān)接入的問題。

主要包括接入層,開發(fā)者可以通過Nginx和Lua腳本,解決限流、黑白名單、路由、負載均衡、長短連接以及容災(zāi)切換的問題。網(wǎng)關(guān)需要保證服務(wù)的穩(wěn)定性,需要接入注冊中心,因為本書是Spring Cloud Alibaba的布道書籍,所以強烈推薦使用Nacos作為注冊中心和配置中心。統(tǒng)一的鑒權(quán)中心,主要是統(tǒng)一解決網(wǎng)關(guān)為各個API服務(wù)的鑒權(quán)問題,當(dāng)然可以按照服務(wù)維度做隔離,自定義鑒權(quán)規(guī)則。統(tǒng)一用戶中心主要是解決用戶登錄問題,確保微服務(wù)調(diào)用的安全性。

自研網(wǎng)關(guān)還需要有泛化功能,使用者在調(diào)用提供者的接口的時候,不再需要API提供者的客戶端JAR包,因此也就沒有了POJO,通過泛化的方式進行遠程調(diào)用。一般情況下我們要通過RPC調(diào)用接口提供方的服務(wù),首先在系統(tǒng)中嵌入接口提供者的JAR包,然后使用JAR包里面的類和方法。對于一個網(wǎng)關(guān)系統(tǒng)來說,如果要調(diào)用N個接口,就需要N個JAR包,這樣的網(wǎng)關(guān)是很難維護的,當(dāng)然Dubbo RPC是支持泛化的。

網(wǎng)關(guān)要具備時間校驗、方法校驗、版本校驗和簽名校驗等功能,當(dāng)然網(wǎng)關(guān)還需要具備服務(wù)降級、日志記錄以及監(jiān)控與告警功能。

對比以上三種網(wǎng)關(guān)

網(wǎng)關(guān)

限流

鑒權(quán)

監(jiān)控

易用性

可維護性

成熟度

SCG

可以通過IP,用戶,集群限流,提供了相應(yīng)的接口進行擴展

普通鑒權(quán)auth2.0

Gateway Metrics Filter

簡單易用

Spring系列可擴展強,易配置和可維護性好

Spring社區(qū)成熟,但Gateway資源少。

Zuul2

可以通過配置文件配置集群限流和單服務(wù)器限流,也可以通過filter實現(xiàn)限流擴展

filter中實現(xiàn)

Filter中實現(xiàn)

參考資料比較少

可維護性差

開源不就資源少。

Zuul1

同上

同上

同上

同上

同上

同上

自研網(wǎng)關(guān)

需要開發(fā)

需要開發(fā)

需要開發(fā)

需要開發(fā)

可維護性極高

需要開發(fā)

總結(jié)

推薦使用Spring Cloud Alibaba+Spring Cloud Gateway,可以更加高效的利用Spring Cloud ALibaba的服務(wù)治理能力去融合網(wǎng)關(guān)API的治理,從而提升業(yè)務(wù)服務(wù)API的系統(tǒng)穩(wěn)定性。


當(dāng)前題目:架構(gòu)師如何選型分布式業(yè)務(wù)網(wǎng)關(guān)
網(wǎng)站地址:http://www.5511xx.com/article/djjojjc.html