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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
微服務(wù)平臺(tái)之網(wǎng)關(guān)架構(gòu)與應(yīng)用

[[328876]]

 前言:

API 網(wǎng)關(guān)出現(xiàn)的原因是微服務(wù)架構(gòu)的出現(xiàn),不同的微服務(wù)一般會(huì)有不同的網(wǎng)絡(luò)地址,而外部客戶端可能需要調(diào)用多個(gè)服務(wù)的接口才能完成一個(gè)業(yè)務(wù)需求,如果讓客戶端直接與各個(gè)微服務(wù)通信,會(huì)有以下的問(wèn)題:

成都網(wǎng)站建設(shè)、成都做網(wǎng)站的開(kāi)發(fā),更需要了解用戶,從用戶角度來(lái)建設(shè)網(wǎng)站,獲得較好的用戶體驗(yàn)。成都創(chuàng)新互聯(lián)公司多年互聯(lián)網(wǎng)經(jīng)驗(yàn),見(jiàn)的多,溝通容易、能幫助客戶提出的運(yùn)營(yíng)建議。作為成都一家網(wǎng)絡(luò)公司,打造的就是網(wǎng)站建設(shè)產(chǎn)品直銷的概念。選擇成都創(chuàng)新互聯(lián)公司,不只是建站,我們把建站作為產(chǎn)品,不斷的更新、完善,讓每位來(lái)訪用戶感受到浩方產(chǎn)品的價(jià)值服務(wù)。

1、客戶端會(huì)多次請(qǐng)求不同的微服務(wù),增加了客戶端的復(fù)雜性。

2、存在跨域請(qǐng)求,在一定場(chǎng)景下處理相對(duì)復(fù)雜。

3、認(rèn)證復(fù)雜,每個(gè)服務(wù)都需要獨(dú)立認(rèn)證。

4、難以重構(gòu),隨著項(xiàng)目的迭代,可能需要重新劃分微服務(wù)。例如,可能將多個(gè)服務(wù)合并成一個(gè)或者將一個(gè)服務(wù)拆分成多個(gè)。如果客戶端直接與微服務(wù)通信,那么重構(gòu)將會(huì)很難實(shí)施。

5、某些微服務(wù)可能使用了防火墻 / 瀏覽器不友好的協(xié)議,直接訪問(wèn)會(huì)有一定的困難。

以上這些問(wèn)題可以借助 API 網(wǎng)關(guān)解決。API 網(wǎng)關(guān)是介于客戶端和服務(wù)器端之間的中間層,所有的外部請(qǐng)求都會(huì)先經(jīng)過(guò) API 網(wǎng)關(guān)這一層。也就是說(shuō),網(wǎng)關(guān)的角色是作為一個(gè) API 架構(gòu),用來(lái)保護(hù)、增強(qiáng)和控制對(duì)于 API 服務(wù)的訪問(wèn)。

目錄:

1、API網(wǎng)關(guān)的定義

2、為什么選擇Gateway

3、部分Predicate的實(shí)現(xiàn)

4、普元EOS 8 網(wǎng)關(guān)架構(gòu)

5、普元EOS 8 網(wǎng)關(guān)應(yīng)用

6、未來(lái)展望

1.API網(wǎng)關(guān)的定義

 

 

網(wǎng)關(guān)的角色是作為一個(gè) API 架構(gòu),用來(lái)保護(hù)、增強(qiáng)和控制對(duì)于 API 服務(wù)的訪問(wèn)。API 網(wǎng)關(guān)是一個(gè)處于應(yīng)用程序或服務(wù)(提供 REST API 接口服務(wù))之前的系統(tǒng),用來(lái)管理授權(quán)、訪問(wèn)控制和流量限制等,這樣 REST API 接口服務(wù)就被 API 網(wǎng)關(guān)保護(hù)起來(lái),對(duì)所有的調(diào)用者透明。因此,隱藏在 API 網(wǎng)關(guān)后面的業(yè)務(wù)系統(tǒng)就可以專注于創(chuàng)建和管理服務(wù),而不用去處理這些策略性的基礎(chǔ)設(shè)施。

