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