日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

網關作為應用系統的流量防衛兵,可以說在保障整個系統的穩定運轉過程中發揮著不可或缺的作用。不管未來的技術形態如何演進,不管是否能出現云原生架構全面取代傳統的部署模式,可以確定的是,微服務網關的持續性規劃和建設對于一個互聯網公司來說,都是一項值得長期投入的工作。

一、網關概述

網關的出現可以說是互聯網產品技術發展到一定階段自然演進的產物,大體來說,網關從誕生到形成當下大家熟悉的形態,大體經過了下面的幾個發展階段。

1、硬負載網關

在早期 web 應用中,大多數互聯網產品使用遠未達到今天的規模,所以企業在應用部署上對網關的職能并無太高要求。基本上來講,只要網關能滿足從域名解析到 IP 地址背后的服務代理即可,即所謂服務代理轉發。有必要的話,還需滿足服務的負載均衡。那個時代,諸如 Nginx 這類軟負載均衡軟件的出現時機尚未成熟,所以很多企業選擇類似于 F5 這類硬件設備作為第一選擇,也就是基于 web 應用下的硬負載網關。這時候網關職能簡單,從部署到使用的流程也簡單。

2、軟載網關

隨著互聯網產品的使用規模越來越大,技術、網絡、服務器等基礎設施的完備,傳統硬負載網關的使用成本,維護成本越來越高。加上這類硬件設施在面對層出不窮的新問題時,開始顯得力不從心,以 nginx 為代表的軟負載均衡軟件開始規模化應用。軟負載網關的好處是明顯的,以使用成本低,部署簡單,靈活性強,可移植性好等眾多的優勢逐漸替代傳統的 F5 這類硬負載網關。

同時,nginx 網關在面對更加復雜的互聯網場景時,也逐步開始支持集成更多外部的插件提供快速易用的解決方案,從而逐漸取代傳統的硬負載網關。更重要的是,nginx 代表的新型網關開始在微服務化的架構體系下逐漸呈現出新的優勢,比如可以對 API 資源可做定向的路由規則配置,輕量化的負載均衡等。

3、微服務網關

移動互聯網時代讓眾多的互聯網產品被推上流量的風口,這種情況下,以微服務架構為主流的形態流行起來。一個對外提供服務的應用系統來說,背后是少則幾個,多則幾十個甚至上百個微服務的共同協作,其實就是不同微服務之間 API 資源的復雜的調用,通過 API 傳送不同業務數據促使一個業務流程的正常運轉。

面對越來越復雜的業務場景,微服務架構面臨的一個新問題就是對 API 的治理,而 API 治理中的一個比較大的痛點就是如何對 API 納入統一的管控,這包括:服務發現,服務治理,認證鑒權,灰度發布,流量監控,限流降級等,說到底,API 作為互聯網企業最寶貴的服務資源,企業需要積累起統一管理這些分散的 API 資源能力從而讓 API 更好的輸出自身的價值,在這種情況下,微服務網關就應運而生。

4、云原生網關

從 2016 年開始,容器化技術開始走進互聯網技術圈,容器化這個名詞以 Docker 為代表的出現開始在不少互聯網公司嘗試并加以運用。而經歷了移動互聯網的高速發展,容器化技術的深度使用讓人們看到了它的優勢,以及為企業的生產帶來的價值增長,于是以 k8s 為代表的新一代云原生技術架構開始統治市場,成為一種既定的行業標準。

在這種情況下,微服務架構模式下的應用亟需開始布局產品從傳統的微服務部署模式到支持云原生部署模式的轉變。而微服務網關作為整個微服務架構下非常重要的基石服務,可以說是打頭陣,慶幸的是,為了解決很多企業對于網關適配云原生下的部署架構,開始陸續出現很多新型的支持云原生部署模式下的網關,以 k8s 中 ingressController 為代表的云原生網關,事實上逐漸成為一種標準和接入規范。云原生網關以面臨的場景更復雜,需求更加多樣,定制程度更高,且對流量的管控更苛刻為特點,逐漸為人們認識,作為接下來微服務架構的治理轉型和部署演進趨勢,不少互聯網公司對此進行提前的布局。

二、API 網關演進歷史

通過上面的介紹,對網關的作用有了基本的認識,在產品的部署架構上,不管是哪種網關,說到底都是為了解決對底層 API 資源的訪問做到精細化,透明化,合理化的訪問控制,接下來聊聊作為應用服務最重要的資源入口,API 網關的發展歷史。

1、API 網關來源

