云廠商 RDS API 大起底
原創1. 云產品 API 概述
云產品 API 是用于與云產品進行通信的編程接口,允許開發者編寫代碼來控制云資源。通過使用 API,開發者可以實現自動化和標準化的操作,從而提高效率和降低錯誤率。此外,云產品 API 還可以提供對云服務的擴展和集成,使開發者能夠將云服務與自有其他應用系統集成,構建更加豐富和復雜的應用程序。通過使用 API,可以提高開發者的生產力和創新能力,幫助他們更快地開發和部署云應用,從而更好地滿足業務需求,實現真正的"DevOps"。
? API 標準與規范
云產品 API 的開發標準沒有統一的規定,海外有如 Terraform 此類的標準出現,但國內尚未統一。在 API 的開發使用中雖然沒有統一標準,但通常都會遵循一個規范和最佳實踐。
- 符合 RESTful API 設計原則:RESTful 是一種常見的 API 設計風格,它強調 API 的可瀏覽性、可發現性和可交互性。RESTful API 使用 HTTP 協議和標準的 Web 瀏覽器來訪問,具有統一的接口和規范,可以方便地與其他應用程序集成。
- 使用標準化的數據格式:云產品 API 應該使用標準化的數據格式,如 JSON、XML 等,以確保數據的一致性和可讀性。JSON 是一種輕量級的數據格式,易于解析和生成,已經成為云產品 API 的首選數據格式。
- 遵循安全規范:云產品 API 應該遵循安全規范,如 OAuth、SSL 等,以確保數據的安全性和隱私性。OAuth 是一種授權協議,可以確保應用程序在訪問云產品 API 時獲得適當的權限。
- 支持多種編程語言:云產品 API 應該支持多種編程語言,如 Java、Python、PHP、Go 等,以方便開發者進行開發和集成。
- 提供清晰的文檔和示例代碼:云產品 API 應該提供清晰的文檔和示例代碼,以幫助開發者快速上手和使用。文檔應該包含 API 的詳細信息,如接口地址、請求方法、請求參數、響應格式等。
2. RDS API 大起底
作為云數據庫產品的主力,RDS 是各家云廠商的主力產品,這其中又以 MySQL 居多。下文將針對主要云廠商的RDS MySQL 作為示例,對比下各家開放 API 的能力。受限于個人能力水平,難免有偏頗之處,僅供參考。特強調下:
- API 開發迭代很快,會有內容不準確的情況
- 部分信息未收集到,故空缺顯示,不代表不支持
- 產品功能與 API 不能完全對應,API 會有滯后性
圖片
? 實例管理
實例管理是最為常用功能,包括實例資源的創建銷毀、規格變更、啟動停止、參數日志等。這其中重要關注點在于,一方面云環境提供了很靈活的資源供給的方式,這一點也是云很大的優勢;另一方面傳統數據庫的管理工作在云上也是需要的。此外,有些云端比較特性的能力,如實例隔離、實例快照等,這些對于用戶來說也很有意義。
? 備份恢復
備份恢復是數據庫保障數據安全的最關鍵能力,一般都會提供實例備份、恢復及備份集管理能力。此外,針對用戶的個性化需求,也有提供實例克隆(如構建測試環境)、部分恢復(如單表恢復)及跨地域恢復(容災需求)等。有些產品是可以利用云資源的特有能力(如存儲快照),實現原生數據庫無法提供的一些功能。
? 高可用
高可用方面,除 MySQL 原生提供的高可用方案外,有些產品還提供增強的選擇。在數據復制上,還可選擇同步與異步,并可進行復制控制。當出現異常時,可實現節點切換,實現高可用。有些產品還提供了全球化的高可用架構的部署能力。
? 監控告警
監控告警,是 DBA 日常運維工作很關注的點。一方面可通過接口配置產品的監控策略,一方面也可以獲得監控數據集成進自己的監控或做定性分析等用途。
? 賬號管理
數據庫賬號管理,通常會包括創建刪除賬號、授權、重置密碼等。部分產品可實現賬號鎖定,甚至是對賬號進行單獨的資源控制(如連接數等)。
? 架構管理
MySQL 支持多種架構,云產品也提供了很豐富的支持。如只讀節點,可提供給讀寫分離或變更安全(延遲同步)能力。再如主從集群的節點控制及是否暴露出EndPoint給最終用戶使用。
? 代理管理
還有些能力,不再局限在MySQL層面實現,如連接上的一些控制。很多云廠商提供了獨立產品的支持(如代理服務)。可創建代理服務,進行如讀寫分離、連接池、IP管理的一些控制。
? 安全管理
安全方面,這里特指數據庫的連接、存儲、管理、訪問的安全。一般分別通過SSL加密、存儲加密、白名單、SQL審計等能力來支持。
? 開發優化
開發及優化,是指針對開發過程中的一些輔助功能,如常見的慢查詢功能,可用于SQL優化;回收站、閃回功能,可用戶運維安全等。這里一般不會提供高階的優化服務,通常都是用獨立的優化產品來支持。
? 數據遷移
數據庫能否用起來,還取決于是否能很容易將數據遷移過來。除了常規的數據庫遷移工具實現外,一般也有本身實現數據遷移導入的能力。如將自建的數據庫實例遷移到RDS實例上,將離線的數據備份導入其中等。
? 運維管理
這里的運維管理,主要是指一些如事件管理、通知管理等,此外云端還有一個很重要的就是運維窗口的管理。很多帶有一定危險性的操作,后臺是會在運維窗口內進行。
? 計費管理
計費,是云產品的一個特色功能。傳統的私有化交付產品,通常不涉及很復雜的計費,但云產品可提供的更為靈活的計費方式,也是很多用戶選擇云產品的原因之一。計費重點關注的就是已發送費用及續費的管理。
? 網絡管理
網絡管理,提供為RDS產品服務的網絡能力,包括公網IP、地址端口變更等。
? 其他功能
其他功能中,很重要的一個是標簽管理。這是因為當用戶可管理使用的云資源很多的情況下,如何快速定位到這個資源很重要。給資源打上標簽,就是一個不錯的選擇。