女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于API網(wǎng)關(guān)策略的知識(shí)分享

OSC開(kāi)源社區(qū) ? 來(lái)源:OSCHINA 社區(qū) ? 2023-02-11 10:45 ? 次閱讀

近些年隨著云原生和微服務(wù)架構(gòu)的日趨發(fā)展,API 網(wǎng)關(guān)以流量入口的角色在技術(shù)架構(gòu)中扮演著越來(lái)越重要的作用。API 網(wǎng)關(guān)主要負(fù)責(zé)接收所有請(qǐng)求的流量并進(jìn)行處理轉(zhuǎn)發(fā)至上游服務(wù),API 網(wǎng)關(guān)的策略決定了 API 網(wǎng)關(guān)處理這些流量的邏輯與規(guī)則,直接決定了實(shí)際的業(yè)務(wù)流量行為。

什么是 API 網(wǎng)關(guān)策略?

API 網(wǎng)關(guān)一般位于所有的上游服務(wù)之前,當(dāng)用戶向服務(wù)發(fā)送請(qǐng)求后請(qǐng)求會(huì)先到 API 網(wǎng)關(guān),API 網(wǎng)關(guān)接收到請(qǐng)求之后一般會(huì)判斷幾件事情:

請(qǐng)求是否合法,比如是否來(lái)自被禁止訪問(wèn)的用戶列表中;

這個(gè)請(qǐng)求是否通過(guò)認(rèn)證,訪問(wèn)的內(nèi)容是否是經(jīng)過(guò)授權(quán)的;

請(qǐng)求是否觸發(fā)了某些限制規(guī)則,比如限流限速等;

請(qǐng)求應(yīng)該轉(zhuǎn)發(fā)給哪個(gè)上游服務(wù)。

經(jīng)過(guò)這一系列步驟,這個(gè)請(qǐng)求要么不符合預(yù)設(shè)的規(guī)則被拒絕,要么經(jīng)過(guò)了層層處理正確到達(dá)指定的上游服務(wù)中。我們將這些處理規(guī)則稱之為 API 網(wǎng)關(guān)的策略。這些規(guī)則由網(wǎng)關(guān)的管理員在網(wǎng)關(guān)運(yùn)行時(shí)不斷添加至網(wǎng)關(guān)中,網(wǎng)關(guān)接受這些規(guī)則并根據(jù)這些規(guī)則作出正確的流量處理行為。 以 API 網(wǎng)關(guān) Apache APISIX 為例,APISIX 的配置信息有兩種:網(wǎng)關(guān)啟動(dòng)用的配置文件,比如config.yaml,這個(gè)文件決定了網(wǎng)關(guān)正常啟動(dòng)所必須的一些配置。另外在運(yùn)行時(shí)管理員可以通過(guò) Admin API 動(dòng)態(tài)創(chuàng)建各種規(guī)則與配置,比如 Route、Consumer、Plugin 等等。API 網(wǎng)關(guān)的策略就是管理員通過(guò) Admin API 動(dòng)態(tài)創(chuàng)建的各種規(guī)則與配置。 本文不再額外描述基本常用場(chǎng)景,而是針對(duì)認(rèn)證授權(quán)、安全、流量處理與可觀測(cè)性這四類 API 網(wǎng)關(guān)中重要的場(chǎng)景進(jìn)行闡述,介紹每種場(chǎng)景下包含的一些 API 網(wǎng)關(guān)策略的作用以及使用方法。

認(rèn)證和授權(quán)策略

認(rèn)證可以確認(rèn) API 調(diào)用者的身份,授權(quán)主要限制調(diào)用者僅能訪問(wèn)權(quán)限內(nèi)的資源。

4ae1f686-a968-11ed-bfe3-dac502259ad0.png

比如說(shuō)一位乘客前往車站出行,進(jìn)入車站之前會(huì)使用身份證進(jìn)行 “認(rèn)證” 確認(rèn)身份,在進(jìn)入車站后出示車票,經(jīng)工作人員確認(rèn)后被 “授權(quán)” 進(jìn)入某班列車。 認(rèn)證授權(quán)類策略主要目的是保證網(wǎng)關(guān)轉(zhuǎn)發(fā)到上游服務(wù)的所有請(qǐng)求都是經(jīng)過(guò)認(rèn)證和授權(quán)的,不會(huì)出現(xiàn)非法請(qǐng)求。并且訪問(wèn)的都是權(quán)限范圍內(nèi)的資源。比較常用的策略有下面幾種:

Basic Auth

基本訪問(wèn)認(rèn)證策略,這是一種最簡(jiǎn)單的訪問(wèn)控制技術(shù)。一般由用戶的 HTTP 代理在發(fā)出請(qǐng)求時(shí)攜帶用于認(rèn)證的請(qǐng)求頭,一般為:Authorization: Basic ,credentials 中即包含了用戶認(rèn)證需要的用戶 ID 和密碼,使用:隔離。這種方式不需要登陸頁(yè)面、cookie 等繁雜的設(shè)置,僅僅基于請(qǐng)求頭中的簡(jiǎn)單憑據(jù)信息進(jìn)行認(rèn)證,一般為用戶名和密碼,配置使用起來(lái)較為簡(jiǎn)單。 攜帶基本認(rèn)證的cURL請(qǐng)求的示例如下,用戶名為username,密碼為password:

curl -i -u 'username:password' http://127.0.0.1:8080/hello需要注意的是credentials中的信息在傳輸過(guò)程中并不會(huì)被加密,僅僅做 Base64 編碼,所以通常需要和 HTTPS 一起使用來(lái)保證密碼的安全性。 在網(wǎng)關(guān)中實(shí)施這一策略后,未攜帶憑據(jù)的請(qǐng)求將無(wú)法正常通過(guò)網(wǎng)關(guān)轉(zhuǎn)發(fā),除非在請(qǐng)求中攜帶了正確的認(rèn)證信息,實(shí)現(xiàn)了最小成本下為 API 添加了訪問(wèn)驗(yàn)證。

Key Auth

Key Auth 策略通過(guò)在 API 中添加 Key 來(lái)限制 API 調(diào)用,并識(shí)別請(qǐng)求攜帶的 Key 來(lái)進(jìn)行訪問(wèn)資源的控制。只有攜帶了正確的 Key 之后的請(qǐng)求才能正常訪問(wèn),可以在請(qǐng)求頭中或 Query 中攜帶。通常還可以通過(guò)這個(gè) Key 來(lái)區(qū)分不同的 API 調(diào)用方,從而可以針對(duì)不同的調(diào)用方實(shí)施不同的其他策略或資源控制。同樣的 Key 在 HTTP 中是明文傳輸?shù)模_保請(qǐng)求使用了 HTTPS 以保證安全。 以 APISIX 的 key-auth 插件為例,插件需要通過(guò) Admin API 創(chuàng)建一個(gè)具有唯一 key 值的 Consumer:

curl http://127.0.0.1:9180/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "username": "jack", "plugins": { "key-auth": { "key": "jack-key" } } }'這一請(qǐng)求創(chuàng)建了一個(gè)名字為jack的 Consumer,它的 key 值為jack-key。在路由中啟用插件時(shí)需要配置網(wǎng)關(guān)從請(qǐng)求中讀取 Key 值的位置和字段名稱。默認(rèn)的配置位置為header,字段名稱為apikey, 那么正確的請(qǐng)求這個(gè)路由的示例為:curl -i http://127.0.0.1:8080/hello -H 'apikey: jack-key'APISIX 在收到這一請(qǐng)求后會(huì)從請(qǐng)求中解析出 Key,然后從配置的所有 Key 中找到和這個(gè)請(qǐng)求匹配的 Consumerjack,這樣網(wǎng)關(guān)就清楚這個(gè)請(qǐng)求是jack發(fā)出的。如果沒(méi)有找到匹配的 Key 即可判定為非法請(qǐng)求。

JSON Web Token

JSON Web Token (JWT) 是一個(gè)開(kāi)放的標(biāo)準(zhǔn),它定義了一種以 json 對(duì)象形式在各方之間安全傳遞信息的方式。JWT 策略可以集認(rèn)證和授權(quán)于一身,在用戶取得授權(quán)后會(huì)向用戶傳輸一個(gè) JWT Token,在后面的所有請(qǐng)求中調(diào)用方都會(huì)攜帶這個(gè) Token 從而保證請(qǐng)求是被授權(quán)的。 在 API 網(wǎng)關(guān)中可以通過(guò) JWT 策略將 JWT 身份驗(yàn)證能力添加到網(wǎng)關(guān)中,從而把這層邏輯從業(yè)務(wù)中抽離出來(lái),業(yè)務(wù)實(shí)現(xiàn)者可以更加專注實(shí)現(xiàn)業(yè)務(wù)邏輯。以 APISIX 的 jwt-auth 插件為例,插件需要在 Consumer 中啟用并配置唯一的 Key、加密用的公私鑰、加密算法、Token 過(guò)期時(shí)間等。同時(shí)還需要在路由中啟用這一插件并配置網(wǎng)關(guān)讀取 Token 的位置和字段,比如 header、query、cookie 等。該插件會(huì)在 API 網(wǎng)關(guān)中添加一個(gè) API 用于簽發(fā) Token。在發(fā)送請(qǐng)求之前需要請(qǐng)求簽發(fā) token 的 API 獲得 Token,發(fā)送請(qǐng)求時(shí)需要根據(jù)配置信息在指定的位置上攜帶這一 Token。在請(qǐng)求到達(dá)網(wǎng)關(guān)后網(wǎng)關(guān)會(huì)按照配置信息從請(qǐng)求的指定位置讀取 Token 并驗(yàn)證 Token 的有效性,驗(yàn)證通過(guò)后該請(qǐng)求才能被轉(zhuǎn)發(fā)至上游服務(wù)。 相較于前兩種策略,JWT 策略包含了過(guò)期時(shí)間選項(xiàng),簽發(fā)的 Token 隨著時(shí)間流逝是可以過(guò)期的,但是 Basic Auth 和 Key Auth 的有效期是永久的,除非服務(wù)端更換了密碼或 Key。除此之外 JWT 策略可以在多個(gè)服務(wù)之間公用,尤其是針對(duì)單點(diǎn)登錄場(chǎng)景下很有用。

OpenID Connect

