主頁 > 資料庫 > TDSQL-C 真·秒級啟停:連接斷了,又沒斷

TDSQL-C 真·秒級啟停:連接斷了,又沒斷

2022-11-12 08:44:02 資料庫

你聽過多少款無服務器架構(Serverless)資料庫?

什么是Serverless呢?簡單理解,Serverless 分為 FaaS 和 BaaS 兩個部分,其中 FaaS 指的是函式即服務,BaaS 是后端即服務,

舉個例子,用戶瀏覽網頁,可能涉及CDN資源,如果是靜態內容,從物件存盤下載照片、視頻;如果是動態內容,則觸發一個函式計算,云函式將從云資料庫獲取相應的資源,生成用戶所需的動態內容,其中,云函式為 FaaS,物件存盤和云資料庫則為 BaaS,

file

傳統的云資料庫會提供多種記憶體/CPU規格給用戶購買,即使無法時刻用滿負載,用戶也需要為選中的規格付費,大多數客戶在購買資料庫服務時,只能根據歷史經驗來推測需求規格,無法準確判斷業務未來的發展趨勢,也是,咱們沒有天眼,誰知道什么時候能被時代選中呢?

不過,咱還是要默默的問自己一聲,萬一爆紅,你的資料庫做好準備迎接業務訪問量暴漲、計算或存盤的需求量激增了嗎

不打算爆紅的企業不是好企業,抱著一顆要爆紅的心,大多數的企業會選擇比真實需求稍微偏大一些規格的資料庫服務,在沒爆紅前,這就是存盤、計算資源的浪費,也是嘩嘩的銀子在流淌,當然也有很多務實的企業,計算的近乎精準,可還是避免不了資源的靈活規劃問題,如某一時刻突然業務訪問量暴漲,對計算或存盤的需求量激增,也容易出現實體資源不夠、規格太小,需要緊急擴容,

那,用戶當然要問了,到底我要選擇多大規格的呢?在 TDSQL-C 這兒,完全不用糾結,

Serverless 服務是騰訊云資料庫自研的新一代云原生關系型資料庫 TDSQL-C MySQL版的無服務器、全 Serverless 架構版,TDSQL-C 推出的 Serverless 服務基于計算與存盤分離的理念,滿足了客戶在公有云計算環境下根據業務發展彈性擴展集群的剛性需求,讓用戶不再糾結實體資源問題,讓用戶像使用自來水一樣使用資料庫,總結其特性,可分為以下三點:

  • 自動擴縮容:用戶不需要過度關注規格,訪問量上來時自動擴容,降低時自動縮容,且實作擴縮容的程序中做到業務無感知;
  • 實用實付:按秒計量,按小時結算,按照實際使用的資源付費;
  • 不使用不計費:如果沒有訪問,不應該收費,幫助業務極大程度地節省成本;

要想完美的實作 Serverless 的特性,必然不能放過任何一個細節,資料庫實體的啟停程序帶來的時間成本、安全挑戰就是其中重要的一點,接下來將會圍繞這個細節為大家闡述騰訊云資料庫TDSQL-C的解法,

一、頭腦風暴

在一些極限的測驗場景下,實體會頻繁的自動啟停,這時候如何保證實體停止后快速恢復呢?如何保證在恢復實體時無需用戶重復鏈接,直到恢復訪問?

站在用戶的角度考慮,誰都不希望資料庫每次啟停都耗費大量的時間,更不希望在這個程序中對業務有任何的影響,因此,極致壓縮冷啟動時間,做到鏈接不斷轉發請求的能力相當關鍵,

為了實作這一能力,我們做了眾多探索,最后選定了通過在接入層增加一個恢復感知器來實作秒級冷啟動這一方案,同比于通過 proxy 來實作鏈接的保持和轉發能力的方案,我們采用的方案更加貼合 Serverless 服務為用戶提供低成本的理念,這是因為采用 proxy 模式需要支付額外的成本,整體設計會更加復雜,并且還需要設計多租戶的能力,

二、建連流程

接下來,我們將詳細解讀 TDSQL-C Serverless 服務是如何實作通過接入層來實作恢復感知服務這一方案的,

這一方案的核心要點是在 TDSQL-C 的接入層增加了一個恢復感知器(下文簡稱:perceptron),通過 perceptron 模塊來實作請求轉發,perceptron 在和客戶端握手之后,不斷開與用戶連接,恢復實體后,與 TDSQL-C 握手,后續轉發四層報文,以下為 perceptron 與 TDSQL-C 建連的具體程序:

file

在實體暫停的狀態下,如果有連接發起時,MySQL 客戶端首先會同 preceptron 進行 TCP 握手(P0),

file

完成 TCP 握手之后,preceptron 會向客戶端發送 “亂數 A” 進行挑戰(P1),MySQL 客戶端用自己的賬號密碼和 “亂數 A” 來計算并回復自己的 “登錄解答 A”(P2),

file

