国产精品chinese,色综合天天综合精品网国产在线,成午夜免费视频在线观看,清纯女学生被强行糟蹋小说

    <td id="ojr13"><tr id="ojr13"><label id="ojr13"></label></tr></td>
        • <source id="ojr13"></source>
            <td id="ojr13"><ins id="ojr13"><label id="ojr13"></label></ins></td>

            當前位置:文章中心>技術(shù)教程
            公告通知 新聞快遞 技術(shù)教程 產(chǎn)品展示

            云原生 Serverless Database 使用體驗

            發(fā)布時間:2021-12-20 點擊數(shù):754

            近十年來互聯(lián)網(wǎng)技術(shù)得到了飛速的發(fā)展,越來越多的行業(yè)加入到了互聯(lián)網(wǎng)的矩陣,由此帶來了更為豐富且復雜的業(yè)務場景需求,這對于數(shù)據(jù)應用系統(tǒng)的性能無疑是巨大的挑戰(zhàn)。


            關(guān)系型數(shù)據(jù)庫 MySQL 是應用系統(tǒng)中最廣泛使用的數(shù)據(jù)庫產(chǎn)品,擁有強大的數(shù)據(jù)查詢和強事務處理能力。在如今的云時代,應用系統(tǒng)逐漸演進到基于云原生 Serverless 架構(gòu)去進行搭建,因為它具有低成本、高彈性的優(yōu)勢。但基于 MySQL 的數(shù)據(jù)存儲在 Serverless 架構(gòu)體系下仍存在一些明顯的不足:


            1. 彈性擴展能力差。Serverless 場景中一個重要特點是應用負載具有顯著的波峰波谷。當面臨流量洪峰時,DBA 又需要手動對集群進行擴容以避免集群被打爆;而適逢流量低谷時,則需要對集群進行縮容以節(jié)省成本。


            2. 運維復雜度高。MySQL 搭建需要進行購置集群、安裝服務、管理連接。業(yè)務上線后還要關(guān)注數(shù)據(jù)安全、服務可用性、響應時間等等,用于集群運維的時間占比會變高,無法把更多的精力專注于業(yè)務研發(fā)上。


            3. 成本高。通常 DBA 需要預估業(yè)務規(guī)模來事先設(shè)定數(shù)據(jù)庫初始容量,當業(yè)務請求量未達到預估值時,集群中的資源會一直處于閑置狀態(tài),造成資源浪費。


            01

            Serverless DataBase

            Cloud Native


            MySQL 支持的關(guān)系模型和其強事務的特性,使其在應用系統(tǒng)中有非常重要的位置,是目前不可完全替代的存儲組件之一。但若一味地依賴 MySQL 又會使得應用系統(tǒng)無法完全 Serverless 化,不能享受 Serverless 帶來的極致彈性。


            在阿里內(nèi)部我們有一些新的架構(gòu)實踐,那些需要強事務處理的數(shù)據(jù)仍舊使用關(guān)系表存儲,而對于非強事務表數(shù)據(jù)存儲,我們則設(shè)計出了一款擁有極致彈性的 Serverless 表存儲。


            關(guān)于 Serverless 數(shù)據(jù)庫產(chǎn)品,我們的設(shè)計要求是必須具備以下幾個特征:


            • 完全彈性。可根據(jù)應用負載自動彈性擴縮容,這一特性可為用戶帶來更經(jīng)濟的計費模式和更絲滑的體驗。


            • 按量計費。Serverless 數(shù)據(jù)庫的使用成本主要來自于計算成本和存儲成本。用戶只需為業(yè)務實際產(chǎn)生的存儲單元和響應單元付費,節(jié)省成本。


            • 零運維。即開即用,無需管理容量、水位、軟件升級、內(nèi)核優(yōu)化等運維事項,真正讓研發(fā)專注于業(yè)務開發(fā)。


            Serverless 架構(gòu)在諸多業(yè)務場景中都有廣泛的應用實踐。例如世紀聯(lián)華集團在其核心的電商業(yè)務中,針對自建 IDC 機房遇到的資源難以預算、系統(tǒng)部署困難等痛點問題,將業(yè)務實現(xiàn)全面上云并逐步改造為全 Serverless 架構(gòu)的中臺模式。


            世紀聯(lián)華集團采用了函數(shù)計算+ API 網(wǎng)關(guān)+ Tablestore 方案,輕松支撐起了 6.18、雙 11 等大促活動。其中,表格存儲 Tablestore 作為世紀聯(lián)華電商系統(tǒng)的云上 Serverlesss 架構(gòu)中的核心存儲,具備極致彈性、免運維、成本低等優(yōu)勢。


            02

            表格存儲 Tablestore 簡介

            Cloud Native


            表格存儲 Tablestore 于 2009 年阿里云成立之初便立項研發(fā),基于底層飛天平臺從零開始構(gòu)建,是一款多模型、多引擎的 Serverless 表存儲。在公共云上輸出了國內(nèi)外 30 多個區(qū)域,擁有 1.5 萬服務器規(guī)模和 200PB 存儲規(guī)模,是阿里云眾多商業(yè)化產(chǎn)品的底層核心存儲。


            同時在線下已輸出到金融、能源、電力、物流、醫(yī)療、政企等行業(yè),服務于公共云 1000+ 企業(yè)客戶和 500+ 線下項目。


            表格存儲 Tablestore 具備 HBase 和 ElasticSearch 的融合功能,擁有極致彈性體驗、免運維、即開即用的特性,支持 GB 到 PB 的彈性存儲和 十萬級 TPS 服務能力的無感知擴展。支撐海量的表數(shù)據(jù)的同時,提供豐富的數(shù)據(jù)檢索與分析能力,是集存儲、搜索和分析多功能一體的一站式結(jié)構(gòu)化數(shù)據(jù)存儲平臺。



            表格存儲 Tablestore 的整體架構(gòu)如下圖所示:

            Tablestore 架構(gòu)圖


            Tablestore 架構(gòu)圖


            表格存儲提供了多種數(shù)據(jù)模型,主要包括寬表模型(Widecolumn)、消息模型(Timeline)和時序模型(Timeseries)。


            • 寬表模型主要承載表結(jié)構(gòu)數(shù)據(jù)存儲,例如電商訂單數(shù)據(jù)。

            • 消息模型主要承載消息數(shù)據(jù)存儲,例如 IM/Feeds 消息。

            • 時序模型主要承載時序數(shù)據(jù)存儲,例如物聯(lián)網(wǎng)設(shè)備時序數(shù)據(jù)。


            下面我們將以電商訂單場景為例子,帶大家體驗基于 Tablestore 的寬表模型構(gòu)建一個 Serverless 的訂單存儲系統(tǒng)。


            03

            Tablestore 體驗

            Cloud Native

            1
            準備工作


            在體驗 Tablestore 帶來的極致彈性之前,需要準備如下幾個步驟:


            (1)創(chuàng)建一個阿里云賬號,并獲取到阿里云賬號的 AK。(云賬號 AK 是訪問所有云服務包括 Tablestore 的密鑰,后續(xù)需要通過 AK 來訪問 Tablestore 服務)。


            (2)下載并啟動 Tablestore 提供的命令行工具 Tablestore CLI,命令行工具提供一些簡單的指令來管理表格存儲服務。


            首先通過 config 命令配置連接密鑰并通過 enable_service 命令開通 Tablestore 服務:

            ?

            config --id accessKeyID --key accessKeySecretenable_service


            (3)通過 create_instance 命令創(chuàng)建一個實例:


            create_instance -d "order storage" -n serverless-db -r cn-hangzhou


            實例相當于 MySQL 數(shù)據(jù)庫的概念,實例創(chuàng)建后無需思慮實例所在物理機集群的水位,只需專注開發(fā)業(yè)務邏輯即可。同時實例上的讀寫和存儲均為按量計費,若無讀寫無存儲,實際則不會產(chǎn)生任何費用。


            至此,一個能夠支持 GB 到 PB 存儲的、無并發(fā)限制、零運維、完全彈性的 Serverless DataBase 就創(chuàng)建完成了。


            2
            創(chuàng)建表


            寬表模型是(Widecolumn) 是 Schema-free 的一種數(shù)據(jù)表,與關(guān)系型數(shù)據(jù)庫 MySQL 不同的是,創(chuàng)建一張表 Widecolumn 模型的數(shù)據(jù)表僅需要定義主鍵結(jié)構(gòu),并不需要定義屬性列結(jié)構(gòu)。


            例如一張訂單表 order 的表結(jié)構(gòu)如下圖表格所示:


            order的表結(jié)構(gòu)


            創(chuàng)建一張寬表模型的訂單表,屬性列信息無需定義,只需定義訂單表主鍵 id ,命令如下:


            create_instance -d "order storage" -n serverless-db -r cn-hangzhou


            執(zhí)行 create 命令后成功創(chuàng)建一張訂單寬表,剛創(chuàng)建的訂單寬表會被初始化 1 個數(shù)據(jù)分區(qū)。


            隨著訂單數(shù)據(jù)量的增加或訪問量的增加,寬表模型會根據(jù)第一主鍵的分布范圍(上述數(shù)據(jù)模型中即是訂單 ID)分裂擴展成多個數(shù)據(jù)分區(qū)平均分布到多臺物理機上以支持更大的數(shù)據(jù)規(guī)模(TB 甚至 PB)和讀寫吞吐(十萬 TPS 以上),整個擴展過程完全由服務端自動完成,無需人工干預。


            3
            數(shù)據(jù)導入


            模擬生成了 100 萬條樣例訂單數(shù)據(jù),并通過 import 命令批量導入到 order 表中。單數(shù)據(jù)分區(qū)的寫入速度可以達到幾萬行/s,隨著分區(qū)擴展,寫入吞吐還可以進一步提高。


            import -i orderDataFile -l 1000000
            Current speed is: 10000 rows/s. Total succeed count 10000, failed count 0.Current speed is: 12600 rows/s. Total succeed count 22600, failed count 0.......Current speed is: 9200 rows/s. Total succeed count 1000000, failed count 0.Import finished, total count is 1000000, failed 0 rows.


            4
            訂單查詢


            使用 get 命令按照訂單號(id)單行查詢寬表模型,得到一條訂單數(shù)據(jù)。get 命令只能夠基于 rowKey 來進行單行查詢。


            查詢一條訂單示例:

            id = "0000005be2b43dd134eae18ebe079774"


            get --pk '["0000005be2b43dd134eae18ebe079774"]
            +----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+--------+---------+-------+-------+--------+------------+| order_id                         | cId   | cName  | hasPaid | oId         | orderTime     | pBrand | pCount | pId      | pName  | pPrice  | pType | sId   | sName  | totalPrice |+----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+--------+---------+-------+-------+--------+------------+| 0000005be2b43dd134eae18ebe079774 | c0015 | 消周五  | false   | o0035062633 | 1507519847532 | 小米    | 3      | p0005003 | 小米 6 | 2299.21 | 手機   | s0017 | 售鄭七  | 6897.63    |+----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+--------+---------+-------+-------+--------+------------+


            5
            訂單檢索與統(tǒng)計


            訂單場景中經(jīng)常會出現(xiàn)依賴多條件組合篩選,這種情況下需要依賴 Tablestore 的多元索引特性。多元索引是 Tablestore 提供的類似 Elasticsearch 的表數(shù)據(jù)索引,支持豐富的查詢方式和數(shù)據(jù)聚合能力,可在多個列上分別建立索引。和 MySQL 中的聯(lián)合索引不同的是,多元索引可根據(jù)任意字段組合查詢,不會按照多列的最左前綴來匹配。


            例如我們在 id、pName、totalPrice 等字段上分別建立索引,采用倒排索引、分詞、BKDTree 等數(shù)據(jù)結(jié)構(gòu),提供了精確查詢、全文檢索、范圍查詢等查詢能力。另外,多元索引也支持按字段分組、多字段排序以及統(tǒng)計聚合能力。


            使用 create_search_index 命令在寬表上建立多元索引,起到查詢加速的作用。


            create_search_index -t order -n order_index{ "IndexSetting": null, "FieldSchemas": [{ "FieldName": "id", "FieldType": "KEYWORD", "Index": true, "EnableSortAndAgg": true, "Store": true },{ "FieldName": "pName", "FieldType": "TEXT", "Index": true, "EnableSortAndAgg": false, "Store": true },{ "FieldName": "totalPrice", "FieldType": "DOUBLE", "Index": true, "EnableSortAndAgg": true, "Store": true } ...//其他字段 ] }


            Tablestore 支持 SQL 查詢能力,兼容了 MySQL 的查詢語法,并且盡量保留了關(guān)系型數(shù)據(jù)庫的使用習慣。SQL 能夠自動選擇索引并進行查詢加速,通過多元索引的查詢加速,在百億數(shù)據(jù)規(guī)模下也具備了毫秒級延遲查詢的能力。


            根據(jù) sName、pBrand、pName 三個字段條件進行訂單檢索:


            select * from `order` where sName = "售周五" and pBrand = "小米" and pName like "紅米%"limit 3;
            +----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+---------+--------+-------+---------------+-------+--------+------------+| id                               | cId   | cName  | hasPaid | oId         | orderTime     | pBrand | pCount | pId      | pName   | pPrice | pType | payTime       | sId   | sName  | totalPrice |+----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+---------+--------+-------+---------------+-------+--------+------------+| 00001c760c04126da067e90409467c4e | c0022 | 消趙一  | true    | o0009999792 | 1494976931954 | 小米    | 3      | p0005004 | 紅米 5s | 499.01 | 手機   | 1494977189780 | s0005 | 售周五  | 1497.03    |+----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+---------+--------+-------+---------------+-------+--------+------------+| 0000d89f46952ac03da71a33c8e83eef | c0012 | 消錢二  | false   | o0024862442 | 1502415559707 | 小米    | 2      | p0005004 | 紅米 5s | 499.01 | 手機   | null          | s0015 | 售周五  | 998.02     |+----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+---------+--------+-------+---------------+-------+--------+------------+| 0000f560b62779285e86947f8e8d0e4c | c0008 | 消馮八  | false   | o0000826505 | 1490386088808 | 小米    | 1      | p0005004 | 紅米 5s | 499.01 | 手機   | null          | s0015 | 售周五  | 499.01     |+----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+---------+--------+-------+---------------+-------+--------+------------+


            統(tǒng)計所有訂單中每個商品品牌的訂單數(shù):


            select pBrand,count(*) from `order` group bypBrand;
            +--------+----------+| pBrand | count(*) |+--------+----------+| vivo   | 162539   |+--------+----------+| 聯(lián)想   | 304252   |+--------+----------+| oppo   | 242513   |+--------+----------+| 蘋果   | 96153    |+--------+----------+| 小米   | 194543   |+--------+----------+


            04

            總結(jié)

            Cloud Native


            表格存儲 Tablestore 作為一款廣泛應用 Serverless DataBase,提供了經(jīng)濟的計費模式,能大幅縮減業(yè)務成本。以上文訂單場景為例子,在一億訂單數(shù)據(jù)量級和平均 2000TPS 的讀寫量下,采用表格存儲 Tablestore 僅需不到 400元/月 的使用成本。與此同時,Tablestore 具備極致的彈性服務能力和完全零運維的特性,能夠給用戶帶來更絲滑的使用體驗。