<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          開源微服務(wù)API網(wǎng)關(guān),單核2萬QPS,今年最值得學(xué)習(xí)的開源項目

          共 2221字,需瀏覽 5分鐘

           ·

          2021-11-19 09:04

          文章較長,從概念與場景,到原理與架構(gòu),到性能分析,最后是demo,希望大家有收獲。


          第一部分:解決什么問題。

          什么是微服務(wù)API網(wǎng)關(guān)?
          API網(wǎng)關(guān)是上承前端用戶,下接后端服務(wù)的咽喉之地,是所有客戶端請求響應(yīng)出入流量的必經(jīng)之路。

          微服務(wù)API網(wǎng)關(guān)有什么用?
          它除了可以做最基礎(chǔ)的反向代理之外,還可以處理通用的公共服務(wù)邏輯,如負(fù)載均衡、灰度發(fā)布、限流熔斷、統(tǒng)一認(rèn)證授權(quán)、可觀測性、動態(tài)路由、協(xié)議轉(zhuǎn)換、服務(wù)編排、流量鏡像、健康檢查、監(jiān)控報警、安全防御等等等等。

          說得這么抽象,有沒有具體的場景呢?
          對應(yīng)到具體場景,舉幾個常見的例子。

          場景一:負(fù)載均衡。
          當(dāng)服務(wù)器負(fù)載上升時,需要立即對系統(tǒng)資源進行容量評估,適當(dāng)增加擴容服務(wù)器資源,讓每臺服務(wù)器可以平均承載分擔(dān)請求壓力,此時應(yīng)該采用何種負(fù)載策略:輪詢、隨機還是哈希?果你有API網(wǎng)關(guān),在后臺配置好,即可自動實現(xiàn)。

          場景二:灰度發(fā)布。
          上了一個新功能,需要每天自動放 5% 的流量,10天后再一次性全部放開給所有用戶。在此期間,可以對新功能加以驗證,并對性能和穩(wěn)定性加以觀測優(yōu)化,提前發(fā)現(xiàn)問題、解決問題?果你有API網(wǎng)關(guān),在后臺配置好,即可自動實現(xiàn)。

          場景三:限流熔斷。
          雙 11 即將來臨,可能會出現(xiàn)流量大增,如果沒有一定的過載保護策略機制,服務(wù)也將面臨重大考驗。希望實現(xiàn)系統(tǒng)狀態(tài)不健康或超過閾值時,自動保護上游后端服務(wù),觸發(fā)限流限頻或熔斷機制,并即時報警,避免整個服務(wù)鏈條發(fā)生雪崩,此需求如何實現(xiàn)?果你有API網(wǎng)關(guān),在后臺配置好,即可自動實現(xiàn)。

          場景四:統(tǒng)一認(rèn)證授權(quán)。
          不少公司用戶權(quán)限鑒權(quán)邏輯散落在各站點服務(wù)中,是否可以將目前基于角色的認(rèn)證邏輯和對外開放平臺所使用的 OAuth 授權(quán)認(rèn)證完全抽離出來,統(tǒng)一前置至網(wǎng)關(guān)中?果你有API網(wǎng)關(guān),即可統(tǒng)一實現(xiàn)。

          場景五:可觀測性。
          這么多站點,想知道每個站點的流量分布情況;這么多接口,想知道每個接口的處理時間;無數(shù)的報錯,想知道異常的分布情況;無數(shù)的告警短信與郵件,想統(tǒng)一收口告警規(guī)則與策略...更重要的是,如何呈現(xiàn)統(tǒng)一的看板,實現(xiàn)相關(guān)指標(biāo)的可視化呢?如果你有API網(wǎng)關(guān),在后臺配置配置即可。

          既然API網(wǎng)關(guān)這么重要,有沒有靠譜的,工業(yè)級的API網(wǎng)關(guān)可以“拿來主義”呢?
          推薦一下,Apache APISIX,Apache基金會最快畢業(yè)項目、最活躍的開源API網(wǎng)關(guān)項目,個人覺得,它是今年最值得學(xué)習(xí)的開源項目。

          第二部分:架構(gòu)設(shè)計。

          Apache APISIX使用了怎樣的架構(gòu)設(shè)計方案呢?
          一句話概括,它使用了數(shù)據(jù)平面(data plane)控制平面(control plane)分離的架構(gòu)方案。

          什么是數(shù)據(jù)平面與控制平面?
          數(shù)據(jù)平面和控制平面,不是Apache APISIX第一次提出,它是計算機網(wǎng)絡(luò),報文路由轉(zhuǎn)發(fā)里很成熟的概念:
          數(shù)據(jù)平面(data plane):一般用來做快速轉(zhuǎn)發(fā)。
          控制平面(control plane)為快速轉(zhuǎn)發(fā)提供必要的信息。

          它的設(shè)計原則是:
          (1)在一個路由網(wǎng)關(guān)里,轉(zhuǎn)發(fā)是最重要的工作,它具備最高的優(yōu)先級,數(shù)據(jù)平面(data plane)的設(shè)計核心就是高效轉(zhuǎn)發(fā),如何在最短的時間里處理最多的包,往往使用高效內(nèi)存管理、隊列管理、超時管理等技術(shù)實現(xiàn);
          (2)控制平面(control plane)則不然,它更偏向于控制與應(yīng)用;

          Apache APISIX的核心架構(gòu)借鑒了類似的思路。

          數(shù)據(jù)平面以插件的方式,實現(xiàn)流控,認(rèn)證,安全,日志等等眾多的微服務(wù)網(wǎng)關(guān)核心功能。
          控制平面以服務(wù)與后臺的方式,實現(xiàn)數(shù)據(jù)收集,命令下發(fā),可視化工作臺等功能。
          畫外音:插件的方式,使得用戶可以快速配置需要的功能,并能夠定制化自己期望的功能。

          第三部分:性能。

          通過插件實現(xiàn)了這么多功能,它對請求轉(zhuǎn)發(fā)性能有多大影響呢?

          可以看到:
          (1)單核QPS能跑到1.8W+;
          (2)延時在0.2ms左右,幾乎可以忽略不計;
          (3)除了傳統(tǒng)的HTTP,還支持Dubbo,MQTT,gRPC等諸多協(xié)議;
          (4)…
          畫外音:非常適合做微服務(wù)網(wǎng)關(guān)。

          官網(wǎng)地址https://apisix.apache.org/

          第四部分:demo。

          這是我覺得這個開源項目最帥氣的地方,項目提供了非常完善的中文手冊,能夠幫助我們快速上手,快速體驗:
          (1)如何用幾個命令快速安裝APISIX;
          (2)如何快速配置APISIX;
          (3)如何測試并驗證APISIX;
          (4)OK,可以在后臺查看并控制你的網(wǎng)關(guān)了;
          體驗之后,再閱讀源碼,更有感覺喲。

          Git地址:https://github.com/apache/apisix
          文檔地址:
          https://apisix.apache.org/zh/docs/apisix/getting-started

          這個項目靠譜嗎?有哪些公司在使用?
          絕非KPI式開源項目,Apache APISIX已經(jīng)在NASA、騰訊、華為、微博、網(wǎng)易、貝殼、360等公司有著廣泛的使用,已然成為世界上最活躍的開源網(wǎng)關(guān)項目。
          畫外音:你沒看錯,就是美國航空航天局的那個NASA。

          對了,如果你對這個項目也感興趣,歡迎關(guān)注項目的官方公眾號。

          APISIX更多干貨,歡迎關(guān)注


          閱讀原文,跳轉(zhuǎn)Git主頁,標(biāo)個“星”吧。
          瀏覽 67
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美成人精品在线观看 | 亚洲黄色视频大全 | 91精品国产乱码久久 | 婷婷黄色网址导航 | 777久久婷婷成人综合色 |