網(wǎng)關(guān)的職能

  1. 請(qǐng)求接入:作為所有API接口服務(wù)請(qǐng)求的接入點(diǎn)。
  2. 業(yè)務(wù)聚合:作為所有后端業(yè)務(wù)服務(wù)的聚合點(diǎn)。
  3. 中介策略:實(shí)現(xiàn)安全,驗(yàn)證,路由,過(guò)濾等策略。
  4. 統(tǒng)一管理:對(duì)所有API服務(wù)和策略進(jìn)行統(tǒng)一管理。

主要功能

主要功能大致分為穩(wěn)定與安全,提供更好的服務(wù)兩方面:

穩(wěn)定與安全:

  1. 全局性流控
  2. 日志統(tǒng)計(jì)
  3. 防止SQL注入
  4. 防止Web攻擊
  5. 屏蔽工具掃描
  6. 黑白IP名單
  7. 證書/加密處理

提供更好的服務(wù):

  1. 服務(wù)級(jí)別流控
  2. 服務(wù)降級(jí)與熔斷
  3. 路由與負(fù)載均衡,灰度策略
  4. 服務(wù)過(guò)濾,聚合發(fā)現(xiàn)
  5. 權(quán)限驗(yàn)證與用戶等級(jí)策略
  6. 業(yè)務(wù)規(guī)則與參數(shù)校驗(yàn)
  7. 多級(jí)緩存策略

2.為什么選擇Gateway

Spring Cloud Gateway 可以看做是一個(gè) Zuul 1.x 的升級(jí)版和代替品,比 Zuul 2 更早的使用 Netty 實(shí)現(xiàn)異步 IO,從而實(shí)現(xiàn)了一個(gè)簡(jiǎn)單、比 Zuul 1.x 更高效的、與 Spring Cloud 緊密配合的 API 網(wǎng)關(guān)。

Spring Cloud Gateway 里明確的區(qū)分了 Router 和 Filter,并且一個(gè)很大的特點(diǎn)是內(nèi)置了非常多的開(kāi)箱即用功能,并且都可以通過(guò) SpringBoot 配置或者手工編碼鏈?zhǔn)秸{(diào)用來(lái)使用。

比如內(nèi)置了 10 種 Router,使得我們可以直接配置一下就可以隨心所欲的根據(jù) Header、或者 Path、或者 Host、或者 Query 來(lái)做路由。

比如區(qū)分了一般的 Filter 和全局 Filter,內(nèi)置了 20 種 Filter 和 9 種全局 Filter,也都可以直接用。當(dāng)然自定義 Filter 也非常方便。

幾個(gè)重要概念:

路由:Gateway的基礎(chǔ)構(gòu)建模塊。它包括一個(gè)ID,一個(gè)目標(biāo)URL,一個(gè)斷言集合和一個(gè)過(guò)濾器集合。如果斷言判斷為真,則路由匹配。

斷言:這是Java8的新增功能,輸入的類型為Spring框架的ServerWebExchange。它可以匹配HTTP請(qǐng)求中的任何東西,比如:請(qǐng)求頭或者參數(shù)。

過(guò)濾器:是Spring框架的GatewayFilter,請(qǐng)求和響應(yīng)都可以被Filter修改。

3.部分Predicate的實(shí)現(xiàn)

 

 

Predicate 來(lái)源于 Java 8,是 Java 8 中引入的一個(gè)函數(shù),Predicate 接受一個(gè)輸入?yún)?shù),返回一個(gè)布爾值結(jié)果。該接口包含多種默認(rèn)方法來(lái)將 Predicate 組合成其他復(fù)雜的邏輯(比如:與,或,非)??梢杂糜诮涌谡?qǐng)求參數(shù)校驗(yàn)、判斷新老數(shù)據(jù)是否有變化需要進(jìn)行更新操作。

在 Spring Cloud Gateway 中 Spring 利用 Predicate 的特性實(shí)現(xiàn)了各種路由匹配規(guī)則,有通過(guò) Header、請(qǐng)求參數(shù)等不同的條件來(lái)進(jìn)行作為條件匹配到對(duì)應(yīng)的路由。

這邊就列舉幾個(gè)匹配的轉(zhuǎn)發(fā)實(shí)例:

1、通過(guò)時(shí)間匹配

