性能、安全和穩定,袋鼠雲數據服務平臺 DataAPI 為企業 API 保駕護航

来源:https://www.cnblogs.com/DTinsight/archive/2023/09/13/17698934.html
-Advertisement-
Play Games

通過 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(最不經常使用頁置換演算法),根據數據更新頻率可自定義緩存清理周期與時間。

file

針對源數據更新頻率不高,且存在多次相同輸入參數重覆查詢的情況,開啟緩存可縮短調用鏈路,顯著降低調用耗時。

服務編排

複雜查詢邏輯的實現可用帶 Java/Python 函數的服務編排代替 SQL 來完成,以提升查詢效率。

file

入參格式校驗

對於一些有明顯格式規則的輸入參數,例如手機號、身份證號等,入參內容如果不滿足相應格式要求則會導致一定無法正確返回結果。

因此我們可以為高併發 API 的這些參數配置正則校驗規則,在資料庫執行查詢語句前由 Gateway 先進行內容校驗,若不滿足格式要求則直接返回查詢失敗,減少無效查詢。

file

調用鏈路耗時分析

創建 API 的測試調用環節,可通過調用分析查看 API 調用過程所經過的環節、執行內容,以及每條執行內容的耗時瀑布圖,用戶可直觀地看到性能損耗的關鍵點,以便快速調整。

例如 Server 端的數據解密、行級許可權等校驗耗時整體明顯增加時,可能是 Server 資源到了瓶頸,可進一步排查 Server 端的負載;數據源查詢耗時增加則可能是當前數據源查詢併發變高。

file

DataAPI 的安全性

安全層面,DataAPI 從開發及調用兩個層面進行了全方位的保障。

開發安全

● 服務分組

重要 API 在發生邏輯變更時,可以通過服務分組來測試新邏輯的可靠性,通過類似 AB測試的方式將可控比例範圍內的流量導向新邏輯,出現問題時立即調整分流比例切換回原邏輯,能夠在用戶無感知的情況下最大程度降低對業務側的影響。

file

● 角色許可權管理

*台內置多個固定角色,區分了 API 查看、開發、申請調用許可權、管理等功能的場景,能滿足90%的用戶需求。另外管理員可根據企業內部許可權管控要求調整固定角色許可權點或者新增自定義角色,靈活把控用戶許可權配置。

file

● 測試/生產項目隔離

對於 API 開發投產安全性要求一般的場景,流程一般是 API 創建-提交網關測試-發佈,發佈後可直接生產調用。如果企業內部對開發和生產環境進行了嚴格隔離,也可在開發環境完成開發測試後,通過綁定項目一鍵發佈或導出導入式發佈複製到生產環境。這種方式進一步規範了生產 API 的變更流程,減少了誤操作發生率。

file

調用安全

● 調用申請審批

DataAPI 租戶層的 API 市場彙集了各個項目發佈的 API,實現 API 一定範圍內的共用時也對 API 調用做了許可權管控,用戶在申請 API 調用許可權時可控制其調用次數、周期及欄位粒度的輸出參數訪問。對於某用戶已經獲得審批通過的 API,管理員也可在到期前進行許可權回收。許可權申請與審批操作方便、管理粒度細、靈活度高。

file

● 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,實現更精細化的許可權管控。

file

● 異常調用的服務熔斷

針對一些高併發調用的 API 可以配置熔斷策略,當單位時長的異常調用達到一定的次數等條件時,為保證 API 整體服務不癱瘓,DataAPI 會對該 API 從 Gateway 處開啟一定時長的熔斷,經過熔斷時長後探測服務健康狀態併進行自動恢復。

file

● 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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 裝飾模式,英文名稱:Decorator Pattern。我第一次看到這個名稱想到的是另外一個詞語“裝修”,我就說說我對“裝修”的理解吧,大家一定要看清楚,是“裝修”,不是“裝飾”。在房子裝修的過程中,各種功能可以相互組合,來增加房子的功用。類似的,如果我們在軟體系統中,要給某個類型或者對象增加 ...
  • 以下內容為本人的學習筆記,如需要轉載,請聲明原文鏈接 微信公眾號「ENG八戒」https://mp.weixin.qq.com/s/zy6Dmo_b3xMPPEO3HNxuuw 有一段時間沒碰條件變數【condition variable】,快忘了它到底是啥。大概記得,之前是用來寫底層介面,輔助實現 ...
  • 目錄docker鏡像倉庫hub.docker.com無法訪問-解決辦法1 個人鏡像站點2 dockerhub為什麼無法訪問2.1 查看dockerhub實際IP2.2 ping檢測3 鏡像加速3.1 使用國內鏡像加速3.1.1 docker配置:3.1.2 containerd配置:3.2 使用博主 ...
  • 先執行 free -h 查看現在的swap分配情況 執行 swapon -s 查看swap的分區文件 執行 swapoff /dev/dm-1 取消已經掛上的swap文件 現在擴充swap到4G,並將swap文件掛到/vm_memory/swapfile上 先創建/vm_memory/swapfil ...
  • 1、背景描述 出於安全考慮,需要禁止使用root用戶通過ssh遠程登錄Linux 禁用root用戶遠程登錄後,需要提供一個許可權用戶用於ssh遠程登錄 2、創建擁有sudo許可權的用戶 2.1、創建一個普通用戶rain useradd命令用於創建一個用戶, 選項 -m 表示創建用戶的主目錄, -c 表示 ...
  • 1. 索引 1.1. 鍵(key) 1.2. 存儲引擎用於快速找到記錄的一種數據結構 1.3. 當表中的數據量越來越大時,索引對性能的影響愈發重要 1.4. 在數據量較小且負載較低時,缺少合適的索引對性能的影響可能還不明顯 1.5. 索引優化是對查詢性能優化最有效的手段 1.6. 索引能夠輕易將查詢 ...
  • 本文分享自華為雲社區《GaussDB(DWS)鎖問題全解》,作者: yd_211043076。 一、gaussdb有哪些鎖 1、常規鎖:常規鎖主要用於業務訪問資料庫對象的加鎖,保護併發操作的對象,保持數據一致性;常見的常規鎖有表鎖(relation)和行鎖(tuple)。 表鎖:當對錶進行DDL、D ...
  • Apache SeaTunnel是一個非常易於使用的、超高性能的分散式數據集成平臺,支持海量數據的實時同步。每天可穩定高效同步數百億數據,已被近百家企業投入生產使用。 現在的版本不支持通過jtds的方式鏈接sqlserver,我們來自己寫代碼來實現它,並把代碼提交給apache seatunnel。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...