OpenID Connect 是建立在 OAuth2.0 協(xié)議之上的身份認(rèn)證方法,為應(yīng)用的授權(quán)提供了比較完整的方案,API 網(wǎng)關(guān)中的 OpenID Connect 策略將允許上游服務(wù)從身份提供者(IdP)中獲取請(qǐng)求中的用戶信息,從而保護(hù) API 安全。常見(jiàn)的身份提供者有 Keycloak、Ory Hydra、Okta、Auth0 等等。以 Apache APISIX 為例網(wǎng)關(guān)中的 OpenID Connect 策略工作流程如下:

4afa4236-a968-11ed-bfe3-dac502259ad0.png

客戶端向網(wǎng)關(guān)發(fā)出請(qǐng)求

網(wǎng)關(guān)收到請(qǐng)求后向 IdP 發(fā)出認(rèn)證請(qǐng)求

用戶將被重定向到 IdP 提供的頁(yè)面完成登陸認(rèn)證

IdP 重定向到網(wǎng)關(guān)并攜帶認(rèn)證 code

網(wǎng)關(guān)通過(guò) code 向 IdP 請(qǐng)求 Access Token 從而獲取用戶信息

網(wǎng)關(guān)向上游轉(zhuǎn)發(fā)請(qǐng)求時(shí)即可攜帶用戶信息

通過(guò)這一流程可以將認(rèn)證和鑒權(quán)從業(yè)務(wù)中獨(dú)立出來(lái)放置于網(wǎng)關(guān)中解決,使架構(gòu)更加清晰。關(guān)于更多 APISIX 的認(rèn)證授權(quán)方法可以參考 API Gateway Authentication。

安全策略

API 網(wǎng)關(guān)安全策略像門衛(wèi)一樣保證 API 安全訪問(wèn),允許正常請(qǐng)求被網(wǎng)關(guān)轉(zhuǎn)發(fā)并在網(wǎng)關(guān)上攔截非法請(qǐng)求。根據(jù) OWASP API Security Project,在 API 的調(diào)用者中存在著大量可能的威脅和攻擊。使用 API 網(wǎng)關(guān)安全策略可以對(duì)所有的 API 請(qǐng)求進(jìn)行安全驗(yàn)證,在 API 免于遭受這些安全威脅上起到了重要作用。

4b141c9c-a968-11ed-bfe3-dac502259ad0.png

以下是幾種比較重要的 API 網(wǎng)關(guān)安全策略。

IP 訪問(wèn)限制

IP 限制策略通過(guò)將某些 IP 或 CIDR 設(shè)置為白名單或者黑名單來(lái)限制某些客戶端對(duì) API 的訪問(wèn),確保重要數(shù)據(jù)不會(huì)被隨意訪問(wèn)。正確配置這一策略很大程度上提高了 API 的安全性,實(shí)現(xiàn)了更高的 API 安全治理。

URI 攔截

URI 攔截策略主要通過(guò)設(shè)置 URI 的一些規(guī)則來(lái)阻止?jié)撛诘奈kU(xiǎn) API 請(qǐng)求。比如一些安全攻擊通過(guò)嗅探 URI 路徑從而發(fā)現(xiàn)潛在的安全漏洞進(jìn)而攻擊。 Apache APISIX 提供了uri-blocker插件來(lái)提供這一能力。通過(guò) uri-blocker 插件可以設(shè)置一些正則規(guī)則,如果請(qǐng)求命中規(guī)則就可以攔截當(dāng)前用戶的請(qǐng)求,例如設(shè)置root.exe、admin,這一插件就可以阻止*/root.exe和*/admin這種類似的請(qǐng)求,進(jìn)一步保護(hù) API 安全。

CORS

CORS 即瀏覽器針對(duì)跨域請(qǐng)求作出的安全策略。一般情況下在瀏覽器中發(fā)出 xhr 請(qǐng)求前瀏覽器會(huì)驗(yàn)證請(qǐng)求地址和當(dāng)前地址是否為同一域,如果在同一域下請(qǐng)求可以直接發(fā)出,否則瀏覽器會(huì)先出發(fā)一個(gè) OPTION 類型的跨域預(yù)檢請(qǐng)求,然后在該請(qǐng)求的響應(yīng)頭中會(huì)有 CORS 相關(guān)的設(shè)置,例如允許跨域請(qǐng)求的方法、允許請(qǐng)求攜帶的憑據(jù)等。瀏覽器會(huì)根據(jù)這些信息決定是否發(fā)出正式的請(qǐng)求,詳細(xì)可以參考 CORS。 一般情況下包含 CORS 設(shè)置的響應(yīng)是由后端服務(wù)設(shè)置的,但是如果服務(wù)數(shù)量很多,在網(wǎng)關(guān)層面針對(duì)不同服務(wù)統(tǒng)一處理會(huì)更加便捷安全。CORS 策略可以在不同的 API 上設(shè)置不同的跨域解決策略,上游服務(wù)無(wú)需再處理這些邏輯。

CSRF

