性能、安全和穩定,袋鼠雲數據服務平臺 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 8、WPF、Prism.DryIoc、MVVM設計模式、Blazor以及MySQL資料庫構建的企業級工作流系統的WPF客戶端框架-AIStudio.Wpf.AClient 6.0。 項目介紹 框架採用了 Prism 框架來實現 MVVM 模式,不僅簡化了 MVVM 的典型 ...
  • 先看一下效果吧: 我們直接通過改造一下原版的TreeView來實現上面這個效果 我們先創建一個普通的TreeView 代碼很簡單: <TreeView> <TreeViewItem Header="人事部"/> <TreeViewItem Header="技術部"> <TreeViewItem He ...
  • 1. 生成式 AI 簡介 https://imp.i384100.net/LXYmq3 2. Python 語言 https://imp.i384100.net/5gmXXo 3. 統計和 R https://youtu.be/ANMuuq502rE?si=hw9GT6JVzMhRvBbF 4. 數 ...
  • 本文為大家介紹下.NET解壓/壓縮zip文件。雖然解壓縮不是啥核心技術,但壓縮性能以及進度處理還是需要關註下,針對使用較多的zip開源組件驗證,給大家提供個技術選型參考 之前在《.NET WebSocket高併發通信阻塞問題 - 唐宋元明清2188 - 博客園 (cnblogs.com)》講過,團隊 ...
  • 之前寫過兩篇關於Roslyn源生成器生成源代碼的用例,今天使用Roslyn的代碼修複器CodeFixProvider實現一個cs文件頭部註釋的功能, 代碼修複器會同時涉及到CodeFixProvider和DiagnosticAnalyzer, 實現FileHeaderAnalyzer 首先我們知道修 ...
  • 在軟體行業,經常會聽到一句話“文不如表,表不如圖”說明瞭圖形在軟體應用中的重要性。同樣在WPF開發中,為了程式美觀或者業務需要,經常會用到各種個樣的圖形。今天以一些簡單的小例子,簡述WPF開發中幾何圖形(Geometry)相關內容,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 在 C# 中使用 RabbitMQ 通過簡訊發送重置後的密碼到用戶的手機號上,你可以按照以下步驟進行 1.安裝 RabbitMQ 客戶端庫 首先,確保你已經安裝了 RabbitMQ 客戶端庫。你可以通過 NuGet 包管理器來安裝: dotnet add package RabbitMQ.Clien ...
  • 1.下載 Protocol Buffers 編譯器(protoc) 前往 Protocol Buffers GitHub Releases 頁面。在 "Assets" 下找到適合您系統的壓縮文件,通常為 protoc-{version}-win32.zip 或 protoc-{version}-wi ...
  • 簡介 在現代微服務架構中,服務發現(Service Discovery)是一項關鍵功能。它允許微服務動態地找到彼此,而無需依賴硬編碼的地址。以前如果你搜 .NET Service Discovery,大概率會搜到一大堆 Eureka,Consul 等的文章。現在微軟為我們帶來了一個官方的包:Micr ...
  • ZY樹洞 前言 ZY樹洞是一個基於.NET Core開發的簡單的評論系統,主要用於大家分享自己心中的感悟、經驗、心得、想法等。 好了,不賣關子了,這個項目其實是上班無聊的時候寫的,為什麼要寫這個項目呢?因為我單純的想吐槽一下工作中的不滿而已。 項目介紹 項目很簡單,主要功能就是提供一個簡單的評論系統 ...