網關對于任何一個互聯網產品來說都必不可少,作為系統架構最底層也是最寶貴的 API 資源,在面臨復雜的外部環境時,對 API 資源的保護也成了架構規劃和治理中的重中之重,通常來說,對于一個生產系統的 API 來說,常用的保護措施如下:

  • 反向代理,隱藏真實的 API 路徑。
  • 對入口的熱點請求 API 統一限流。
  • 防刷監控告警。
  • API 訪問授信,訪問鑒權。
  • ...

經歷過互聯網項目早期開發的同學,比較快捷且簡單的辦法是在項目中寫一段公共程序,在這段代碼中對過來的請求 URL 進行鑒權,鑒權通過,才允許對 API 進行訪問,對 API 的限流保護也是做類似的操作,但是這樣的做法問題也是明顯的,

  • 鑒權或限流的業務與主線業務耦合嚴重,給后續的拆分埋下了技術難點。
  • 難以對 API 資源的統一管控做精細化管理。
  • 架構擴展困難,當系統流量上去之后,鑒權或限流邏輯容易成為系統瓶頸。
  • 支撐的后續業務場景容易受到制約。
  • ...

舉個簡單的例子來說,假如說一開始能夠預知某個 API 后期被調用的頻率很高,提前對該 API 做限流,但是隨著業務的增長,更多的 API 需要限流,這就需要項目代碼中不斷做調整,設想如果有一個公共的可以實現流量管控的地方統一管理,這個問題豈不就迎刃而解了嗎?這就是所謂 API 集中治理的痛點。基于這個痛點,API 網關就產生了。

2、nginx 統一 API 路由

nginx 的出現和大規模生產實踐可以說為 API 資源的統一治理奠定了重要的基礎。在大多數場景下,nginx 主要作為服務端 API 的反向代理服務器,統一管控服務端的路由地址列表,相當于是 API 服務網關。

如下為一段使用 nginx 配置后端服務的反向代理路由配置,相信稍有經驗的同學應該不陌生,這樣做帶來的好處也是明顯的,不僅對外隱藏了真實的 API 地址,起到了一定的安全保護作用,同時也提供了一個統一的對外流量訪問入口,從這個角度來看,nginx 在這里,承載了一個作為 API 網關的角色。

server {
    listen       9001;
    server_name  www.abc.com;
 
    location /user {
        proxy_pass http://platform_user/user/;
    }

         location /manage {
        proxy_pass http://platform_manage/manage/;
    }
  }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

3、微服務可編程式網關

盡管 nginx 功能很強,可以發揮系統對外的網關作用,但是不難發現,在微服務架構體系下,nginx 能夠發揮的作用依然是有限的,具體來說,當出現如下場景時,使用 nginx 網關就很難處理:

  • 對請求來源的身份進行識別,即請求的認證鑒權;
  • 對平臺內部應用的請求頻率做定向定量的分析;
  • 對不同來源的請求進行日志審計,并接入告警監控;
  • ...

類似的場景還有很多,此時像傳統網關 F5 或 nginx,在應對這類場景問題的解決上就顯得力不從心了。究其原因,微服務架構下看似眾多的服務模塊屬于一種松散的“耦合”聚在在一起,服務之間大多數情況下是處于一種相對“無狀態”的模式下,這種情況下,要解決上面這些場景的痛點,無疑需要在整個微服務架構之前,架設一道應用級的 API 網關,即所謂的可編程式的 API 網關,比如在微服務技術解決方案中,出現了很多可編程式的網關,像 springcloud 中 zuul,gateway 等優秀的可編程式網關,可編程網關的優勢更加突出,主要具備如下特點:

(1)路由配置規則更豐富

相比 nginx,可編程式網關在路由規則的配置上靈活性更高,動態性更好,支持的場景也更豐富,學習成本更低等特性。

(2)支持編程式擴展

可編程式網關相比傳統 nginx 等網關最靈活的一點,莫過于可根據業務的需求通過編程的方式實現功能的快速擴展。比如說,現在需要對某一類的請求進行風險識別,如果是 nginx,盡管現在可以通過集成其他插件進行編碼,但這個成本是相當巨大,而且給后續的運維帶來了高昂的代價,而這個需求在編程式網關中可以說是非常簡單了,支持主流的編程語言,只需簡單的幾行代碼,不管是開發,運維,測試等人員,都可以快速的做到。

(3)支持高度定制化