CSRF 即跨站請(qǐng)求偽造攻擊,通常情況下會(huì)使終端用戶在他們已經(jīng)認(rèn)證的站點(diǎn)中執(zhí)行非自愿的動(dòng)作。這種攻擊通常伴隨著社會(huì)工程學(xué)(通過(guò)電子郵件向攻擊者發(fā)送攻擊鏈接),當(dāng)用戶點(diǎn)擊這一鏈接后利用攻擊者在網(wǎng)站中已登陸認(rèn)證的身份執(zhí)行攻擊操作。在網(wǎng)站看來(lái)因?yàn)橛脩粢呀?jīng)登陸,所以所做的任何操作都是正常的。 通常網(wǎng)站的后端服務(wù)需要添加額外的中間件處理這部分邏輯,防范的方法也都有統(tǒng)一的標(biāo)準(zhǔn)。使用 CSRF 策略可以為網(wǎng)關(guān)提供防范這一攻擊的能力,在網(wǎng)關(guān)層統(tǒng)一做 CSRF 安全處理,簡(jiǎn)化上游服務(wù)邏輯復(fù)雜度。

流量處理策略

流量處理策略主要保證 API 網(wǎng)關(guān)進(jìn)行流量轉(zhuǎn)發(fā)的上游負(fù)載都在健康范圍內(nèi),同時(shí)在請(qǐng)求轉(zhuǎn)發(fā)前或者返回給調(diào)用者前對(duì)請(qǐng)求進(jìn)行按需改寫。這一類型的策略主要圍繞限流限速、熔斷、緩存、重寫等功能展開(kāi)。

限流限速

在資源有限的情況下,API 可以提供的服務(wù)能力是有一定限度的,如果調(diào)用超過(guò)了這一限制可能會(huì)使上游服務(wù)崩潰繼而引起一些連鎖反應(yīng)。限流限速可以防范這種情況的發(fā)生,另一方面也可以有效防止 API 遭受 DDOS 攻擊。 在限流限速策略中可以設(shè)置一個(gè)時(shí)間窗口和可允許最大的請(qǐng)求數(shù)量,在時(shí)間窗口內(nèi)超過(guò)這個(gè)數(shù)量的請(qǐng)求會(huì)被拒絕并返回設(shè)置的信息,直到請(qǐng)求數(shù)量低于設(shè)定的值或到下一個(gè)時(shí)間窗口后會(huì)允許繼續(xù)訪問(wèn)。 請(qǐng)求計(jì)數(shù)的憑據(jù)可以設(shè)置為請(qǐng)求中的變量或著某一個(gè)請(qǐng)求頭等,例如根據(jù)不同的 IP 設(shè)置相應(yīng)的限速策略。實(shí)現(xiàn)更加靈活的控制。

熔斷

API 熔斷策略可以為上游服務(wù)提供熔斷能力,使用這一策略時(shí)需要設(shè)置上游服務(wù)健康和不健康的狀態(tài)碼,用于網(wǎng)關(guān)判斷上游服務(wù)狀態(tài)。另外還需要設(shè)置觸發(fā)熔斷或者恢復(fù)健康的請(qǐng)求次數(shù),連續(xù)達(dá)到這一次數(shù)后即判定為對(duì)應(yīng)的狀態(tài)。當(dāng)上游服務(wù)連續(xù)向網(wǎng)關(guān)返回一定次數(shù)的不健康狀態(tài)碼后,網(wǎng)關(guān)就會(huì)熔斷該上游服務(wù)一段時(shí)間,在這段時(shí)間內(nèi)不再向該上游轉(zhuǎn)發(fā)請(qǐng)求而是由網(wǎng)關(guān)直接返回錯(cuò)誤。可以防止上游服務(wù)因?yàn)殄e(cuò)誤后繼續(xù)接收請(qǐng)求出現(xiàn) “雪崩”,保護(hù)業(yè)務(wù)服務(wù)。超過(guò)這一時(shí)間后網(wǎng)關(guān)會(huì)再次嘗試向上游轉(zhuǎn)發(fā)請(qǐng)求,如果還是返回不健康的狀態(tài)碼,網(wǎng)關(guān)就會(huì)繼續(xù)熔斷更長(zhǎng)的時(shí)間(加倍)。直到轉(zhuǎn)發(fā)請(qǐng)求后上游連續(xù)返回了一定次數(shù)的健康狀態(tài)碼,則網(wǎng)關(guān)認(rèn)為上游服務(wù)恢復(fù)健康,后續(xù)會(huì)繼續(xù)往該上游節(jié)點(diǎn)轉(zhuǎn)發(fā)流量。 在這個(gè)策略中還需要設(shè)置當(dāng)不健康后需要返回的狀態(tài)碼和信息,當(dāng)上游服務(wù)不健康后請(qǐng)求在網(wǎng)關(guān)層面直接返回,保護(hù)業(yè)務(wù)服務(wù)穩(wěn)定。

流量拆分