Predicate 支持設(shè)置一個(gè)時(shí)間,在請(qǐng)求進(jìn)行轉(zhuǎn)發(fā)的時(shí)候,可以通過(guò)判斷在這個(gè)時(shí)間之前或者之后進(jìn)行轉(zhuǎn)發(fā)。比如我們現(xiàn)在設(shè)置只有在 2020 年 1 月 1 日才會(huì)轉(zhuǎn)發(fā)到我的網(wǎng)站,在這之前不進(jìn)行轉(zhuǎn)發(fā),我就可以這樣配置:

 

Spring 是通過(guò) ZonedDateTime 來(lái)對(duì)時(shí)間進(jìn)行的對(duì)比,ZonedDateTime 是 Java 8 中日期時(shí)間功能里,用于表示帶時(shí)區(qū)的日期與時(shí)間信息的類,ZonedDateTime 支持通過(guò)時(shí)區(qū)來(lái)設(shè)置時(shí)間,中國(guó)的時(shí)區(qū)是:Asia/Shanghai。

After Route Predicate 是指在這個(gè)時(shí)間之后的請(qǐng)求都轉(zhuǎn)發(fā)到目標(biāo)地址。上面的示例是指,請(qǐng)求時(shí)間在 2020 年 1 月1 日 6 點(diǎn)之后的所有請(qǐng)求都轉(zhuǎn)發(fā)到地址http://www.primeton.com。+08:00是指時(shí)間和 UTC 時(shí)間相差八個(gè)小時(shí),時(shí)間地區(qū)為Asia/Shanghai。添加完路由規(guī)則之后,訪問(wèn)地址http://網(wǎng)關(guān)IP:PORT會(huì)自動(dòng)轉(zhuǎn)發(fā)到http:// www.primeton.com。

Before Route Predicate 剛好相反,在某個(gè)時(shí)間之前的請(qǐng)求的請(qǐng)求都進(jìn)行轉(zhuǎn)發(fā)。我們把上面路由規(guī)則中的 After 改為 Before,如下:

 

就表示在這個(gè)時(shí)間之前可以進(jìn)行路由,在這時(shí)間之后停止路由,修改完之后重啟項(xiàng)目再次訪問(wèn)地址http://網(wǎng)關(guān)IP:PORT,頁(yè)面會(huì)報(bào) 404 沒(méi)有找到地址。

在時(shí)間之前或者之后外,Gateway 還支持限制路由請(qǐng)求在某一個(gè)時(shí)間段范圍內(nèi),可以使用 Between Route Predicate 來(lái)實(shí)現(xiàn):

 

2、通過(guò) Cookie 匹配

Cookie Route Predicate 可以接收兩個(gè)參數(shù),一個(gè)是 Cookie name , 一個(gè)是正則表達(dá)式,路由規(guī)則會(huì)通過(guò)獲取對(duì)應(yīng)的 Cookie name 值和正則表達(dá)式去匹配,如果匹配上就會(huì)執(zhí)行路由,如果沒(méi)有匹配上則不執(zhí)行。

 

使用 curl 測(cè)試,命令行輸入:

 

則會(huì)返回頁(yè)面代碼,如果去掉--cookie "primeton=eos.primeton",后臺(tái)會(huì)提示 404 錯(cuò)誤

Header Route Predicate 和 Cookie Route Predicate 一樣,也是接收 2 個(gè)參數(shù),一個(gè) header 中屬性名稱和一個(gè)正則表達(dá)式,這個(gè)屬性值和正則表達(dá)式匹配則執(zhí)行。

 

使用 curl 測(cè)試,命令行輸入:

 

則返回頁(yè)面代碼證明匹配成功。將參數(shù)-H "X-Request-Id:88888"改為-H "X-Request-Id:zero"再次執(zhí)行時(shí)返回 404 證明沒(méi)有匹配。

3、通過(guò) Host 匹配

Host Route Predicate 接收一組參數(shù),一組匹配的域名列表,這個(gè)模板是一個(gè) ant 分隔的模板,用.號(hào)作為分隔符。它通過(guò)參數(shù)中的主機(jī)地址作為匹配規(guī)則。

 

使用 curl 測(cè)試,命令行輸入:

 

經(jīng)測(cè)試以上兩種 host 均可匹配到 host_route 路由,去掉 host 參數(shù)則會(huì)報(bào) 404 錯(cuò)誤。

4.普元EOS 8網(wǎng)關(guān)架構(gòu)

 

 

