主頁 > 資料庫 > 如何像用自來水一樣使用資料庫?|騰訊云資料庫TDSQL-C

如何像用自來水一樣使用資料庫?|騰訊云資料庫TDSQL-C

2022-08-04 09:58:56 資料庫

“如果說中小企業是一片片沿溪而耕的農田,那么我們的愿景就是建一座大壩來管理好上游的水資源,來灌溉下游企業,”

騰訊云資料庫高級工程師楊玨吉說這是他投身資料庫領域的初衷,初創企業、中小企業在資料庫層面的最大需求就是低成本,助力企業降本增效是騰訊云資料庫一直在努力的方向,尤其在疫情沖擊下的經濟社會中,更是一份社會責任,

在技術上深研,突破極致彈性,讓客戶像使用自來水一樣的使用資料庫,用多少、怎么用由客戶決定,計費由使用量決定,這是楊玨吉及其團隊給出的答案,TDSQL-C Serverless 資料庫通過使用計算存盤分離架構,實作自動擴縮容、按使用量計費、無使用無計費功能,從而實作大幅降低成本,下面將詳細介紹功能實作背后的架構原理及應用場景,

點擊此處觀看完整版視頻

一、產品特點

file

Serverless 分為 FaaS 和 BaaS,其中 FaaS 是函式即服務,也就是我們熟悉的云函式,可以理解成是云主機的一種抽象,免去了復雜的運維,幫助開發者自動擴縮容,實作服務的高可用,并按使用量計費,

BaaS 是后端即服務,比如物件存盤,它也免去了開發者的檔案存盤管理的負擔,能提供足夠的彈性能力,實作按照使用量計費,所以它也滿足 Serverless 的要求,

目前云資料庫的售賣方式還是與云主機類似,開發者需要購買一個固定規格的云資料庫,比如CPU 4 核記憶體 8G,即使開發者沒有 SQL 請求,也將按照 4 核 8G 進行計費,

file

業界場景的云資料庫,確實幫助開發者實作了高可用和自動備份,減少了運維負擔,但開發者需要提前預測業務請求量,并發起擴縮容,也無法在沒有使用的時候不收費,

傳統云資料庫同機部署計算和存盤,內核行程直接寫本地資料檔案,當一臺機器的存盤使用已經接近 90%,即使整機存量實體的計算資源負載再低,也無法再分配新實體了,在這種情況下,該機器上存量實體的用戶,雖然沒有使用計算資源,CPU 記憶體都是 0,也依然要承擔此機器計算資源的費用,反過來也一樣,計算使用 90%,而存盤使用量較少,也將導致剩余存盤無法再售賣,

按實際用量付費的問題本質是按實際用量分配資源,所以云資料庫如果要邁向 Serverless 這個目標,要做的就是計算存盤分離,

計算存盤分離的優勢很多,比如存盤空間和寫帶寬能突破單機上限,更強的容災能力等等,本文重點講解資源分配彈性靈活的特點,

計算存盤分離能使計算和存盤解耦,任意計算節點能訪問任務的存盤節點,計算和存盤維護各自的資源池,分別最大化、最靈活地進行資源分配,存盤層按存放的資料量收費,計算層按真正的負載收費,

另一方面,傳統云資料庫擴縮容需要搬遷資料到另一臺物理設備,所以耗時長,而計算存盤分離架構,計算層擴縮容不需要搬遷存盤層的資料,直接分配計算層資源即可,秒級完成擴縮容

在計算存盤分離之上,TDSQL-C 完成了 Serverless 產品功能的設計,讓我們來看看具體是怎么做的,

二、架構設計

file

上圖是開發者訪問的全鏈路,應用程式通過接入層訪問計算層,計算層從存盤層回傳資料,

我們的 Serverless 形態是利用監控計算層實作的,通過監控,我們對計算資源進行自動擴縮容,并對該時刻所消耗的資源進行計費,當發現沒有請求時,監控服務就會觸發計算資源的回收,并通知接入層,用戶再次訪問時,接入層則會喚醒實體,再次提供訪問,

file

從客戶角度總結起來就是三大特點:

自動擴縮容:根據業務負載擴縮容實體,開發者無需預測負載并提前擴容資源;

按使用量計費:以實際使用的負載進行計費,開發者無需為自己沒有使用到的資源付費;

無使用無費用:無資料請求時,不對計算資源計費,

1. 自動擴縮容

file

自動擴縮容的目標是讓客戶可以像使用自來水那樣使用資料庫,既可以一滴一滴,也可以像瀑布一樣傾瀉地用,

開發者在購買一個 Serverless 實體時,需要指定擴縮容的范圍,也就是最小和最大規格,比如開發者購買了一個最小 1 核 2G 最大 2 核 4G 的實體,我們對 CPU 和記憶體限制到最大規格,也就是說 CPU 和記憶體不存在擴容的時間,而 Buffer Pool 根據 CPU 負載定時調整,

這是一個我們最開始考慮的方案,也是比較業界常見的擴縮容方案,

上圖縱軸表示 CPU,橫軸表示記憶體(Mem),矩形框代表資源限制,實體閑時,就限制實體的規格為 1 核 2G,負載來臨時,CPU 迅速打滿,監控發現后,再觸發擴容,擴成 2 核 4G,其中快取也是 BP 大小也相應增加,可以看到在擴容發生之前,用戶的 CPU 使用是受到限制的,限制的時間取決于觸發擴容的閾值,

file

我們后來采用的方案則是一開始就限制到最大規格,負載來臨時,可以一下子使用到更多的資源,然后根據 CPU 的使用量來觸發快取大小的更新,在這個方案下用戶使用資料庫可以無感知進行 CPU 擴容,并且也不會因為鏈接突增導致實體 OOM,

