1. 概要
OTS是構建在阿里云飛天分布式系統上的NoSQL存儲服務,提供海量結構化數據的存儲和實時訪問。OTS以實例和表來組織數據,通過自動的數據分區和負載均衡技術,對應用提供規模(數據和訪問)的無縫擴展。應用通過調用OTS API/SDK或者操作管理控制臺來使用OTS服務。OTS服務具有以下幾個主要的特點:
規模可擴展:OTS具備可擴展的服務能力,隨著應用表的數據量和訪問量逐漸增大,OTS會自動進行數據分區的調整(partition split/merge)來滿足應用業務規模的增長,并且保持穩定的性能。OTS提供預留讀寫吞吐率的機制來讓應用配置表上的資源,應用通過主動配置和調整表上的預留讀寫吞吐率來應對業務訪問量的變化,從而獲得更有保障的服務。
高可靠可用:OTS的數據存儲在底層的分布式文件系統上,數據有3份拷貝,分別位于不同的容錯區(機架或者數據中心),當硬件出現故障導致數據備份的損壞或丟失時,分布式文件系統會自動發現、復制并恢復數據備份,保障數據的安全可靠。OTS系統會自動檢測硬件故障(如機器宕機或者網絡中斷)并進行數據分區的實時遷移,保障服務的高可用性。
性能可預期:OTS服務底層采用全SSD存儲數據,單行數據讀寫請求的延時保持在幾個毫秒級別。應用通過配置預留讀寫吞吐率來預留資源,保障請求并發量和延時的穩定性。
靈活的數據模型:OTS表中的數據無固定格式要求,每行的列數和列名可以不相同,列值支持5種數據類型:Integer、Boolean、Double、String、Binary。每一行的列可以動態增加或者刪除,沒有額外修改schema的代價。
讀寫強一致性:相對于最終一致性而言,OTS提供強一致性的讀寫操作。OTS保證數據寫入操作一旦執行完成,返回成功的結果,應用就能立即讀到最新的數據。強一致性為應用提供了更好的使用體驗。
訪問安全:OTS 對應用的每一次請求都進行身份認證和鑒權,以防止數據被非法用戶或者未授權的用戶訪問,確保數據的安全性。通過和阿里云RAM服務的結合,OTS為應用提供帳號之間的授權訪問。
全托管服務:OTS對于應用而言是一個全托管的服務,應用程序無需關心表的數據分區的管理工作,集群硬件維護,軟件升級,配置更新和調優,集群擴容等繁瑣的運維任務,節省了應用開發和維護的成本,讓用戶能夠專心在應用業務層的開發上。
按量付費:OTS 根據應用預留和實際使用的資源進行計費,不需要在業務發展初期就進行過多的投入,對于眾多的創業開發人員來說起步門檻低。OTS的收費項包括:1)預留CU費用;2)數據存儲費用;3)下行流量的費用。
2. 系統架構

OTS服務的系統架構分為四層,最上層是應用程序,應用通過調用各種語言的SDK來和OTS服務進行交互;第二層是用戶服務層,這一層完成的功能是對應用發送的請求進行協議處理、身份權限的校驗、資源計量和請求到后端存儲引擎節點的路由;第三層是存儲引擎層,負責表分區的擴展和管理、負載均衡、存儲數據和索引的管理、故障的處理以及高可用容災等方面的;最下面一層是飛天操作系統,負責管理底層的硬件資源,向上提供統一的分布式存儲(盤古)和計算(伏曦)。
其中下面三層運行在阿里云數據中心的物理集群上,對應用程序透明,最上面一層是用戶的程序,通常運行在阿里云的ECS服務器以獲得更好的訪問OTS的性能,當然也可以運行在用戶自己的物理服務器或者移動設備上(我們目前正在開發移動端的OTS SDK,包括Android和iOS)。
3. 功能介紹
OTS產品提供以下RESTful API:
1)CreateTable(創建表);
2)DeleteTable(刪除表);
3)ListTable(列舉表);
4)DescribeTable(獲取表信息);
5)UpdateTable(更新表設置);
6)GetRow(讀取一行);
7)PutRow(插入一行);
8)UpdateRow(更新一行中的數據);
9)DeleteRow(刪除一行);
10)BatchGetRow(批量讀取行數據);
11)BatchWriteRow(批量寫入行數據);
12)GetRange(讀取范圍內的數據);
OTS提供了Java/Python/C#/PHP四種語言的SDK,方便應用快速開發基于OTS的應用。更多關于API/SDK的內容請參考:https://docs.aliyun.com/?spm=5176.383723.9.6.BASvKj#/pub/ots
4. 場景案例;
OTS服務目前被廣泛的使用在阿里巴巴集團的各個業務中,積累了幾個PB的數據,最大的一個應用每天會寫入百TB級別的數據,比較典型的幾個業務場景如下:
阿里云郵箱的后臺存儲:郵件的標題、發件人、收件人、時間、狀態等等(不包括郵件正文和附件),使用OTS表對用戶的郵件按照各種規則排序,分頁讀取郵件,數據量近百TB,。
來往/釘釘的后臺存儲:存儲來往/釘釘應用的用戶通訊錄,實時消息推送,電話會議實時通知等等。
阿里云監控的后臺存儲:存儲海量的原始監控metric數據以及匯總數據。
支付寶的微貸風控存儲:存儲淘寶買賣家的信用風控數據,用于每一筆花唄交易的風險評估
阿里健康藥品監管碼存儲:存儲中國藥品的監管碼,用于查詢藥品的基本信息和追蹤藥品的流通情況,目前的存儲量已達近千億條記錄,日均訪問百億次。
此外,OTS還作為大規模分布式系統的基礎組件被應用在阿里集團的多個產品架構中,例如大規模數據分析服務ODPS的meta存儲和管理,大規模日志服務SLS的底層存儲等。
PS:關于飛天平臺
阿里云計算有限公司(簡稱“阿里云”)成立于2009年9月10日,致力于打造云計算的基礎服務平臺,注重為中小企業提供大規模、低成本、高可靠的云計算應用及服務。飛天開放平臺(簡稱“飛天平臺”或者“飛天”)是由阿里云自主研發完成的公共云計算平臺,該平臺所提供的服務于2011年7月28日在http://www.aliyun.com正式上線,推出了第一個云服務——彈性計算服務。
飛天平臺內核包含的模塊可以分為以下幾部分。
分布式系統底層服務:提供分布式環境下所需要的協調服務、遠程過程調用、安全管理和資源管理的服務。這些底層服務為上層的分布式文件系統、任務調度等模塊提供支持。
分布式文件系統:提供一個海量的、可靠的、可擴展的數據存儲服務,將集群中各個節點的存儲能力聚集起來,并能夠自動屏蔽軟硬件故障,為用戶提供不間斷的數據訪問服務;支持增量擴容和數據的自動平衡,提供類似于POSIX的用戶空間文件訪問API,支持隨機讀寫和追加寫的操作。
任務調度:為集群系統中的任務提供調度服務,同時支持強調響應速度的在線服務(Online Service)和強調處理數據吞吐量的離線任務(Batch Processing Job);自動檢測系統中故障和熱點,通過錯誤重試、針對長尾作業并發備份作業等方式,保證作業穩定可靠地完成。
集群監控和部署:對集群的狀態和上層應用服務的運行狀態和性能指標進行監控,對異常事件產生警報和記錄;為運維人員提供整個飛天平臺以及上層應用的部署和配置管理,支持在線集群擴容、縮容和應用服務的在線升級。