流量拆分策略可以動(dòng)態(tài)控制將流量按比例轉(zhuǎn)發(fā)給不同的上游服務(wù),這在灰度發(fā)布或藍(lán)綠發(fā)布中非常有用。 灰度發(fā)布又名金絲雀發(fā)布,當(dāng)服務(wù)發(fā)布新功能時(shí)可以僅讓一部分請(qǐng)求使用新的服務(wù),另一部分仍然停留在舊的服務(wù)中。如果新服務(wù)保持穩(wěn)定,則可以增加比例逐步將所有請(qǐng)求轉(zhuǎn)移到新的服務(wù)中,直至比例完全切換,完成服務(wù)升級(jí)。 藍(lán)綠發(fā)布則是另一種發(fā)布模式,可以做到在用戶使用的高峰期進(jìn)行發(fā)布,同時(shí)不會(huì)中斷服務(wù)。服務(wù)的舊版本和新版本會(huì)同時(shí)共存。一般會(huì)將生產(chǎn)環(huán)境(藍(lán)色)復(fù)制到一個(gè)相同但是單獨(dú)的容器中(綠色)。在綠色環(huán)境中發(fā)布新的更新,之后將綠色和藍(lán)色一同發(fā)布至生產(chǎn)環(huán)境。之后就可以在綠色環(huán)境中進(jìn)行測(cè)試和修復(fù),在這期間用戶訪問(wèn)的還是藍(lán)色系統(tǒng)。之后可以使用某些負(fù)載均衡策略將請(qǐng)求重定向到綠色環(huán)境中。藍(lán)色環(huán)境即可保持待機(jī)作為災(zāi)難恢復(fù)選項(xiàng)或者用作下一次更新。 APISIX 的 traffic-split 插件通過(guò)流量拆分對(duì)上述提到的兩種發(fā)布類型都進(jìn)行了很好的支持,使得業(yè)務(wù)部署更加便捷可靠。

請(qǐng)求重寫

在現(xiàn)代微服務(wù)架構(gòu)中,尤其是服務(wù)端與服務(wù)、服務(wù)與服務(wù)之間充斥各種不同的協(xié)議,或著請(qǐng)求數(shù)據(jù)格式不統(tǒng)一,這些問(wèn)題如果單獨(dú)在各自服務(wù)之間實(shí)現(xiàn)轉(zhuǎn)換處理會(huì)產(chǎn)生很多冗余的邏輯代碼并且難以管理。一些請(qǐng)求重寫策略可以處理一些協(xié)議轉(zhuǎn)換、請(qǐng)求體改寫等邏輯。 APISIX 提供了 response-rewrite 插件可以用來(lái)修改上游服務(wù)返回的 Body 或者 Header 信息內(nèi)容,支持添加或者刪除響應(yīng)頭,設(shè)置規(guī)則修改響應(yīng)體等。這在設(shè)置 CORS 響應(yīng)頭實(shí)現(xiàn)跨域請(qǐng)求設(shè)置或者設(shè)置 Location 實(shí)現(xiàn)重定向等場(chǎng)景中很有用。 另一方面,對(duì)于請(qǐng)求重寫 APISIX 則提供了 proxy-rewrite 插件也可以處理代理到上游服務(wù)的請(qǐng)求內(nèi)容,可以對(duì)請(qǐng)求的 URI、方法、請(qǐng)求頭等重寫,在很多場(chǎng)景下為業(yè)務(wù)處理提供了便捷。

故障注入

故障注入測(cè)試是一種軟件測(cè)試方法,通過(guò)在系統(tǒng)中故意引入錯(cuò)誤來(lái)確保系統(tǒng)的行為正常。通常在部署之前進(jìn)行測(cè)試以保證在生產(chǎn)環(huán)境中沒(méi)有潛在的故障。在一些混沌測(cè)試場(chǎng)景下,需要對(duì)服務(wù)注入一些錯(cuò)誤來(lái)驗(yàn)證服務(wù)的可靠性。 軟件的故障注入可以分為編譯時(shí)注入和運(yùn)行時(shí)注入。編譯時(shí)注入指在編寫軟件的過(guò)程中通過(guò)改變某些代碼或邏輯來(lái)實(shí)現(xiàn);運(yùn)行時(shí)注入通過(guò)向正在運(yùn)行的軟件環(huán)境中設(shè)置錯(cuò)誤來(lái)測(cè)試軟件的行為。故障注入策略可以在網(wǎng)關(guān)中以運(yùn)行時(shí)注入的方式,模擬應(yīng)用網(wǎng)絡(luò)請(qǐng)求中的故障。通過(guò)在策略中設(shè)置一個(gè)比例,命中這個(gè)比例內(nèi)的請(qǐng)求會(huì)執(zhí)行設(shè)置好的故障邏輯,比如延遲時(shí)間返回,或直接返回設(shè)置的錯(cuò)誤碼和錯(cuò)誤信息給調(diào)用方。 通過(guò)這種方式可以增加軟件的適應(yīng)性,讓開(kāi)發(fā)人員提前看到可能出現(xiàn)的一些錯(cuò)誤情況,在發(fā)布之前針對(duì)問(wèn)題做出適應(yīng)性修改。

協(xié)議轉(zhuǎn)換

協(xié)議轉(zhuǎn)換類的策略可以做一些常見(jiàn)協(xié)議之間的轉(zhuǎn)換。比如常見(jiàn)的 HTTP 請(qǐng)求和 gRPC 之間的轉(zhuǎn)換。Apache APISIX 提供了 grpc-transcode 插件可以實(shí)現(xiàn)在網(wǎng)關(guān)接收到 HTTP 請(qǐng)求之后,將請(qǐng)求轉(zhuǎn)碼并轉(zhuǎn)發(fā)給 gRPC 類型的服務(wù),接收到響應(yīng)后以 HTTP 的格式返回給客戶端。這樣客戶端無(wú)需關(guān)注上游 gRPC 的類型,只處理 HTTP 即可。

可觀測(cè)性策略

