性能、安全和穩(wěn)定,袋鼠云大數(shù)據(jù)服務(wù)平臺(tái) DataAPI 為企業(yè) API 保駕護(hù)航
通過 API 對(duì)外提供數(shù)據(jù)服務(wù)是大部分企業(yè)中比較常見的數(shù)據(jù)應(yīng)用方式,對(duì)于 API 平臺(tái)管理者、開發(fā)者和調(diào)用者來說,API 的調(diào)用性能、安全性和穩(wěn)定性是在平臺(tái)選型時(shí)最需要考慮的三個(gè)因素。
袋鼠云API開發(fā)及管理平臺(tái)【數(shù)棧-數(shù)據(jù)服務(wù) DataAPI】通過多種手段標(biāo)準(zhǔn)化管控服務(wù),可完成從 API 創(chuàng)建、發(fā)布、申請(qǐng)/審批、調(diào)用的全生命周期管控,至今已經(jīng)服務(wù)于300+客戶。本文將為大家分享 DataAPI 是如何實(shí)現(xiàn)這三方面保障的。
DataAPI 的調(diào)用性能
在數(shù)據(jù)庫和網(wǎng)絡(luò)狀況良好的情況下,DataAPI 目前的 API 調(diào)用性能在 5k QPS 時(shí)單次調(diào)用耗時(shí)最小可在 30-80ms 內(nèi)。近期平臺(tái)不僅從多個(gè)后端調(diào)用鏈路環(huán)節(jié)做了優(yōu)化,也在產(chǎn)品層支持了一系列的功能,通過性能可觀測(cè)、可配置等方式進(jìn)行了全面的性能提升。
調(diào)用結(jié)果緩存
API 支持開啟數(shù)據(jù)緩存,可選擇用 HBase/Redis 存儲(chǔ)緩存結(jié)果,在緩存失效策略上,DataAPI 采用 LFU(最不經(jīng)常使用頁置換算法),根據(jù)數(shù)據(jù)更新頻率可自定義緩存清理周期與時(shí)間。

針對(duì)源數(shù)據(jù)更新頻率不高,且存在多次相同輸入?yún)?shù)重復(fù)查詢的情況,開啟緩存可縮短調(diào)用鏈路,顯著降低調(diào)用耗時(shí)。
服務(wù)編排
復(fù)雜查詢邏輯的實(shí)現(xiàn)可用帶 Java/Python 函數(shù)的服務(wù)編排代替 SQL 來完成,以提升查詢效率。

入?yún)⒏袷叫r?yàn)
對(duì)于一些有明顯格式規(guī)則的輸入?yún)?shù),例如手機(jī)號(hào)、身份證號(hào)等,入?yún)?nèi)容如果不滿足相應(yīng)格式要求則會(huì)導(dǎo)致一定無法正確返回結(jié)果。
因此我們可以為高并發(fā) API 的這些參數(shù)配置正則校驗(yàn)規(guī)則,在數(shù)據(jù)庫執(zhí)行查詢語句前由 Gateway 先進(jìn)行內(nèi)容校驗(yàn),若不滿足格式要求則直接返回查詢失敗,減少無效查詢。

調(diào)用鏈路耗時(shí)分析
創(chuàng)建 API 的測(cè)試調(diào)用環(huán)節(jié),可通過調(diào)用分析查看 API 調(diào)用過程所經(jīng)過的環(huán)節(jié)、執(zhí)行內(nèi)容,以及每條執(zhí)行內(nèi)容的耗時(shí)瀑布圖,用戶可直觀地看到性能損耗的關(guān)鍵點(diǎn),以便快速調(diào)整。
例如 Server 端的數(shù)據(jù)解密、行級(jí)權(quán)限等校驗(yàn)耗時(shí)整體明顯增加時(shí),可能是 Server 資源到了瓶頸,可進(jìn)一步排查 Server 端的負(fù)載;數(shù)據(jù)源查詢耗時(shí)增加則可能是當(dāng)前數(shù)據(jù)源查詢并發(fā)變高。

DataAPI 的安全性
安全層面,DataAPI 從開發(fā)及調(diào)用兩個(gè)層面進(jìn)行了全方位的保障。
開發(fā)安全
● 服務(wù)分組
重要 API 在發(fā)生邏輯變更時(shí),可以通過服務(wù)分組來測(cè)試新邏輯的可靠性,通過類似 AB測(cè)試的方式將可控比例范圍內(nèi)的流量導(dǎo)向新邏輯,出現(xiàn)問題時(shí)立即調(diào)整分流比例切換回原邏輯,能夠在用戶無感知的情況下最大程度降低對(duì)業(yè)務(wù)側(cè)的影響。

● 角色權(quán)限管理
平臺(tái)內(nèi)置多個(gè)固定角色,區(qū)分了 API 查看、開發(fā)、申請(qǐng)調(diào)用權(quán)限、管理等功能的場(chǎng)景,能滿足90%的用戶需求。另外管理員可根據(jù)企業(yè)內(nèi)部權(quán)限管控要求調(diào)整固定角色權(quán)限點(diǎn)或者新增自定義角色,靈活把控用戶權(quán)限配置。

