通過 API 對外提供數據服務是大部分企業中比較常見的數據應用方式,對於 API 平臺管理者、開發者和調用者來說,API 的調用性能、安全性和穩定性是在平臺選型時最需要考慮的三個因素。 袋鼠雲API開發及管理平臺【數棧-數據服務 DataAPI】通過多種手段標準化管控服務,可完成從 API 創建、發 ...
通過 API 對外提供數據服務是大部分企業中比較常見的數據應用方式,對於 API *台管理者、開發者和調用者來說,API 的調用性能、安全性和穩定性是在*台選型時最需要考慮的三個因素。
袋鼠雲API開發及管理*台【數棧-數據服務 DataAPI】通過多種手段標準化管控服務,可完成從 API 創建、發佈、申請/審批、調用的全生命周期管控,至今已經服務於300+客戶。本文將為大家分享 DataAPI 是如何實現這三方面保障的。
DataAPI 的調用性能
在資料庫和網路狀況良好的情況下,DataAPI 目前的 API 調用性能在 5k QPS 時單次調用耗時最小可在 30-80ms 內。*期*台不僅從多個後端調用鏈路環節做了優化,也在產品層支持了一系列的功能,通過性能可觀測、可配置等方式進行了全面的性能提升。
調用結果緩存
API 支持開啟數據緩存,可選擇用 HBase/Redis 存儲緩存結果,在緩存失效策略上,DataAPI 採用 LFU(最不經常使用頁置換演算法),根據數據更新頻率可自定義緩存清理周期與時間。
針對源數據更新頻率不高,且存在多次相同輸入參數重覆查詢的情況,開啟緩存可縮短調用鏈路,顯著降低調用耗時。
服務編排
複雜查詢邏輯的實現可用帶 Java/Python 函數的服務編排代替 SQL 來完成,以提升查詢效率。
入參格式校驗
對於一些有明顯格式規則的輸入參數,例如手機號、身份證號等,入參內容如果不滿足相應格式要求則會導致一定無法正確返回結果。
因此我們可以為高併發 API 的這些參數配置正則校驗規則,在資料庫執行查詢語句前由 Gateway 先進行內容校驗,若不滿足格式要求則直接返回查詢失敗,減少無效查詢。
調用鏈路耗時分析
創建 API 的測試調用環節,可通過調用分析查看 API 調用過程所經過的環節、執行內容,以及每條執行內容的耗時瀑布圖,用戶可直觀地看到性能損耗的關鍵點,以便快速調整。
例如 Server 端的數據解密、行級許可權等校驗耗時整體明顯增加時,可能是 Server 資源到了瓶頸,可進一步排查 Server 端的負載;數據源查詢耗時增加則可能是當前數據源查詢併發變高。
DataAPI 的安全性
安全層面,DataAPI 從開發及調用兩個層面進行了全方位的保障。
開發安全
● 服務分組
重要 API 在發生邏輯變更時,可以通過服務分組來測試新邏輯的可靠性,通過類似 AB測試的方式將可控比例範圍內的流量導向新邏輯,出現問題時立即調整分流比例切換回原邏輯,能夠在用戶無感知的情況下最大程度降低對業務側的影響。
● 角色許可權管理
*台內置多個固定角色,區分了 API 查看、開發、申請調用許可權、管理等功能的場景,能滿足90%的用戶需求。另外管理員可根據企業內部許可權管控要求調整固定角色許可權點或者新增自定義角色,靈活把控用戶許可權配置。
● 測試/生產項目隔離
對於 API 開發投產安全性要求一般的場景,流程一般是 API 創建-提交網關測試-發佈,發佈後可直接生產調用。如果企業內部對開發和生產環境進行了嚴格隔離,也可在開發環境完成開發測試後,通過綁定項目一鍵發佈或導出導入式發佈複製到生產環境。這種方式進一步規範了生產 API 的變更流程,減少了誤操作發生率。
調用安全
● 調用申請審批
DataAPI 租戶層的 API 市場彙集了各個項目發佈的 API,實現 API 一定範圍內的共用時也對 API 調用做了許可權管控,用戶在申請 API 調用許可權時可控制其調用次數、周期及欄位粒度的輸出參數訪問。對於某用戶已經獲得審批通過的 API,管理員也可在到期前進行許可權回收。許可權申請與審批操作方便、管理粒度細、靈活度高。
● 2種調用許可權認證方式
· API-TOKEN / USER-TOKEN:每個用戶的單個 API 一個 TOKEN / 每個用戶的所有 API 一個 TOKEN,用戶對某個 API 的調用許可權申請通過時*台會提供 TOKEN 信息, TOKEN+API URL 即可正常調用 API,適用於對調用安全要求一般的場景
· AK/SK:通過密鑰和加密簽名的方式對 API 的調用進行認證,安全性保障更好
● 數據傳輸加密
· RSA+AES:支持對大量數據加解密的同時,保證了加解密速度,應用於一些對於用戶個人信息或其他敏感信息加密的安全性要求較高的場景
· SM2+AES:SM2 在安全、速度等方面較 RSA 更優,可按企業內部要求選擇數據傳輸加密方式
● 行級數據許可權控制
用戶可在數據源層面配置用戶數據訪問行粒度的許可權,然後將這個許可權控制應用到指定的 API,實現更精細化的許可權管控。
● 異常調用的服務熔斷
針對一些高併發調用的 API 可以配置熔斷策略,當單位時長的異常調用達到一定的次數等條件時,為保證 API 整體服務不癱瘓,DataAPI 會對該 API 從 Gateway 處開啟一定時長的熔斷,經過熔斷時長後探測服務健康狀態併進行自動恢復。
● IP 地址安全組
IP 地址安全組中可劃分 IP 黑名單與白名單,對於有調用 IP 約束的 API,確保不會在非法 IP 中被調用。
DataAPI 的穩定性
DataAPI 的部署包含2台web、2台Server 及2台Gateway(每台預設16c32g),版本升級可通過數棧自帶的運維升級工具 EasyManager 實現快速*滑升級。當業務增長時,通過簡單增加 Server 和 Gateway 部署台數即可穩定支持更高的調用併發。
DataAPI 的後續規劃
接下來的日子 DataAPI 將繼續深耕性能與安全層的優化,為企業業務提供更加穩定、高效且安全的支持。下麵是我們的主要規劃:
· 調用性能:全鏈路性能優化、資料庫資源組劃分保障重要業務調用
· 調用安全:數據輸出動態脫敏,保護敏感信息
《數棧產品白皮書》:https://www.dtstack.com/resources/1004?src=szsm
《數據治理行業實踐白皮書》下載地址:https://www.dtstack.com/resources/1001?src=szsm
想瞭解或咨詢更多有關袋鼠雲大數據產品、行業解決方案、客戶案例的朋友,瀏覽袋鼠雲官網:https://www.dtstack.com/?src=szbky
同時,歡迎對大數據開源項目有興趣的同學加入「袋鼠雲開源框架釘釘技術qun」,交流最新開源技術信息,qun號碼:30537511,項目地址:https://github.com/DTStack