可觀測(cè)性指在一個(gè)系統(tǒng)中通過(guò)系統(tǒng)的輸出數(shù)據(jù)來(lái)衡量這個(gè)系統(tǒng)運(yùn)行狀態(tài)的能力。在一些簡(jiǎn)單的系統(tǒng)中,因?yàn)橄到y(tǒng)組件數(shù)量相對(duì)較少,出現(xiàn)問(wèn)題時(shí)可以通過(guò)分析各個(gè)組件狀態(tài)得到答案。但是在大型分布式系統(tǒng)中,各種微服務(wù)組件數(shù)量非常大,對(duì)組件一一進(jìn)行排查顯然是不現(xiàn)實(shí)的,這個(gè)時(shí)候就需要系統(tǒng)具備可觀測(cè)性。可觀測(cè)性提供了對(duì)分布式系統(tǒng)的 “可見(jiàn)性”,當(dāng)系統(tǒng)出現(xiàn)問(wèn)題時(shí)它可以提供工程師所需的控制能力,準(zhǔn)確定位問(wèn)題。

4b2a714a-a968-11ed-bfe3-dac502259ad0.png

可觀測(cè)性的數(shù)據(jù)收集可以在應(yīng)用程序組件內(nèi)實(shí)現(xiàn),也可以在其他位置實(shí)現(xiàn)。API 網(wǎng)關(guān)作為所有流量的入口,在 API 網(wǎng)關(guān)中實(shí)現(xiàn)系統(tǒng)的可觀測(cè)性,可以清晰反映出系統(tǒng) API 的使用情況。API 網(wǎng)關(guān)的可觀測(cè)性策略可以幫助到公司的每個(gè)團(tuán)隊(duì):

工程師團(tuán)隊(duì)可以監(jiān)控并解決 API 問(wèn)題;

產(chǎn)品團(tuán)隊(duì)可以了解 API 的使用情況以挖掘背后的商業(yè)價(jià)值;

銷售和增長(zhǎng)團(tuán)隊(duì)可以監(jiān)控 API 使用情況,觀察商業(yè)機(jī)會(huì)并確保 API 提供正確的數(shù)據(jù)。

可觀測(cè)性策略根據(jù)輸出的數(shù)據(jù)類型一般分為三類:Tracing,Metrics 和 Logging。

Tracing

在大型分布式系統(tǒng)中服務(wù)之間的調(diào)用關(guān)系錯(cuò)綜復(fù)雜,Tracing(鏈路追蹤)可以在分布式應(yīng)用中追蹤完整的調(diào)用鏈路、應(yīng)用之間的依賴分析以及請(qǐng)求統(tǒng)計(jì)等內(nèi)容。在系統(tǒng)出現(xiàn)問(wèn)題時(shí)可以幫助工程師確定排查范圍和位置。 Tracing 策略可以在 API 網(wǎng)關(guān)上集成一些其他的分布式調(diào)用鏈路追蹤系統(tǒng),收集信息并記錄。常見(jiàn)的服務(wù)比如 Zipkin、SkyWalking 等。通過(guò) Tracing 策略將這些服務(wù)集成到 API 網(wǎng)關(guān)中,實(shí)現(xiàn)在網(wǎng)關(guān)上數(shù)據(jù)收集和與這些服務(wù)之間的通信,可以幫助工程師解決諸如這個(gè)請(qǐng)求接觸了什么服務(wù)以及引入了多少延遲等問(wèn)題。Tracing 策略使工程師能夠進(jìn)一步確認(rèn)在特定的會(huì)話或相關(guān)的 API 調(diào)用中要看哪些日志,確認(rèn)排查范圍。

Metrics

Metrics 指在服務(wù)運(yùn)行期間收集到的一個(gè)時(shí)間間隔內(nèi)軟件自己的各種觀測(cè)數(shù)據(jù),這些數(shù)據(jù)默認(rèn)是結(jié)構(gòu)化的,可以更好地實(shí)現(xiàn)查詢和可視化。通過(guò)對(duì)這些數(shù)據(jù)分析可以掌握系統(tǒng)當(dāng)下的運(yùn)行狀態(tài)和行為。 Metrics 策略可以在 API 網(wǎng)關(guān)中集成 Prometheus 或 Datadog 這一類服務(wù),為系統(tǒng)提供監(jiān)控、報(bào)警等能力。這一策略通過(guò) API 網(wǎng)關(guān)中的各種接口收集網(wǎng)關(guān)運(yùn)行過(guò)程中的數(shù)據(jù),并將數(shù)據(jù)上報(bào)至上述服務(wù)中。通過(guò)將這些數(shù)據(jù)可視化后開(kāi)發(fā)者可以清晰看到網(wǎng)關(guān)的運(yùn)行狀態(tài),API 請(qǐng)求的統(tǒng)計(jì)信息等數(shù)據(jù)統(tǒng)計(jì)圖。

Logging