● 測(cè)試/生產(chǎn)項(xiàng)目隔離
對(duì)于 API 開發(fā)投產(chǎn)安全性要求一般的場(chǎng)景,流程一般是 API 創(chuàng)建-提交網(wǎng)關(guān)測(cè)試-發(fā)布,發(fā)布后可直接生產(chǎn)調(diào)用。如果企業(yè)內(nèi)部對(duì)開發(fā)和生產(chǎn)環(huán)境進(jìn)行了嚴(yán)格隔離,也可在開發(fā)環(huán)境完成開發(fā)測(cè)試后,通過綁定項(xiàng)目一鍵發(fā)布或?qū)С鰧?dǎo)入式發(fā)布復(fù)制到生產(chǎn)環(huán)境。這種方式進(jìn)一步規(guī)范了生產(chǎn) API 的變更流程,減少了誤操作發(fā)生率。

調(diào)用安全
● 調(diào)用申請(qǐng)審批
DataAPI 租戶層的 API 市場(chǎng)匯集了各個(gè)項(xiàng)目發(fā)布的 API,實(shí)現(xiàn) API 一定范圍內(nèi)的共享時(shí)也對(duì) API 調(diào)用做了權(quán)限管控,用戶在申請(qǐng) API 調(diào)用權(quán)限時(shí)可控制其調(diào)用次數(shù)、周期及字段粒度的輸出參數(shù)訪問。對(duì)于某用戶已經(jīng)獲得審批通過的 API,管理員也可在到期前進(jìn)行權(quán)限回收。權(quán)限申請(qǐng)與審批操作方便、管理粒度細(xì)、靈活度高。

● 2種調(diào)用權(quán)限認(rèn)證方式
· API-TOKEN / USER-TOKEN:每個(gè)用戶的單個(gè) API 一個(gè) TOKEN / 每個(gè)用戶的所有 API 一個(gè) TOKEN,用戶對(duì)某個(gè) API 的調(diào)用權(quán)限申請(qǐng)通過時(shí)平臺(tái)會(huì)提供 TOKEN 信息, TOKEN+API URL 即可正常調(diào)用 API,適用于對(duì)調(diào)用安全要求一般的場(chǎng)景
· AK/SK:通過密鑰和加密簽名的方式對(duì) API 的調(diào)用進(jìn)行認(rèn)證,安全性保障更好
● 數(shù)據(jù)傳輸加密
· RSA+AES:支持對(duì)大量數(shù)據(jù)加解密的同時(shí),保證了加解密速度,應(yīng)用于一些對(duì)于用戶個(gè)人信息或其他敏感信息加密的安全性要求較高的場(chǎng)景
· SM2+AES:SM2 在安全、速度等方面較 RSA 更優(yōu),可按企業(yè)內(nèi)部要求選擇數(shù)據(jù)傳輸加密方式
● 行級(jí)數(shù)據(jù)權(quán)限控制
用戶可在數(shù)據(jù)源層面配置用戶數(shù)據(jù)訪問行粒度的權(quán)限,然后將這個(gè)權(quán)限控制應(yīng)用到指定的 API,實(shí)現(xiàn)更精細(xì)化的權(quán)限管控。

● 異常調(diào)用的服務(wù)熔斷
針對(duì)一些高并發(fā)調(diào)用的 API 可以配置熔斷策略,當(dāng)單位時(shí)長(zhǎng)的異常調(diào)用達(dá)到一定的次數(shù)等條件時(shí),為保證 API 整體服務(wù)不癱瘓,DataAPI 會(huì)對(duì)該 API 從 Gateway 處開啟一定時(shí)長(zhǎng)的熔斷,經(jīng)過熔斷時(shí)長(zhǎng)后探測(cè)服務(wù)健康狀態(tài)并進(jìn)行自動(dòng)恢復(fù)。

● IP 地址安全組
IP 地址安全組中可劃分 IP 黑名單與白名單,對(duì)于有調(diào)用 IP 約束的 API,確保不會(huì)在非法 IP 中被調(diào)用。
DataAPI 的穩(wěn)定性
DataAPI 的部署包含2臺(tái)web、2臺(tái)Server 及2臺(tái)Gateway(每臺(tái)默認(rèn)16c32g),版本升級(jí)可通過數(shù)棧自帶的運(yùn)維升級(jí)工具 EasyManager 實(shí)現(xiàn)快速平滑升級(jí)。當(dāng)業(yè)務(wù)增長(zhǎng)時(shí),通過簡(jiǎn)單增加 Server 和 Gateway 部署臺(tái)數(shù)即可穩(wěn)定支持更高的調(diào)用并發(fā)。
DataAPI 的后續(xù)規(guī)劃
接下來的日子 DataAPI 將繼續(xù)深耕性能與安全層的優(yōu)化,為企業(yè)業(yè)務(wù)提供更加穩(wěn)定、高效且安全的支持。下面是我們的主要規(guī)劃:
· 調(diào)用性能:全鏈路性能優(yōu)化、數(shù)據(jù)庫資源組劃分保障重要業(yè)務(wù)調(diào)用
· 調(diào)用安全:數(shù)據(jù)輸出動(dòng)態(tài)脫敏,保護(hù)敏感信息
《數(shù)據(jù)治理行業(yè)實(shí)踐白皮書》下載地址:https://fs80.cn/l134d5?
《數(shù)棧V6.0產(chǎn)品白皮書》下載地址:https://fs80.cn/cw0iw1
想了解或咨詢更多有關(guān)袋鼠云大數(shù)據(jù)產(chǎn)品、行業(yè)解決方案、客戶案例的朋友,瀏覽袋鼠云官網(wǎng):https://www.dtstack.com/?src=szbzhan
同時(shí),歡迎對(duì)大數(shù)據(jù)開源項(xiàng)目有興趣的同學(xué)加入「袋鼠云開源框架釘釘技術(shù) qun」,交流最新開源技術(shù)信息,qun 號(hào)碼:30537511,項(xiàng)目地址:https://github.com/DTStack