近期阿里云重磅發(fā)布了BizWorks一體化的云原生應用的開發(fā)和運營平臺,內(nèi)置阿里巴巴業(yè)務中臺構(gòu)建的最佳技術實踐。BizWorks提供的產(chǎn)品能力,普遍適用于企業(yè)云原生應用高效開發(fā)以及企業(yè)業(yè)務能力沉淀和復用的場景。BizWorks提供業(yè)務架構(gòu)師一整套的可視化業(yè)務建模工具,極大提升設計效率;同時,基于這套建模產(chǎn)出,形成代碼框架,讓業(yè)務中臺復雜的變成過程簡化為填空題,減低開發(fā)難度、提升研發(fā)效率,并在部署環(huán)節(jié)完成設計與實現(xiàn)的一致性校驗,保證實現(xiàn)質(zhì)量。BizWorks已經(jīng)將API網(wǎng)關作為關鍵組件融入其中,并且基于API網(wǎng)關為用戶提供能力開放平臺。那么API網(wǎng)關是如何在BizWorks中起到作用?API網(wǎng)關在實際業(yè)務中又起到怎樣幫助?本文就此展開詳細說明。
阿里云API網(wǎng)關是阿里云自研的一款高性能網(wǎng)關,主要面向公有云用戶提供API托管服務、流控、認證、安全等能標準的API網(wǎng)關能力。阿里云的API網(wǎng)關原生對接了阿里云的非常多的標準云產(chǎn)品,能夠?qū)⒗镌频亩嗫町a(chǎn)品聚合起來為用戶提供一套整體解決方案,提供業(yè)務數(shù)據(jù)完全打通的能力強大的整套基礎設施。本文詳細描述了以API網(wǎng)關作為中樞的應用體系架構(gòu),用戶可以參考本文快捷地搭建一套服務于大型應用的功能全面的服務器側(cè)架構(gòu)。
1、應用體系架構(gòu)的主要訴求
我們運營一個成熟的APP,對服務器端大致有五種類型的主要訴求:
- 處理業(yè)務類請求:處理用戶自己業(yè)務系統(tǒng)的業(yè)務,比如客戶端向服務器端發(fā)送的用戶注冊、登錄、獲取用戶資料等請求,Web客戶端向服務器端發(fā)送獲取商品描述等請求;
- 處理文件類請求:這個比較好理解,就是客戶端向服務器端發(fā)送上傳、下載文件的請求,比如圖片,語音等多媒體文件;
- 處理數(shù)據(jù)統(tǒng)計類請求:運營平臺需要統(tǒng)計一些運營數(shù)據(jù),業(yè)務大屏需要展示一些統(tǒng)計數(shù)據(jù)等,需要服務器端將業(yè)務數(shù)據(jù)經(jīng)過聚合等處理后通過接口形式提供給Web客戶端;
- 調(diào)用三方接口處理特定請求:比如調(diào)用三方的人臉識別接口,三方的天氣查詢接口等專業(yè)接口;
- 業(yè)務可監(jiān)控,遇到異常情況可以自動報警對業(yè)務運行情況的監(jiān)控和報警是一個服務器端架構(gòu)必須要考慮的方面,
這五類主要訴求都能通過API網(wǎng)關原生集成阿里云的其他標準產(chǎn)品來統(tǒng)一完成,下面我們來講講具體如何實現(xiàn)。
2、API網(wǎng)關作為中樞的應用體系架構(gòu)
2.1、整體架構(gòu)
上圖是利用API網(wǎng)關構(gòu)建一個標準的APP服務器端架構(gòu)圖,我們可以看到API網(wǎng)關處于業(yè)務流量入口,原生集成了多款阿里云的標準產(chǎn)品。所有客戶端的請求先發(fā)送到API網(wǎng)關,由API網(wǎng)關根據(jù)用戶配置的API元數(shù)據(jù)將請求路由到不同的類型的后端實現(xiàn)不同類型的業(yè)務分發(fā),API網(wǎng)關和這些后端類型產(chǎn)品是原生集成,默認內(nèi)網(wǎng)通信,大幅降低用戶配置難度的同時也提高了通訊效率。同時經(jīng)過API網(wǎng)關的API調(diào)用日志都會被API網(wǎng)關實時同步到用戶的SLS日志、云監(jiān)控和ARMS業(yè)務監(jiān)控中,大幅增強用戶的業(yè)務監(jiān)控與報警能力。
2.2、統(tǒng)一的域名接入與業(yè)務分發(fā)
API網(wǎng)關提供實用的域名與證書托管能力,用戶可以將自有的域名和對應的證書托管到API網(wǎng)關上,所有的API均可以通過統(tǒng)一的自有域名對外提供基于HTTPS的服務,包括業(yè)務類請求,文件類請求和數(shù)據(jù)類型請求,由API網(wǎng)關將不同類型的API請求分發(fā)到不同的后端服務中去。API網(wǎng)關的域名與證書托管在業(yè)務接入方面為用戶提供了一系列增強能力:
- API網(wǎng)關提供基于標準的跨域插件配置能力,用戶可以在自有域名上為不同API配置不同的跨域策略,便于將自己的API提供給第三方或者自有的其他域名在瀏覽器上進行調(diào)用;
- API網(wǎng)關除了可以托管用戶的單域名,還支持托管泛域名及其對應的SSL證書,適配利用泛域名提供業(yè)務的平臺型業(yè)務,比如阿里的個人網(wǎng)盤業(yè)務就是使用的API網(wǎng)關進行的接入,API網(wǎng)關可以將泛域名的自定義部分作為參數(shù)傳遞給后端服務;
- API網(wǎng)關支持HTTP2的接入,可以大幅提高和客戶端之間的通訊效率;
- API網(wǎng)關基于用戶的不通需求提供三套不通的SSL接入算法選項,用戶可以根據(jù)自己的業(yè)務安全級別來選擇不通的安全策略;
- API網(wǎng)關同時支持HTTPS雙向認證(Mutual TLS authentication),在API網(wǎng)關驗證客戶端發(fā)送的SSL證書是否由用戶的根證書頒發(fā)的。
3、融合多款標準產(chǎn)品提供整套基礎設施
API網(wǎng)關除了可以對接用戶自己的后端服務,還可以原生對接多款標準云產(chǎn)品,包括函數(shù)計算,OSS,及一系列數(shù)據(jù)類型的產(chǎn)品,用戶可以輕易在控制臺進行后端服務進行配置后就能完成對接,提供多款產(chǎn)品融合的強大綜合服務能力。API網(wǎng)關與這些后端產(chǎn)品默認使用高效的內(nèi)網(wǎng)通信。
3.1、函數(shù)計算集成
使用API網(wǎng)關與函數(shù)計算提供服務是業(yè)內(nèi)標準的Serverless實現(xiàn),可以充分利用API網(wǎng)關強大的接入能力和函數(shù)計算的代碼托管能力和彈性收縮能力搭建大規(guī)模業(yè)務的Serverless服務器側(cè)架構(gòu)。Serverless架構(gòu)大幅降低了用戶的運維成本,將更多精力聚焦到業(yè)務邏輯的開發(fā)整合上,大大縮短開發(fā)周期。2019 年 雙11 過后,世紀聯(lián)華快速上云,將線上核心業(yè)務改造為全 Serverless 架構(gòu)的中臺模式,采用“函數(shù)計算 API 網(wǎng)關 OTS”作為計算網(wǎng)絡存儲核心,彈性支撐日常和大促峰谷所需資源,輕松支撐 618 / 雙11 / 雙12 大促。
用戶可以在API網(wǎng)關上直接配置已經(jīng)在函數(shù)計算中定義的函數(shù),直接選擇對應的服務和其中的函數(shù)即可,配置非常簡便:
3.2、OSS集成
去年API網(wǎng)關原生集成了OSS產(chǎn)品,用戶可以使用API網(wǎng)關對其客戶端提供文件管理API。OSS產(chǎn)品本身就對用戶提供了文件管理API,為什么還要通過API網(wǎng)關去暴露用戶的文件管理API呢,主要有以下幾條原因:
- 用戶可以在API網(wǎng)關為每個文件、文件夾設置跨域策略,在Web類場景非常實用;
- 用戶可以通過API網(wǎng)關為每個文件、文件夾設置訪問控制策略,可以規(guī)定某些文件只能通過鑒權后才能訪問,API網(wǎng)關提供的鑒權方式比較豐富,除了AK簽名方式,還提供了JWT方式和BasicAuth方式,能適應更多的實際使用場景;同時也可以為每個文件設置IP黑白名單策略;
- API網(wǎng)關提供了后端文件緩存功能,用戶可以通過這個功能將熱點文件緩存起來,大幅提升文件訪問效率;
- 統(tǒng)一的日志、監(jiān)控、報警管理;
用戶可以在API網(wǎng)關上直接選擇已經(jīng)在OSS中創(chuàng)建的Bucket,API網(wǎng)關允許將整個Bucket配置成一個API,配置方式非常簡便:
3.3、數(shù)據(jù)類型產(chǎn)品集成
用戶通過自建的應用或者在函數(shù)計算上托管的服務對客戶端提供業(yè)務類請求API,業(yè)務數(shù)據(jù)存儲在阿里云的云數(shù)據(jù)庫內(nèi)。API網(wǎng)關目前已經(jīng)與Dataworks,Quick BI等大數(shù)據(jù)分析平臺進行原生集成,同時也和數(shù)據(jù)管理服務DMS進行了集成。用戶可以將自己的業(yè)務數(shù)據(jù)通過大數(shù)據(jù)分析平臺得到分析后的數(shù)據(jù),然后通過API網(wǎng)關將這些數(shù)據(jù)能力通過API的形式開放給自己的運營平臺或者開放給第三方。Dataworks直接將API網(wǎng)關嵌入到自己的產(chǎn)品中,用戶在DataWorks生成數(shù)據(jù)API默認通過API網(wǎng)關對外開放能力。用戶可以在API網(wǎng)關控制臺看到這些API,并對其進行精細化管理,比如綁定流控、訪問控制等插件來適配不同的業(yè)務場景。
3.3、云市場API類商品集成
API網(wǎng)關與阿里云的云市場做了深度集成,云市場的API類商品都是通過API網(wǎng)關對其消費者提供服務。用戶可以將自己的能力、數(shù)據(jù)通過云市場的API類商品形式上架到阿里云的云市場來獲取收益,也可以在云市場上購買三方API類商品,將這些三方公司開發(fā)的特定的能力集成到自己的APP中去,比如非常實用的人臉識別API,身份證識別和認證API,天氣類API,IP識別API等等,這些通用能力有專業(yè)的公司去開發(fā),直接借力這些三方公司的專業(yè)能力可以節(jié)省自己的研發(fā)成本而獲得專業(yè)的服務。
API網(wǎng)關在為用戶生成調(diào)用API的SDK的時候,將用戶自己API和在云市場上購買的所有API聚合在一起后生成一個統(tǒng)一的SDK供用戶下載使用。
3.4、SLS日志同步與監(jiān)控報警
用戶可以通過配置,將所有經(jīng)過API網(wǎng)關的調(diào)用日志同步到用戶自己的SLS日志服務中去,通過SLS日志服務您可以進行實時日志查詢、下載、多維度統(tǒng)計分析等,您也可以將日志投遞到OSS或者MaxCompute進行遠期備份或深度分析。用戶還可以使用這些日志作為日志審計的數(shù)據(jù)源,日志審計是法律剛性需求,是客戶安全合規(guī)依賴的基礎,是一些項目的必選項,可以輕松通過配置實現(xiàn)。用戶除了可以在日志中看到調(diào)用的基本信息,包括域名、調(diào)用者身份、調(diào)用耗時,應答狀態(tài)碼等基本信息外,還可以配置記錄整個請求和應答,便于排查問題。
用戶將API網(wǎng)關的調(diào)用日志同步到SLS后,就可以在SLS中配置監(jiān)控報警項了,配置內(nèi)容比較簡單:
3.5、集成云監(jiān)控
API會自動將調(diào)用日志同步給阿里云云監(jiān)控產(chǎn)品,用戶可以在云監(jiān)控產(chǎn)品上直接配置報警規(guī)則,監(jiān)控報警的指標包括:Http應答碼,API響應時間,請求次數(shù),流入流量,流出流量。如果需要對該API分組下的所有API應用相同的報警規(guī)則,進入API分組詳情頁,點擊詳情頁右上角的開啟云監(jiān)控:
云監(jiān)控報警可設置多級報警,閾值處于不同區(qū)間時,對應Critical 、Warning、Info三個不同級別,不同級別通過不同渠道發(fā)送報警通知。
3.6、全鏈路追蹤平臺
用戶可以配置將調(diào)用日志上傳到阿里云鏈路追蹤平臺,分析全鏈路調(diào)用情況。鏈路追蹤 Tracing Analysis 提供了完整的調(diào)用鏈路還原、調(diào)用請求量統(tǒng)計、鏈路拓撲、應用依賴分析等工具,可以幫助用戶提高開發(fā)診斷效率。
配置好之后,就可以在全鏈路追蹤平臺上看到整個調(diào)用鏈每個節(jié)點的耗時情況了:
4、API網(wǎng)關自身核心能力
API網(wǎng)關除了提供API元數(shù)據(jù)和API生命周期管理能力外,在API調(diào)用環(huán)節(jié)貢獻了一些主流架構(gòu)中不可缺少的能力,以下任何一項能力要想做好都非常麻煩。API網(wǎng)關在線上為數(shù)萬公有云用戶提供服務的同時,也將自己的基本功打磨到好用的程度。
4.1、流控
流控是標準網(wǎng)關的基本能力,保護后端服務避免遭受過載請求的情況。API網(wǎng)關使用標準的令牌桶算法為用戶提供多維度流控能力,下面是API網(wǎng)關提供的流控能力細項:
- 支持API級別流量控制
- 支持秒、分鐘、小時、天等時間維度流量控制
- 支持基于APP/用戶維度流量控制
- 根據(jù)請求參數(shù)(UserId等)、系統(tǒng)參數(shù)(IP等)設置流控策略
- 使用標準漏斗算法,可以選擇被流控請求緩存模式或立即返回模式
4.2、鑒權
API網(wǎng)關為用戶提供多種形式的鑒權能力:
- 通過托管用戶的Public JWK實現(xiàn)對請求進行JWT認證,并將JWT解密出來的claim作為參數(shù)傳給后端;
- 在API網(wǎng)關生成AK/SK并且與API建立授權關系,客戶端使用AK/SK對請求進行簽名后才能調(diào)用授權后的API
- 支持BasicAuth認證方式
4.3、緩存
用戶將后端返回的應答緩存在API網(wǎng)關服務層面,有效降低后端的負荷,增加平滑度:
- 支持根據(jù)請求參數(shù)、Header等維度來生成、獲取緩存
- 允許客戶端通過Cache-Control頭來影響緩存策略
- 遵守后端應答中的Cache-Control頭的約定來處理緩存
4.4、安全
API網(wǎng)關為用戶的API調(diào)用提供多項安全保障:
- 支持API級別IP黑名單和白名單
- 支持前后端支持簽名驗證來確保請求在鏈路上不被篡改
- 具備防重放能力,拒絕重放請求
- 根據(jù)請求參數(shù)或上下文,來執(zhí)行條件判斷,用于過濾不希望傳遞到后端的請求
- 支持讀取JWT解密出來的claim中的參數(shù)作為判斷條件來過濾請求
4.5、性能
- API網(wǎng)關連接數(shù)和RPS支持無限制擴容
- 專享實例中,請求在API網(wǎng)關的平均耗時為1ms
5、API網(wǎng)關融入BizWorks成為能力開放平臺
API網(wǎng)關嵌入到DataWorks中,同時承接了BizWorks南北向流量和東西向流量的治理工作。商業(yè)能力上架的時候,商業(yè)能力下的所有API的元數(shù)據(jù)會自動注冊到API網(wǎng)關,由API網(wǎng)關向外部開放其能力。開發(fā)者登錄到運營平臺的開發(fā)者門戶去瀏覽搜索所有商業(yè)能力,查看商業(yè)能力的API定義,下載商業(yè)能力下所有API對應的SDK。API的調(diào)用數(shù)據(jù)也會同步到SLS中,BizWorks的能力運營數(shù)據(jù)平臺會去分析調(diào)用數(shù)據(jù),將調(diào)用數(shù)據(jù)中的價值挖掘出來,供決策人員參考。
6、總結(jié)
API網(wǎng)關是阿里云的一款在線上平穩(wěn)運行六年多的成熟云產(chǎn)品,為廣大用戶提供標準的高性能網(wǎng)關服務,它除了能提供API托管服務,覆蓋設計、開發(fā)、測試、發(fā)布、售賣、運維監(jiān)測、安全管控、下線等API各個生命周期階段,還集成了阿里云的眾多標準云產(chǎn)品,能夠?qū)⒈姸嘣飘a(chǎn)品連接起來搭建成一個功能強大的、省心的服務器側(cè)架構(gòu)。API網(wǎng)關后端原生集成了OSS、函數(shù)計算、Dataworks等數(shù)據(jù)分析類產(chǎn)品,滿足用戶業(yè)務處理,文件處理,數(shù)據(jù)分析等基本訴求。API網(wǎng)關將調(diào)用日志同步給了SLS,云監(jiān)控,全鏈路追蹤平臺,滿足用戶多維度業(yè)務監(jiān)控報警的需求。API網(wǎng)關同時融入了阿里云最新發(fā)布的強大的云原生應用的開發(fā)和運營平臺BizWorks,成為BizWorks的能力開發(fā)平臺的核心組件。
原文鏈接:http://click.aliyun.com/m/1000348115/
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
版權聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。