日志是在某個(gè)特定時(shí)間系統(tǒng)事件的文本記錄,當(dāng)系統(tǒng)出現(xiàn)問(wèn)題時(shí)日志是首要排查的地方。當(dāng)服務(wù)出現(xiàn)一些意外情況時(shí)工程師依賴日志內(nèi)容查看系統(tǒng) “發(fā)生了什么” 從而找出對(duì)應(yīng)的解決方法。日志內(nèi)容一般分為兩類:API 請(qǐng)求日志和網(wǎng)關(guān)自身的運(yùn)行日志。API 請(qǐng)求日志記錄了 API 網(wǎng)關(guān)在運(yùn)行期間所有的 API 請(qǐng)求記錄,通過(guò)這些記錄工程師可以掌握 API 訪問(wèn)情況,及時(shí)發(fā)現(xiàn)并排查異常請(qǐng)求。網(wǎng)關(guān)自身的運(yùn)行日志則包含了網(wǎng)關(guān)在工作期間發(fā)生的所有事件的記錄,當(dāng) API 網(wǎng)關(guān)自身出現(xiàn)異常時(shí)可以作為排查問(wèn)題的重要依據(jù)。 Logging 策略可以將 API 網(wǎng)關(guān)中的日志存儲(chǔ)在服務(wù)器磁盤中或是推送到一些其他的日志服務(wù)器中,比如 HTTP 日志服務(wù)器、TCP 日志服務(wù)器、UDP 日志服務(wù)器等,或者是其他的日志系統(tǒng)比如 Apache Kafka、Apache RocketMQ、Clickhouse 等。

總結(jié)

這篇文章介紹了什么是 API 網(wǎng)關(guān)策略,并針對(duì)認(rèn)證授權(quán)、安全、流量處理與可觀測(cè)性這四類 API 網(wǎng)關(guān)中常用的策略進(jìn)行描述。API 網(wǎng)關(guān)在所有上游服務(wù)之前接收請(qǐng)求的流量,控制一個(gè)請(qǐng)求是否要轉(zhuǎn)發(fā)以及如何進(jìn)行轉(zhuǎn)發(fā),對(duì)不安全的、未授權(quán)的請(qǐng)求直接拒絕或進(jìn)行限制,這些行為都可以由 API 網(wǎng)關(guān)策略決定。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 網(wǎng)關(guān)
    +關(guān)注

    關(guān)注

    9

    文章

    5203

    瀏覽量

    52389
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1559

    瀏覽量

    63474

原文標(biāo)題:API網(wǎng)關(guān)策略的二三事