EOS 8網(wǎng)關(guān)架構(gòu)圖

1. 在微服務(wù)治理平臺(tái)中, 一個(gè)系統(tǒng)將部署一套網(wǎng)關(guān)。系統(tǒng)內(nèi)部應(yīng)用的前端訪問(wèn)后端, 或者其它系統(tǒng)的應(yīng)用需要訪問(wèn)此系統(tǒng)內(nèi)的應(yīng)用提供的接口, 請(qǐng)求必須走網(wǎng)關(guān)。

2. 網(wǎng)關(guān)對(duì)外提供治理數(shù)據(jù)的 rest 接口, 治理平臺(tái)通過(guò)此接口將治理數(shù)據(jù)發(fā)送至網(wǎng)關(guān)。

3. 網(wǎng)關(guān)可以部署多個(gè)對(duì)等實(shí)例, 以擴(kuò)充其性能。

4. 網(wǎng)關(guān)收到治理數(shù)據(jù)之后, 由統(tǒng)一存儲(chǔ)接口保持至持久存儲(chǔ)之中,然后由存儲(chǔ)的通知機(jī)制,通知所有網(wǎng)關(guān)實(shí)例。

5. 為了提升性能,避免頻繁從持久存儲(chǔ)中查詢數(shù)據(jù),網(wǎng)關(guān)內(nèi)部設(shè)計(jì)了基于內(nèi)存的高速緩存。它們?cè)诰W(wǎng)關(guān)啟動(dòng)時(shí),將自動(dòng)從持久存儲(chǔ)加載治理數(shù)據(jù)。

6. 網(wǎng)關(guān)緩存也支持通過(guò)懶加載的方式, 按需加載所需治理數(shù)據(jù)。

7. 經(jīng)歷各filter之后, 請(qǐng)求發(fā)往應(yīng)用的哪些實(shí)例, 將在 LBPredicate 之中決定, 它會(huì)根據(jù)請(qǐng)求頭中帶的應(yīng)用實(shí)例組編碼對(duì)應(yīng)用實(shí)例進(jìn)行過(guò)濾。

8. EOS8的網(wǎng)關(guān)將不在和Coframe共用一個(gè)持久化存儲(chǔ),轉(zhuǎn)而使用應(yīng)用自己本身的存儲(chǔ),大大降低接入成本。

9. 認(rèn)證業(yè)務(wù)插件化改造,只需實(shí)現(xiàn)網(wǎng)關(guān)提供的認(rèn)證接口,即可快速完成認(rèn)證和鑒權(quán),用戶也可以逐步實(shí)現(xiàn)按需擴(kuò)展的需求。

EOS 8網(wǎng)關(guān)設(shè)計(jì)要點(diǎn)

1. EOS8的網(wǎng)關(guān)將不在和Coframe共用一個(gè)持久化存儲(chǔ),轉(zhuǎn)而使用應(yīng)用自己本身的存儲(chǔ),大大降低接入成本。

2. 認(rèn)證業(yè)務(wù)插件化改造,只需實(shí)現(xiàn)網(wǎng)關(guān)提供的認(rèn)證接口,即可快速完成認(rèn)證和鑒權(quán),用戶也可以逐步實(shí)現(xiàn)按需擴(kuò)展的需求。

實(shí)現(xiàn)細(xì)節(jié)

1. 創(chuàng)建插件項(xiàng)目

項(xiàng)目名稱格式建議以gateway-plugin- 開(kāi)頭, 如 gateway-plugin-handle-eos8

為了統(tǒng)一第三方j(luò)ar包依賴, 防止版本沖突, 項(xiàng)目父pom必須為網(wǎng)關(guān)的pom

 

2. 實(shí)現(xiàn)gateway-core中的UserService接口

 

參數(shù)說(shuō)明:

 

3. 插件構(gòu)建與部署

在插件的pom中, 需要添加構(gòu)建相關(guān)的配置

 

網(wǎng)關(guān)的部署介質(zhì)結(jié)構(gòu)如下:

EOS_Microservices_API_Gateway/

├── bin

│ ├── shutdown.sh

│ └── startup.sh

├── config

│ ├── application.yml

│ └── logback-spring.xml

├── gateway-boot-5.0.0-GA-SNAPSHOT.jar

├── lib