由于 preceptron 并沒有存盤用戶的賬號密碼,所以無法校驗 “登錄解答 A” 是否正確,但 preceptron 能區分客戶端是 MySQL 客戶端,還是其他型別的客戶端(preceptron 在機器學習界是分類器,區分不同型別的客戶端,這也是我們以它命名的原因之一),

校驗 “登錄解答 A” 將由 TDSQL-C 計算層(下文簡稱:TDSQL-C)來完成,preceptron 通過管控喚醒 TDSQL-C 后(P3),開始下一步的登錄校驗流程,

file

在和 preceptron TCP 握手之后(P4),對于 TDSQL-C 來說,preceptron 也是一個普通的 MySQL 客戶端,所以也發送一個 “亂數 B” 挑戰(P5)給 preceptron,

preceptron 的回復是一個我們實作的特殊的 MySQL 報文(P6),首先它用 “亂數 B” 和 preceptron 自身的鑒權機制計算得到 “登錄解答 B” 并放入報文中,其次它也將 “亂數 A” 和 “登錄解答 A” 捎帶在此報文中,

file

TDSQL-C 收到特殊的解答報文后會做兩次校驗,第一次是 “亂數 B” 和 “登錄解答 B” 的正確性以及 preceptron 的身份,通過后再進行第二次的 “亂數 A” 和 “登錄解答 A” 的正確性,通過即以用戶身份進行登錄,并回復 preceptron 登錄成功(P7),

file

preceptron 進而回復用戶登錄成功(P8),

file

經歷過這樣的流程后,我們在客戶端發起一次登陸請求后,實體就可以完全無感地進行實體恢復,恢復登錄后,后續的請求和資料包通過 preceptron 進行相互的轉發,

比較巧妙的點在于整體流程設計采用了兩個挑戰亂數進行鑒權,這樣做的優勢在于:

  • 實作中繼模塊 preceptron 不存盤用戶名密碼的情況下也可以完成用戶名密碼驗證;
  • 保證了用戶密碼的安全性,也不會引入存盤的密碼不一致的問題;

由于后續的 SQL 請求都是通過 preceptron 進行轉發,此功能對于 preceptron 的安全性、穩定性、低資源消耗以及低延遲回應能力都有要求,所以 TDSQL-C 團隊采用了 Rust 語言進行研發,相比使用垃圾回識訓制管理記憶體的語言,Rust 具有更穩定的回應時間,同時基于 Rust 記憶體管理特點,使得 preceptron 更安全,占用的記憶體資源更少,最大化降低成本,

至此,讀者一定會疑問,基于 serverless 形態下如果所有請求都通過 preceptron 進行轉發,這樣成本和開銷無疑會變大,有悖于資料庫在 serverless 下的低成本特性吧?

其實,選擇 serverless 的用戶更在意低成本,而不是讀寫分離和鏈接保持能力,因此我們在設計 preceptron 模塊時,只會把觸發恢復的請求鏈接接路由到 preceptron 上,當實體恢復后,新增的請求會直接發給 TDSQL-C,

這一流程是通過 VIP 權重來實作路由的定向轉發,當實體處于暫停狀態時,僅保留 preceptron 的路由;當實體恢復后時,同時保留 preceptron 的路由和 TDSQL-C 的路由,并設定 preceptron 的路由權重為 0,以實作新增連接直連到 TDSQL-C,同時存量與 preceptron 已經建連的鏈接依然能夠通訊,

三、測驗一下

那么下面我們來模擬一下用戶恢復實體的鏈接不斷機制,首先我們選好一個暫停狀態的 serverlss 實體,如果其在運行中我們也可以通過手動暫停來停止實體的運行,

file

通過監控資料和控制臺,我們可以看到上面的實體已經處于完全暫停狀態了,接下來我們通過遠程連接工具,直接對資料庫發起連接請求,

如下圖所示,我們在發起資料庫連接請求時,可以做到秒級資料庫恢復,并且在整個連接的程序中用戶側對實體恢復和重連毫無感知,極大程度地提高了 Serverlss 產品的易用性,

經過多輪測驗,我們累加內核側、管控側、perceptron 側的總體冷啟動時間,整體重連時間約在 2000ms 左右,淺放一張今天下午測驗的結果,歡迎大家來體驗秒級的快樂!

file

TDSQL-C Serverless 功能還在持續優化中,今天我們更貼近了云函式的啟動時間,在保證實體暫停的狀態下快速拉起服務并對業務無感,未來,我們還會繼續提升冷啟動的時間,

同時,我們為了進一步降低用戶的存盤成本,我們在持續探索新型的存盤能力,在實體暫停狀態下將資料轉存到物件存盤COS,并保證實體在恢復時不影響資料的讀取,更大程度幫助用戶降低成本,

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

標籤:其他

上一篇:MySQL資料庫的性能分析 ---圖書《軟體性能測驗分析與調優實踐之路》-手稿節選

下一篇:旋轉門資料壓縮演算法在PostgreSQL中的實作 - 流式壓縮在物聯網、監控、傳感器等場景的應用

標籤雲
其他(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