一種技術在選型階段時,一個重要的考量指標就是這種技術是否能滿足很多復雜的定制化場景,以限流來說,nginx 能夠提供的限流解決方案是很有限的,譬如對來源 IP,網段,黑白名單中特定 IP 源,或請求參數等場景,但涉及到更高級的限流,比如對熱點請求限流、特定應用限流,甚至具體到 API 級別的限流場景時,nginx 這類網關就顯得力不從心了,而這些帶有定制化場景下的限流解決方案,是需要通過定制化的編程才可能完成。

(4)支持API的動態治理

服務治理說到底具體表現就是對服務的 API 治理,利用可編程式網關的能力,架設 API 網關服務,在網關服務中,可以對 API 資源做更加豐富的場景化,模塊化,定制化,生態化的治理,比如在分布式 API 鏈路追蹤與監控還不夠成熟的情況下,通過接入 API 網關,在 API 網關中通過編碼的方式監控所有的入口請求,就可以做到對 API 調用的實時監控,甚至對惡意請求進行風控、告警,為后續 API 級別的熱點請求做限流提供數據的可觀測性支持。

三、云原生網關

從云基礎設施的逐漸完善,到云原生技術的規模化實踐,越來越多的廠商開始擁抱云技術帶來的變更。以 k8s 生態為代表的云原生技術被越來越多的人接受,并在自身的產品中進行嘗鮮探索。這其中,作為流量的入口,云原生網關的出現逐漸彌補并充實了云原生技術生態在統一流量治理方面的難題。如下為近些年比較流行的云原生網關 apisix 的典型應用場景圖。從圖中可以看到,云原生網關深耕于當下流行的 k8s 云原生技術,利用自身的產品化優勢為微服務進行 k8s 的生產實踐擴展新的配置使用入口,這也是典型的云原生網關的特點。

而隨著云原生技術的不斷演進和需求的增長,現在陸續出現了很多不同的網關產品,有基于 NGINX 的,有基于 Envoy 的,還有很多新的基于 Golang 的網關產品,云原生的發展給網關提出了新的要求,具體來說,作為云原生網關,至少需要具備下面的特點:

1、能夠實現配置規則的熱加載

使用過 nginx 的同學應該不陌生,如果需要給 nginx 配置新的路由訪問規則,配置完成后,需要重啟 nginx,規則才能生效,這在大規模生產環境下可以說是一個長久以來一直沒有很好解決的難題,隨著微服務應用的增多,服務的配置變更可能非常頻繁,每秒甚至都有幾十甚至上百個配置規則需要配置,在這種情況下,重啟 NGINX 將不可避免的帶來服務的短暫性不可用的尷尬情形。所以,云原生網關需要解決的首要問題就是如何實現配置規則的熱加載生效。

2、能夠實現集群化管理

我們知道,nginx 集群的搭建需要借助其他的中間組件,而且在實際運維過程中,nginx 集群并不是很友好,其實是具備相當的人力成本的,尤其是在對 nginx 集群的管理中,一個讓人頭疼的地方就是同樣的配置規則需要在多處進行修改。假如說,能夠方便地修改一個地方,然后所有的控制流量 API 網關都能夠生效的話,這就大大解放了人力,所以云原生網關需要具備這樣的能力,方便開發和運維人員能夠方便的通過網關實現集群化管理。

3、能夠支持二次定制化場景開發

作為 API 流量的入口,控制著所有入口的流量,不管是傳統的 API 網關,還是云原生網關,都應該具備流量治理能力,流量治理說到底就是網關需要能夠結合實際業務的需要,比如針對不同的語言,不同的協議,能夠快速的進行簡單的二次開發,以滿足眾多的個性化場景,像 Apisix,Kong,Higress 等云原生網關產品,都已經初步具備二次開發能力。

4、具備優良的性能

盡管 nginx 在云原生網關的場景下看起來有些不合時宜了,但是 nginx 作為一款經久不衰的反向代理和負載均衡服務,性能方面可以說是很高的,而云原生網關的出現,盡管彌補了 nginx 在其他方面的不足,但歸結到現實的產品落地使用時,性能是否足夠優秀仍然是考驗網關的第一標準,如果犧牲了網關的性能,最終也很難經受住市場的考驗。

5、支持插件化擴展

不管是從開發還是運維的視角,一款優秀的軟件之所以能夠保持長久的生命力,一個不可忽視的因素就是該軟件的生態圈是否足夠大。以編輯器 vsocde 來說,從早期的文本編輯功能,到如今集成并支持成百上千個內置可擴展的插件單元,讓 vscode 在行業內始終保持很高的競爭力,類似的 Jenkins 也不例外。

