1. 概要
OTS是構(gòu)建在阿里云飛天分布式系統(tǒng)上的NoSQL存儲(chǔ)服務(wù),提供海量結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)和實(shí)時(shí)訪問(wèn)。OTS以實(shí)例和表來(lái)組織數(shù)據(jù),通過(guò)自動(dòng)的數(shù)據(jù)分區(qū)和負(fù)載均衡技術(shù),對(duì)應(yīng)用提供規(guī)模(數(shù)據(jù)和訪問(wèn))的無(wú)縫擴(kuò)展。應(yīng)用通過(guò)調(diào)用OTS API/SDK或者操作管理控制臺(tái)來(lái)使用OTS服務(wù)。OTS服務(wù)具有以下幾個(gè)主要的特點(diǎn):
規(guī)模可擴(kuò)展:OTS具備可擴(kuò)展的服務(wù)能力,隨著應(yīng)用表的數(shù)據(jù)量和訪問(wèn)量逐漸增大,OTS會(huì)自動(dòng)進(jìn)行數(shù)據(jù)分區(qū)的調(diào)整(partition split/merge)來(lái)滿足應(yīng)用業(yè)務(wù)規(guī)模的增長(zhǎng),并且保持穩(wěn)定的性能。OTS提供預(yù)留讀寫(xiě)吞吐率的機(jī)制來(lái)讓?xiě)?yīng)用配置表上的資源,應(yīng)用通過(guò)主動(dòng)配置和調(diào)整表上的預(yù)留讀寫(xiě)吞吐率來(lái)應(yīng)對(duì)業(yè)務(wù)訪問(wèn)量的變化,從而獲得更有保障的服務(wù)。
高可靠可用:OTS的數(shù)據(jù)存儲(chǔ)在底層的分布式文件系統(tǒng)上,數(shù)據(jù)有3份拷貝,分別位于不同的容錯(cuò)區(qū)(機(jī)架或者數(shù)據(jù)中心),當(dāng)硬件出現(xiàn)故障導(dǎo)致數(shù)據(jù)備份的損壞或丟失時(shí),分布式文件系統(tǒng)會(huì)自動(dòng)發(fā)現(xiàn)、復(fù)制并恢復(fù)數(shù)據(jù)備份,保障數(shù)據(jù)的安全可靠。OTS系統(tǒng)會(huì)自動(dòng)檢測(cè)硬件故障(如機(jī)器宕機(jī)或者網(wǎng)絡(luò)中斷)并進(jìn)行數(shù)據(jù)分區(qū)的實(shí)時(shí)遷移,保障服務(wù)的高可用性。
性能可預(yù)期:OTS服務(wù)底層采用全SSD存儲(chǔ)數(shù)據(jù),單行數(shù)據(jù)讀寫(xiě)請(qǐng)求的延時(shí)保持在幾個(gè)毫秒級(jí)別。應(yīng)用通過(guò)配置預(yù)留讀寫(xiě)吞吐率來(lái)預(yù)留資源,保障請(qǐng)求并發(fā)量和延時(shí)的穩(wěn)定性。
靈活的數(shù)據(jù)模型:OTS表中的數(shù)據(jù)無(wú)固定格式要求,每行的列數(shù)和列名可以不相同,列值支持5種數(shù)據(jù)類(lèi)型:Integer、Boolean、Double、String、Binary。每一行的列可以動(dòng)態(tài)增加或者刪除,沒(méi)有額外修改schema的代價(jià)。
讀寫(xiě)強(qiáng)一致性:相對(duì)于最終一致性而言,OTS提供強(qiáng)一致性的讀寫(xiě)操作。OTS保證數(shù)據(jù)寫(xiě)入操作一旦執(zhí)行完成,返回成功的結(jié)果,應(yīng)用就能立即讀到最新的數(shù)據(jù)。強(qiáng)一致性為應(yīng)用提供了更好的使用體驗(yàn)。
訪問(wèn)安全:OTS 對(duì)應(yīng)用的每一次請(qǐng)求都進(jìn)行身份認(rèn)證和鑒權(quán),以防止數(shù)據(jù)被非法用戶(hù)或者未授權(quán)的用戶(hù)訪問(wèn),確保數(shù)據(jù)的安全性。通過(guò)和阿里云RAM服務(wù)的結(jié)合,OTS為應(yīng)用提供帳號(hào)之間的授權(quán)訪問(wèn)。
全托管服務(wù):OTS對(duì)于應(yīng)用而言是一個(gè)全托管的服務(wù),應(yīng)用程序無(wú)需關(guān)心表的數(shù)據(jù)分區(qū)的管理工作,集群硬件維護(hù),軟件升級(jí),配置更新和調(diào)優(yōu),集群擴(kuò)容等繁瑣的運(yùn)維任務(wù),節(jié)省了應(yīng)用開(kāi)發(fā)和維護(hù)的成本,讓用戶(hù)能夠?qū)P脑趹?yīng)用業(yè)務(wù)層的開(kāi)發(fā)上。
按量付費(fèi):OTS 根據(jù)應(yīng)用預(yù)留和實(shí)際使用的資源進(jìn)行計(jì)費(fèi),不需要在業(yè)務(wù)發(fā)展初期就進(jìn)行過(guò)多的投入,對(duì)于眾多的創(chuàng)業(yè)開(kāi)發(fā)人員來(lái)說(shuō)起步門(mén)檻低。OTS的收費(fèi)項(xiàng)包括:1)預(yù)留CU費(fèi)用;2)數(shù)據(jù)存儲(chǔ)費(fèi)用;3)下行流量的費(fèi)用。
2. 系統(tǒng)架構(gòu)
![](/d/20211019/5ecc14ba00d6dd452900f819dd9575be.gif)
OTS服務(wù)的系統(tǒng)架構(gòu)分為四層,最上層是應(yīng)用程序,應(yīng)用通過(guò)調(diào)用各種語(yǔ)言的SDK來(lái)和OTS服務(wù)進(jìn)行交互;第二層是用戶(hù)服務(wù)層,這一層完成的功能是對(duì)應(yīng)用發(fā)送的請(qǐng)求進(jìn)行協(xié)議處理、身份權(quán)限的校驗(yàn)、資源計(jì)量和請(qǐng)求到后端存儲(chǔ)引擎節(jié)點(diǎn)的路由;第三層是存儲(chǔ)引擎層,負(fù)責(zé)表分區(qū)的擴(kuò)展和管理、負(fù)載均衡、存儲(chǔ)數(shù)據(jù)和索引的管理、故障的處理以及高可用容災(zāi)等方面的;最下面一層是飛天操作系統(tǒng),負(fù)責(zé)管理底層的硬件資源,向上提供統(tǒng)一的分布式存儲(chǔ)(盤(pán)古)和計(jì)算(伏曦)。
其中下面三層運(yùn)行在阿里云數(shù)據(jù)中心的物理集群上,對(duì)應(yīng)用程序透明,最上面一層是用戶(hù)的程序,通常運(yùn)行在阿里云的ECS服務(wù)器以獲得更好的訪問(wèn)OTS的性能,當(dāng)然也可以運(yùn)行在用戶(hù)自己的物理服務(wù)器或者移動(dòng)設(shè)備上(我們目前正在開(kāi)發(fā)移動(dòng)端的OTS SDK,包括Android和iOS)。
3. 功能介紹
OTS產(chǎn)品提供以下RESTful API:
1)CreateTable(創(chuàng)建表);
2)DeleteTable(刪除表);
3)ListTable(列舉表);
4)DescribeTable(獲取表信息);
5)UpdateTable(更新表設(shè)置);
6)GetRow(讀取一行);
7)PutRow(插入一行);
8)UpdateRow(更新一行中的數(shù)據(jù));
9)DeleteRow(刪除一行);
10)BatchGetRow(批量讀取行數(shù)據(jù));
11)BatchWriteRow(批量寫(xiě)入行數(shù)據(jù));
12)GetRange(讀取范圍內(nèi)的數(shù)據(jù));
OTS提供了Java/Python/C#/PHP四種語(yǔ)言的SDK,方便應(yīng)用快速開(kāi)發(fā)基于OTS的應(yīng)用。更多關(guān)于API/SDK的內(nèi)容請(qǐng)參考:https://docs.aliyun.com/?spm=5176.383723.9.6.BASvKj#/pub/ots
4. 場(chǎng)景案例;
OTS服務(wù)目前被廣泛的使用在阿里巴巴集團(tuán)的各個(gè)業(yè)務(wù)中,積累了幾個(gè)PB的數(shù)據(jù),最大的一個(gè)應(yīng)用每天會(huì)寫(xiě)入百TB級(jí)別的數(shù)據(jù),比較典型的幾個(gè)業(yè)務(wù)場(chǎng)景如下:
阿里云郵箱的后臺(tái)存儲(chǔ):郵件的標(biāo)題、發(fā)件人、收件人、時(shí)間、狀態(tài)等等(不包括郵件正文和附件),使用OTS表對(duì)用戶(hù)的郵件按照各種規(guī)則排序,分頁(yè)讀取郵件,數(shù)據(jù)量近百TB,。
來(lái)往/釘釘?shù)暮笈_(tái)存儲(chǔ):存儲(chǔ)來(lái)往/釘釘應(yīng)用的用戶(hù)通訊錄,實(shí)時(shí)消息推送,電話會(huì)議實(shí)時(shí)通知等等。
阿里云監(jiān)控的后臺(tái)存儲(chǔ):存儲(chǔ)海量的原始監(jiān)控metric數(shù)據(jù)以及匯總數(shù)據(jù)。
支付寶的微貸風(fēng)控存儲(chǔ):存儲(chǔ)淘寶買(mǎi)賣(mài)家的信用風(fēng)控?cái)?shù)據(jù),用于每一筆花唄交易的風(fēng)險(xiǎn)評(píng)估
阿里健康藥品監(jiān)管碼存儲(chǔ):存儲(chǔ)中國(guó)藥品的監(jiān)管碼,用于查詢(xún)藥品的基本信息和追蹤藥品的流通情況,目前的存儲(chǔ)量已達(dá)近千億條記錄,日均訪問(wèn)百億次。
此外,OTS還作為大規(guī)模分布式系統(tǒng)的基礎(chǔ)組件被應(yīng)用在阿里集團(tuán)的多個(gè)產(chǎn)品架構(gòu)中,例如大規(guī)模數(shù)據(jù)分析服務(wù)ODPS的meta存儲(chǔ)和管理,大規(guī)模日志服務(wù)SLS的底層存儲(chǔ)等。
PS:關(guān)于飛天平臺(tái)
阿里云計(jì)算有限公司(簡(jiǎn)稱(chēng)“阿里云”)成立于2009年9月10日,致力于打造云計(jì)算的基礎(chǔ)服務(wù)平臺(tái),注重為中小企業(yè)提供大規(guī)模、低成本、高可靠的云計(jì)算應(yīng)用及服務(wù)。飛天開(kāi)放平臺(tái)(簡(jiǎn)稱(chēng)“飛天平臺(tái)”或者“飛天”)是由阿里云自主研發(fā)完成的公共云計(jì)算平臺(tái),該平臺(tái)所提供的服務(wù)于2011年7月28日在http://www.aliyun.com正式上線,推出了第一個(gè)云服務(wù)——彈性計(jì)算服務(wù)。
飛天平臺(tái)內(nèi)核包含的模塊可以分為以下幾部分。
分布式系統(tǒng)底層服務(wù):提供分布式環(huán)境下所需要的協(xié)調(diào)服務(wù)、遠(yuǎn)程過(guò)程調(diào)用、安全管理和資源管理的服務(wù)。這些底層服務(wù)為上層的分布式文件系統(tǒng)、任務(wù)調(diào)度等模塊提供支持。
分布式文件系統(tǒng):提供一個(gè)海量的、可靠的、可擴(kuò)展的數(shù)據(jù)存儲(chǔ)服務(wù),將集群中各個(gè)節(jié)點(diǎn)的存儲(chǔ)能力聚集起來(lái),并能夠自動(dòng)屏蔽軟硬件故障,為用戶(hù)提供不間斷的數(shù)據(jù)訪問(wèn)服務(wù);支持增量擴(kuò)容和數(shù)據(jù)的自動(dòng)平衡,提供類(lèi)似于POSIX的用戶(hù)空間文件訪問(wèn)API,支持隨機(jī)讀寫(xiě)和追加寫(xiě)的操作。
任務(wù)調(diào)度:為集群系統(tǒng)中的任務(wù)提供調(diào)度服務(wù),同時(shí)支持強(qiáng)調(diào)響應(yīng)速度的在線服務(wù)(Online Service)和強(qiáng)調(diào)處理數(shù)據(jù)吞吐量的離線任務(wù)(Batch Processing Job);自動(dòng)檢測(cè)系統(tǒng)中故障和熱點(diǎn),通過(guò)錯(cuò)誤重試、針對(duì)長(zhǎng)尾作業(yè)并發(fā)備份作業(yè)等方式,保證作業(yè)穩(wěn)定可靠地完成。
集群監(jiān)控和部署:對(duì)集群的狀態(tài)和上層應(yīng)用服務(wù)的運(yùn)行狀態(tài)和性能指標(biāo)進(jìn)行監(jiān)控,對(duì)異常事件產(chǎn)生警報(bào)和記錄;為運(yùn)維人員提供整個(gè)飛天平臺(tái)以及上層應(yīng)用的部署和配置管理,支持在線集群擴(kuò)容、縮容和應(yīng)用服務(wù)的在線升級(jí)。