寫完雲服務器ECS,本來想先寫負載均衡的。
因為發現很多客戶,都是直接將單台雲服務器應用對外提供訪問,如果雲服務器宕機,應用就會停止服務。雲服務器標稱有99.95%的可用率,一年下來宕機四個多小時也是正常的。要想提升應用的可用率,就需要多台雲服務器(至少兩台,最好分布式兩個不同的可用區),然后利用負載均衡將流量按一定規則導向后端的雲服務器應用集群。
但這一篇還是決定先寫寫雲數據庫RDS,雲數據庫RDS有好幾個曾用名。最早的名字就是RDS(阿里雲的產品,大部分在命名的時候故意和亞馬遜有一點微小的差異,比如ECS和EC2。只有RDS這個名字是完全一樣,Rational Database Service,關系型數據庫服務)。
RDS不只是一種數據庫,目前阿里雲的RDS已經支持包括MySQL、PostgreSQL、PPAS、SQL Server等四種不同的關系型數據庫。
然后呢,RDS越做越好,團隊也也來越大,后面包括Redis、MongoDB、Greenplum等越來越多的數據存儲類產品都被納入到旗下,所以起了一個更大的品牌叫做AliCloudDB,中文名就叫雲數據庫,RDS則變成了旗下的一個產品線,中文名就變成了雲數據庫RDS。后來么,AliCloudDB又換成了ApsaraDB,Apsara就是傳說中的飛天啦。
先不說其他的NoSQL數據庫產品,這一篇集中精力來看看雲數據庫RDS。
企業使用阿里雲,一般來說,購買雲服務器ECS基本上是必須的。但需要數據庫的時候,就會面臨兩種選擇:一種當然是直接使用雲數據庫RDS,另外一種則是在雲服務器ECS上自己安裝部署數據庫。這兩種選擇有什么不一樣呢?
首先,使用RDS當然是最省事的。RDS背后聚集了阿里最好的DBA團隊負責運維,最好的數據庫內核開發團隊負責改進數據庫(主要指MySQL和PostgreSQL開源數據庫,SQL Server本身只能指望微軟了),將很多需要DBA日常運維的工作逐漸納入實現產品化。
使用的客戶就可以從很多底層的任務中解放出來,比如創建新的MySQL備庫,只需要在RDS控制台點一下“創建只讀實例”、“創建災備實例”或者“創建臨時實例”即可。為什么有三種不同實例?分別對應了三種不同的場景:同城讀寫分離、異地機房容災、按時間點恢復取數。
RDS的整體架構,說起來也不復雜。主要有兩種模式:
-
標准模式
標准模式非常簡單,只是通過負載均衡SLB將RDS背后的主備庫對應用做了屏蔽,發生切換時,只需要修改負載均衡的配置,將后面服務的物理IP更換成新主庫的地址即可。標准模式有一個限制,同一時間,RDS只能支持外網訪問地址或者內網訪問地址中的一種。因為只是加了負載均衡,也不具備SQL攔截的能力。對於用戶來說,這種模式的RDS只是提供了一個Web控制台+主備切換。
-
高安全模式
高安全模式在負載均衡和主備庫之間加了一層透明的代理層(Proxy),對數據庫的所有訪問都會在Proxy進行解析處理,因此在標准模式的基礎上,還可以做到防止SQL注入。同時,因為多了一層代理,響應時間也會相應的受到影響,官方的說法是20%左右。該模式支持內外網訪問地址同時存在。
和雲服務器一樣,雲數據庫RDS的購買也支持包年包月和按量付費兩種模式,然后選擇對應的地域和可用區,如何選擇地域和可用區可以參考之前介紹雲服務器ECS的文章。
前面也說到,RDS支持四種不同的關系型數據庫,賣的最火的毫無疑問是MySQL,也有不少企業客戶因為使用的是Windows平台和.net技術會選擇帶正版License的SQL Server,其次是最近逐漸升溫的老牌開源數據庫PostgreSQL,企業客戶可以根據自身的業務場景需求來選擇。
至於號稱和Oracle高度兼容的PPAS,個人觀點,盡量還是避免使用吧,如果應用真的對Oracle有重度依賴,目前阿里雲已經推出獨享型ECS,在獨享型ECS中自建Oracle可能是更好的選擇。
RDS的規格從1核1G(連接數300,IOPS600)開始,最高的30核220G(連接數64000,IOPS20000)規格也支持獨占物理機,對於大部分數據庫場景來說,應該都能夠很好的支持。
如果需要更高的IOPS支持,要么采用DRDS來做分庫分表做水平拆分,要么采用高規格的獨享型ECS+4塊SSD數據盤(每塊盤最高支持IOPS20000)做到單實例80000 IOPS的支持。
RDS是個好東西,在絕大部分場景下,直接使用雲數據庫,對於企業客戶來說都是更優的選擇。袋鼠雲也選擇RDS for MySQL做為自身產品SaaS版本的數據庫。
但像上面說的,也有一些場景需要考慮在雲服務器上自建數據庫,比如說雲上Oracle,比如說需要單實例更高IOPS支持,比如說有些客戶具備較強的DBA能力,希望能夠更多的控制數據庫而不是面對一個封裝的黑盒子產品,等等。
針對自建數據庫的場景,袋鼠雲的 EasyDB數據庫管理平台(https://easydb.dtstack.com) 可以幫助企業客戶更好的管理數據庫,不管是雲上還是雲下的Oracle/MySQL,對於性能監控、高可用、備份恢復等DBA日常運維管理場景都提供了很好的支持。
尤其是雲上Oracle場景,袋鼠雲做為業界領先的數據庫專家團隊,和阿里雲緊密合作,為阿里雲的客戶提供獨家的雲上Oracle解決方案,歡迎有興趣的客戶點擊“閱讀原文”.
另外,做為RDS的重頭產品MySQL,背后使用的並非官方版本,而是積累了阿里多年電商使用場景的經驗修改過內核的版本,在8.9的北京雲棲大會上已經宣布即將開源,並在9.15中秋節正式開啟5.6.32版本內測(https://github.com/alibaba/AliSQL),相信很快就會完全開放。
基於AliSQL在自有服務器或者雲服務器ECS上自建數據庫也會成為一種選擇,EasyDB也將全面支持AliSQL。