隨著微服務技術生態的擴展,各種與微服務相關的中間件層出不窮,以服務注冊中心來說,大家熟悉的 zookeeper,eureka,consul,nacos 等,眾多的中間件讓微服務技術架構在選型時有了更寬的視角,說到網關,試想如果一款云原生網關無法兼容對市場主流的 API 鑒權組件,API 限流組件,服務注冊組件等,那么在未來注定被拋棄,而插件化的模式也逐漸被很多云原生網關產品所吸收并使用,利用插件化的技術,開發運維人員可以很方便的根據場景的需要,快速接入新的外部組件到網關中,適配個性化的場景。

四、微服務網關發展趨勢

1、趨勢一:支撐豐富的插件化生態

插件化趨勢已經在不少應用軟件領域取得了卓有成效的效果,插件化模式的好處是顯而易見的,為了讓更多的技術開發者,開源生態技術快速融入你的應用,插件化是一個快速、高效的體驗模式,比如當你需要在 jenkins 上快速體驗某個新功能時,無需多想,去應用市場中搜一把再說,幾個點擊的動作就可以完成技術的嘗鮮。

對于網關來說,技術選型階段,拋開那些必備的功能性技術點,是否具備快速接入接入市場主流的技術棧,滿足用戶復雜多樣的使用場景,也是一個極其重要的考慮因素。以云原生網關 apisix 來說,經歷了市場多年的沉淀,從部署上,支撐裸機部署,容器化部署,k8s 部署,從使用上,支撐 api 規則配置,可視化界面配置,在與微服務架構的對接使用中,apisix 與 springcloud-alibaba 等眾多開源的組件進行無縫融合,這樣一來,使用 apisix 對微服務在進行云原生的部署中也可以很好的實現無障礙跨域,這對技術架構選型無疑是一大亮點。

2、趨勢二:統一 API 標準,向云原生微服務架構演進

隨著云原生技術的迅猛發展,云原生網關大有統一并取代微服務網關的趨勢,眾多的互聯網廠商也是看到了這一點,開始布局云原生網關,以期在云原生技術的實施落地中搶占制高點。

前面提到,作為微服務架構中最底層也是最核心的 API 資源,可以說是整個云原生架構的基石,不管未來云原生的商業化運用以何種技術呈現,API 的標準實現規范仍舊是最根本的。基于一套 API 可以有不同的實現,既讓用戶不被具體實現鎖定,又可以橋接技術演進的鴻溝。或許有一天 K8s 會消失,docker也不復存在,但面向抽象的 API 標準定會長存。

在流量網關領域,盡管發展到今天,Ingress API 已經成為標準,但是對于微服務網關等更復雜的使用場景,Ingress 受限于其簡單的協議字段,需要通過 Ingress 注解等方式進行能力擴展,現階段來說還很難被標準化。因此諸如 Contour、Emissary、Kong、APISIX 等都開始定義自己的 HTTP 路由等 CRD,這就是說,從當前的現狀來看,微服務網關的 API 定義開始呈現碎片化的模式。

這一背景之下,Gateway API 標準應運而生,并且在過去的一年里已經從 alpha 演進到了 beta 階段。雖然目前 Gateway API 還未最終定稿,涉及到的標準協議仍會發生變動,不建議用于生產,但 API 統一趨勢已經不可阻擋,不過是時間問題了。

下圖是使用Gateway API 的一個用例場景,不同于 Ingress API,將集群運維和業務運維的職責進行了劃分,這樣業務開發人員不再需要關心網站證書等集群級的細節,只需專注業務本身的 DevOps,集群運維任務可以交給 SRE 人員進行統一處理。

而采用三合一的架構后(下圖所示),可以顯著降低成本,同時提高系統整體可用性,水平動態擴展性。這也符合 DevSecOps 的微服務演進趨勢,微服務開發者可以更多地從業務接口視角關注安全性,而不是在每一層做過于繁瑣的安全防護措施以增加系統的復雜性。

五、寫在文末

網關作為應用系統的流量防衛兵,可以說在保障整個系統的穩定運轉過程中發揮著不可或缺的作用。不管未來的技術形態如何演進,不管是否能出現云原生架構全面取代傳統的部署模式,可以確定的是,微服務網關的持續性規劃和建設對于一個互聯網公司來說,都是一項值得長期投入的工作,可以預見的是,在不久的未來,網關將以特殊的角色扮演,在企業系統對外提供產品服務價值的基礎上發揮不可估量的作用。

分享到:
標簽:API
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定