文章出處:【微信號(hào):OSC開(kāi)源社區(qū),微信公眾號(hào):OSC開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    確保藍(lán)牙網(wǎng)關(guān)穩(wěn)定連接的8個(gè)核心方法

    。 ?優(yōu)化Mesh組網(wǎng)策略****? · 若使用藍(lán)牙Mesh,配置終端設(shè)備的中繼角色和路由優(yōu)先級(jí),避免單點(diǎn)故障引發(fā)全網(wǎng)癱瘓。 ?三、軟件與系統(tǒng)維護(hù)? ?固件與驅(qū)動(dòng)更新? · 定期升級(jí)網(wǎng)關(guān)固件(如通過(guò)
    發(fā)表于 05-06 16:37

    如何獲取 OpenAI API Key?API 獲取與代碼調(diào)用示例 (詳解教程)

    OpenAI API Key 獲取與使用詳解:從入門到精通 OpenAI 正以其 GPT 和 DALL-E 等先進(jìn)模型引領(lǐng)全球人工智能創(chuàng)新。其 API 為開(kāi)發(fā)者和企業(yè)提供了強(qiáng)大的 AI 能力集成途徑
    的頭像 發(fā)表于 05-04 11:42 ?361次閱讀
    如何獲取 OpenAI <b class='flag-5'>API</b> Key?<b class='flag-5'>API</b> 獲取與代碼調(diào)用示例 (詳解教程)

    深控技術(shù)的不需要點(diǎn)表網(wǎng)關(guān)的隱藏價(jià)值:工程師離職不再等于知識(shí)流失

    深控技術(shù)推出的無(wú)點(diǎn)表工業(yè)網(wǎng)關(guān),通過(guò)配置信息云端化與知識(shí)資產(chǎn)自動(dòng)化沉淀,將離散的工程師經(jīng)驗(yàn)轉(zhuǎn)化為結(jié)構(gòu)化數(shù)字資產(chǎn),重新定義了工業(yè)知識(shí)管理范式。
    的頭像 發(fā)表于 04-24 11:36 ?138次閱讀
    深控技術(shù)的不需要點(diǎn)表<b class='flag-5'>網(wǎng)關(guān)</b>的隱藏價(jià)值:工程師離職不再等于<b class='flag-5'>知識(shí)</b>流失

    藍(lán)牙網(wǎng)關(guān)選擇的方法

    ? · 支持集中管理平臺(tái)(如AC Server)的網(wǎng)關(guān)可批量配置參數(shù),提升運(yùn)維效率。 · 開(kāi)放API接口(300+)和SDK支持二次開(kāi)發(fā),便于與第三方系統(tǒng)(如阿里云、AWS IoT)集成。 ?安全與過(guò)濾
    發(fā)表于 04-21 16:25

    Tick數(shù)據(jù)×股票API:高頻交易策略的精準(zhǔn)引擎

    在金融市場(chǎng)中,每毫秒的延遲都可能意味著數(shù)百萬(wàn)的收益差距。當(dāng)傳統(tǒng)投資者還在依賴K線圖的“輪廓”時(shí),頂尖交易者早已通過(guò)Tick數(shù)據(jù)和股票API的組合,構(gòu)建了洞察市場(chǎng)脈搏的“超感知能力”。這種能力不僅關(guān)乎
    的頭像 發(fā)表于 04-15 10:42 ?340次閱讀

    淵亭KGAG升級(jí)引入“高級(jí)策略推理”

    為了突破現(xiàn)有AI技術(shù)在決策推理方面的局限,淵亭科技對(duì)其知識(shí)圖譜分析平臺(tái)KGAG進(jìn)行了最新升級(jí),創(chuàng)新性地引入了“高級(jí)策略推理”模式。這一模式的引入,實(shí)現(xiàn)了“大模型×知識(shí)圖譜×專家策略×動(dòng)
    的頭像 發(fā)表于 02-14 15:07 ?439次閱讀

    騰訊云率先上線DeepSeek模型API接口,支持聯(lián)網(wǎng)搜索

    API接口,用戶可以輕松接入DeepSeek模型,實(shí)現(xiàn)各種創(chuàng)新應(yīng)用。同時(shí),騰訊云旗下的大模型知識(shí)應(yīng)用開(kāi)發(fā)平臺(tái)——知識(shí)引擎,也成功接入了這兩款模型,并率先支持聯(lián)網(wǎng)搜索功能。這一功能的加入,使得開(kāi)發(fā)者能夠結(jié)合
    的頭像 發(fā)表于 02-10 09:47 ?817次閱讀

    儀器知識(shí)問(wèn)答小課堂

    關(guān)于儀器設(shè)備實(shí)驗(yàn)中的各種知識(shí)問(wèn)題的問(wèn)答
    的頭像 發(fā)表于 12-27 16:21 ?379次閱讀
    儀器<b class='flag-5'>知識(shí)</b>問(wèn)答小課堂

    api驅(qū)動(dòng)的云服務(wù)是什么意思?

    API驅(qū)動(dòng)的云服務(wù)是指利用API技術(shù)來(lái)驅(qū)動(dòng)和提供云服務(wù)的模式。在這種模式下,云服務(wù)提供商會(huì)公開(kāi)一系列的API接口,允許開(kāi)發(fā)者或應(yīng)用程序通過(guò)調(diào)用這些API來(lái)實(shí)現(xiàn)對(duì)云服務(wù)的訪問(wèn)和操作。
    的頭像 發(fā)表于 11-14 10:06 ?461次閱讀

    網(wǎng)關(guān)的設(shè)置規(guī)則

    網(wǎng)關(guān)的設(shè)置規(guī)則涉及多個(gè)方面,包括硬件安裝、網(wǎng)絡(luò)連接、基本配置、高級(jí)配置以及安全設(shè)置等。以下是一篇關(guān)于網(wǎng)關(guān)設(shè)置規(guī)則的詳細(xì)指南,旨在幫助用戶正確配置和管理網(wǎng)關(guān)設(shè)備。
    的頭像 發(fā)表于 09-30 11:48 ?4325次閱讀

    工業(yè)智能網(wǎng)關(guān)在數(shù)據(jù)上云方面的作用、優(yōu)勢(shì)以及實(shí)施策略

    的管理效率、安全性和智能化水平。本文將詳細(xì)探討工業(yè)智能網(wǎng)關(guān)在數(shù)據(jù)上云方面的作用、優(yōu)勢(shì)以及實(shí)施策略。 工業(yè)智能網(wǎng)關(guān)概述 工業(yè)智能網(wǎng)關(guān)是一種用于工業(yè)環(huán)境中的設(shè)備,能夠連接多種網(wǎng)絡(luò)和設(shè)備,實(shí)
    的頭像 發(fā)表于 09-03 13:15 ?501次閱讀

    API :軟件程序間溝通的橋梁

    或許我們不清楚API是什么,但在現(xiàn)實(shí)生活中,API的應(yīng)用場(chǎng)景卻遠(yuǎn)遠(yuǎn)超出了我們的想象。舉個(gè)例子來(lái)說(shuō),當(dāng)我們想要搜索某個(gè)IP地址時(shí),通常是利用API與離線庫(kù)兩種方式去獲取數(shù)據(jù)信息,那么或許你會(huì)疑惑到底
    的頭像 發(fā)表于 08-27 15:54 ?457次閱讀

    天拓四方:邊緣計(jì)算網(wǎng)關(guān)的選擇策略

    ,如何精準(zhǔn)選擇適合自身需求的邊緣計(jì)算網(wǎng)關(guān),成為企業(yè)構(gòu)建高效、可靠的物聯(lián)網(wǎng)系統(tǒng)的重要課題。本文將從需求分析、性能評(píng)估、安全性考量、可擴(kuò)展性與兼容性、以及成本效益五個(gè)維度,深入探討邊緣計(jì)算網(wǎng)關(guān)的選擇策略。 一、
    的頭像 發(fā)表于 08-16 09:34 ?481次閱讀

    關(guān)于使用esp_iot_rtos_sdk 的 wifi_station_connect() api調(diào)用遇到的疑問(wèn)求解

    您好,我有一些關(guān)于使用 esp_iot_rtos_sdk 的 wifi_station_connect() api 調(diào)用的行為的問(wèn)題。 1) 調(diào)用 wifi_station_connect
    發(fā)表于 07-15 06:45

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

    網(wǎng)關(guān)
    橙群微電子
    發(fā)布于 :2024年05月28日 10:32:28