│ └── plugins

│ └── gateway-plugin-handle-eos8 -8.1.0-LA-SNAPSHOT.jar

└── logs

├── eos-dap-gateway

│ └── eos-dap-gateway.pid

├── eos-dap-gateway.out

├── gateway.log

└── gateway-trace.log

插件構(gòu)建成jar包之后, 需要將其復(fù)制至lib/plugins目錄之下, 然后重啟網(wǎng)關(guān)。

5.普元EOS 8網(wǎng)關(guān)應(yīng)用

 

 

為了方便用戶更好的理解和使用我們的EOS8網(wǎng)關(guān),在EOS8的Governor平臺(tái)中,提供了一整套的可視化操作。

主要分為網(wǎng)關(guān)詳情,白名單配置,API發(fā)布和授權(quán)(針對(duì)跨系統(tǒng)訪問(wèn)),路由,日志,統(tǒng)計(jì)查詢,Top查詢等功能

1. 白名單配置

 

網(wǎng)關(guān)上線后,如果開(kāi)啟了token有效性驗(yàn)證,根據(jù)自己的業(yè)務(wù)需要可以配置放行的白名單(配置了路由轉(zhuǎn)發(fā)的情況下,白名單的請(qǐng)求接口也需要添加對(duì)應(yīng)的url前綴)

2. API發(fā)布與授權(quán)

 

同系統(tǒng)的網(wǎng)關(guān)調(diào)用,只需要請(qǐng)求頭中的X-EOS-SourceSysKey與當(dāng)前系統(tǒng)憑證一致即可,并不需要進(jìn)行API發(fā)布與授權(quán)

當(dāng)本系統(tǒng)的中的接口需要被其他系統(tǒng)調(diào)用的時(shí)候,就需要用到API發(fā)布和API授權(quán)功能

  • Governor會(huì)自動(dòng)讀取系統(tǒng)內(nèi)所有對(duì)外的EOS服務(wù)接口,點(diǎn)擊已發(fā)布后,進(jìn)入API授權(quán)功能
  • 新增指定的訂閱者后,將剛發(fā)發(fā)布的接口進(jìn)行授權(quán),即可完成API授權(quán)功能
  • 在調(diào)用者一邊,創(chuàng)建一個(gè)實(shí)體類實(shí)現(xiàn)SDKApiSubscriberProvider接口即可

 

 

3.路由配置

 

在路由配置界面,我們提供了可視化的路由配置功能,并且提供三種不同的路由模板,方便用戶快速完成路由的配置。

4. 日志查詢

 

網(wǎng)關(guān)運(yùn)行后,所有系統(tǒng)日志均可在日志頁(yè)面進(jìn)行查詢。

5. 統(tǒng)計(jì)查詢

 

所有經(jīng)過(guò)的網(wǎng)關(guān)的請(qǐng)求都會(huì)被記錄并且生成統(tǒng)計(jì),方便日后的定位與分析。

6. TOP查詢

 

我們還會(huì)對(duì)請(qǐng)求數(shù),平均響應(yīng)時(shí)間,錯(cuò)誤數(shù),錯(cuò)誤率進(jìn)行TOP查詢,方便用戶準(zhǔn)確定位和及時(shí)跟蹤。

6.未來(lái)展望

1. 通過(guò)我們的規(guī)則制定,在插件中, 可以為網(wǎng)關(guān)添加各種 RoutePredicateFactory, GatewayFilterFactory, Filter, Predicate 等, 擴(kuò)充網(wǎng)關(guān)在路由匹配, 請(qǐng)求過(guò)濾, 負(fù)載均衡等各方面的能力,支持各種個(gè)性化的改造。

2. 在Governor的網(wǎng)關(guān)管理界面,提供整套的網(wǎng)關(guān)插件管理功能。

3. 同時(shí)可以實(shí)現(xiàn)高效的插件熱部署。

以上就是我為大家?guī)?lái)的EOS服務(wù)網(wǎng)關(guān)架構(gòu)的介紹,希望對(duì)大家有所幫助,如有不足之處也請(qǐng)多多指教,謝謝。


分享標(biāo)題:微服務(wù)平臺(tái)之網(wǎng)關(guān)架構(gòu)與應(yīng)用
文章出自:http://www.5511xx.com/article/dpephep.html