2. 按使用量計費

file

使用量計費的目標是秒級別的計費粒度,以及任意單位的資源規格,比如用到 0.7 核,就按 0.7 核收費,而不是不足 1 核算 1 核,

我們的監控室每 5 秒采集一次,采集結果統一使用 CCU(TDSQL-C Compute Unit)作為統一的算力單位,其計算方法為 CPU、記憶體的1/2以及最小規格三者取最大值,

以上圖為例,閑時以最小規格 0.25 CCU 計費,負載來臨時以 CPU 進行收費,即為 3;當負載結束時,記憶體還在釋放,為記憶體的1/2 ,也就是 0.8,

3. 無使用無計費

file

問題來了,大家可能覺得閑時按最小 0.25 CCU 計費也還是多了,于是我們推出無使用無費用的功能,

10 分鐘沒有收到用戶連接,就將回收計算節點,轉為暫停的實體,暫停的實體收到用戶請求后,啟動計算節點,恢復為運行中的實體,

我們通過監控計算的連接數,沒有連接則向管控發起暫停,

file

暫停后,我們回收了計算層所有資源,不再對計算資源收費,僅對存盤資源進行收費,接入層收到用戶請求后,管控則會啟動實體,提供給用戶訪問,

file

這當中比較重要的是恢復時間,也就是冷啟動時間,在恢復時間上,我們做了相當多的優化,包括找持久化的日志位點以及 BP 和事務系統的初始化,目前,恢復時間能做到僅需2秒

有的讀者可能會感興趣計算存盤分離的架構細節,接下來簡要分享一下架構細節,

file

在計算層,我們使用的是的 TXSQL,完全兼容 MySQL 協議,能夠復用社區的 bugfix 和特性,主從復制使用 redo 復制,優點是延遲低,redo 日志不落在本地,而是發送給存盤層,

在存盤層,我們使用的是云硬碟的 HiStore 存盤平臺,保障了資料安全、GB 級別的備份回檔、以及性能與成本的多種存盤選擇方案,我們在 HiStore 中加入資料庫的邏輯,實作日志回放以及算子下推,

大家如果不熟悉資料庫也不要被這個這些名詞嚇到,我們對外其實就是提供的是與 MySQL 一致的資料庫服務,區別是內部我們做了計算存盤分離,分離之后計算層的資源可以更自由、靈活地分配

三、應用場景

應用場景是廣大開發者比較關心的,接下來給大家分享六類場景的實際應用,

1. 慢查詢

file

當開發者的 SQL 優化得不夠好,或者偶爾需要全表掃描分析資料時,就會出現慢查詢,與慢查詢相伴的往往是 CPU 使用率高(因為掃描的資料比較多),

這也是用戶能切實感知到的,從上圖的監控中可以看到慢查詢與 CPU 是正相關的,如果用戶購買一個比較大的固定規格的實體,那么將承擔額外的成本;如果購買的是小規格實體,那么在慢查詢到來時用戶的 CPU 會被占滿,進而影響業務,使用Serverless 資料庫就不用擔心這個問題,大部分時間Serverless 資料庫以低 CCU 進行付費,慢查詢來臨的時候可以立刻用到額外的 CPU,所以整體上也只是影響慢查詢時刻的計費

2. 定時任務

file

與慢查詢類似,有相當多的業務都有定時處理邏輯,包括定時清理舊資料、定時生成前一天的報表等,上圖可以看到,用戶在每天 0 點會跑非常多的請求,但平時大部分時間是一個低負載,用戶使用了 Serverless 資料庫之后,也不用去對規格和費用做權衡了,和上一個例子一樣,用多少就計費多少

3. 歸檔資料庫

file

如果長時間不用資料庫,就不用對 CPU 和記憶體進行收費,這類通常見于一些檔案資料庫、機器學習的樣本資料庫、個人家庭的歷史傳感器資料庫等,不會經常使用,而是偶爾訪問的狀態,這類資料的常見的做法是直接存在 COS 里,需要的時候去下載,而Serverless 資料庫有一個很大的優點就是需要的時候立刻能夠提供索引,且擁有強大的分析功能,開發者不需要自己去寫代碼就能搜索到需要的資料

4. 低頻訪問的業務

file

對于平均每天的訪問量小于 10 次的低頻訪問業務,例如個人博客、垂直社區論壇、微信小程式,我們與云函式、云開發、微信云托管有深入合作,能實作訪問結束后就停止計費

5. 開發測驗環境

file

上圖可以看到在一周時間內,用戶在晚上、周末都沒有訪問和使用,用戶通過 TDSQL-C Serverless 資料庫的自動暫停功能,節省了大量研發測驗成本

6. 微服務場景

file

隨著微服務越來越流行,每個單獨的服務負責的功能也越來越小,隨之對應的是微服務后端的資料庫的負載也會變小,一種做法是多個微服務共用一個大的資料庫,但這會帶來相互影響的問題,所以,Serverless 資料庫提供小規格的資料庫實體,來保證微服務之間的隔離性

四、總結與展望

TDSQL-C Serverless 補充了資料庫領域中 Serverless 的空白,在自動擴縮容上,可以使 CPU 瞬間用到最大規格,按使用量計費上能夠按 CPU 實時的使用量進行計費,不使用不計費上冷啟動時間是 2 秒,目前在 Serverless 資料庫中是絕對領先的,未來我們也會在冷啟動上做進一步的優化,以及幫助客戶進一步降低使用成本,

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/500879.html

標籤:其他

上一篇:Redis的噩夢:阻塞(JedisConnectionException、以及CPU飽和記憶體不足等)

下一篇:企業級資料治理作業怎么開展?Datahub這樣做

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more