日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

RDS平台介绍

發(fā)布時(shí)間:2024/7/5 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RDS平台介绍 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文整理自美團(tuán)點(diǎn)評(píng)技術(shù)沙龍第10期:數(shù)據(jù)庫(kù)技術(shù)架構(gòu)與實(shí)踐。

美團(tuán)點(diǎn)評(píng)技術(shù)沙龍由美團(tuán)點(diǎn)評(píng)技術(shù)團(tuán)隊(duì)主辦,每期沙龍邀請(qǐng)美團(tuán)點(diǎn)評(píng)及其它互聯(lián)網(wǎng)公司的技術(shù)專家分享來自一線的實(shí)踐經(jīng)驗(yàn),覆蓋各主要技術(shù)領(lǐng)域。

本次沙龍主要圍繞數(shù)據(jù)庫(kù)相關(guān)的主題,內(nèi)容包括美團(tuán)數(shù)據(jù)庫(kù)自動(dòng)化運(yùn)維系統(tǒng)構(gòu)建、點(diǎn)評(píng)側(cè)MySQL自動(dòng)化服務(wù)平臺(tái)RDS、美團(tuán)數(shù)據(jù)庫(kù)中間件、和小米高級(jí)DBA帶來的Redis Cluster的大規(guī)模運(yùn)維實(shí)踐。

今天我就給大家講一下我們這邊做的數(shù)據(jù)庫(kù)運(yùn)維的自動(dòng)化平臺(tái),他是怎么樣子的。首先我會(huì)給大家簡(jiǎn)單介紹一下我們做平臺(tái)的背景,以及平臺(tái)的一些技術(shù)架構(gòu),以及針對(duì)我們DBA和開發(fā)的需求的全套解決方案。

首先是背景,我們?yōu)槭裁匆鯮DS,在做RDS之前其實(shí)我們也有一套自己的自動(dòng)化系統(tǒng),可是我們有了這套自動(dòng)化系統(tǒng)我們發(fā)現(xiàn)有了之后我們DBA還是很忙,每天忙于工單處理,大表DDL,集群搭建,擴(kuò)容,數(shù)據(jù)遷移等等。這些東西不能說沒有價(jià)值,但是對(duì)于DBA來說,每一次的重復(fù)操作,都會(huì)讓這個(gè)價(jià)值指數(shù)級(jí)下降,并且不能帶來成長(zhǎng)。所以我們對(duì)這些需求做了一個(gè)簡(jiǎn)單的分析。

首先第一個(gè),工單審核,大表DDL,數(shù)據(jù)權(quán)限,都是與數(shù)據(jù)相關(guān)的需求,我們看另一部分,集群擴(kuò)容,數(shù)據(jù)遷移,故障轉(zhuǎn)移是與數(shù)據(jù)庫(kù)相關(guān)的。所以我們這邊有一個(gè)理念我們一定要讓數(shù)據(jù)相關(guān)的全部讓他們自助化,讓開發(fā)去做,而不是讓我們DBA去做,而跟DBA相關(guān)的全部讓他自動(dòng)化。這就是我們現(xiàn)在的理念。

接下來我們面臨一個(gè)問題就是改造原系統(tǒng)還是重建一個(gè)。老系統(tǒng)很符合一個(gè)傳統(tǒng)運(yùn)維系統(tǒng)的“特點(diǎn)”:運(yùn)維開發(fā)自己搭服務(wù)器,自己上線,自己維護(hù)。這會(huì)帶來一系列問題,比如自己維護(hù)的成本很高,還有就是因?yàn)檫@一套與線上業(yè)務(wù)應(yīng)用完全不同,所以無(wú)法享用業(yè)務(wù)成熟的組件以及各種自動(dòng)化服務(wù)。所以我們改變了以前的思路,我們以前自己搭的系統(tǒng)全部廢掉,全部用線上的系統(tǒng),我們從整個(gè)系統(tǒng)維護(hù)搭建以及我們使用的組件全是線上一模一樣的一套,甚至包括我們數(shù)據(jù)庫(kù)這些東西,全部托管到我們DBA來,還有對(duì)服務(wù)器這塊交給業(yè)務(wù)運(yùn)維他們?nèi)ス?#xff0c;他們更專業(yè),管得肯定也更好。還有就是原來系統(tǒng)面向DBA的,就是我讓你DBA工作稍微不再繁瑣,自動(dòng)化工具,你去點(diǎn)一下做完了,現(xiàn)在我們的理念是面向開發(fā),什么叫面向開發(fā)呢?就是我們希望開發(fā)與我們DBA的整個(gè)交互,靠這個(gè)系統(tǒng)來交互,你不要老找我說這說那,你就跟我系統(tǒng)打交道好了,有什么錯(cuò)我們系統(tǒng)會(huì)告訴你,告訴你怎么去做,讓DBA完全從我們整個(gè)平臺(tái)的日常需求里面脫離出來,這就是我們整個(gè)的設(shè)計(jì)理念。 接下來說說我們的基礎(chǔ)架構(gòu):

因?yàn)槲覀冋f了,我們要跟線上業(yè)務(wù)一樣,所以我們前面有了一層slb,做均衡負(fù)載的。然后是RDS主體部分,主要由RDS主程序和、動(dòng)態(tài)配置管理中心Lion,數(shù)據(jù)遷移工具Puma和數(shù)據(jù)訪問層中間件zebra組成,其中zebra中間件是一個(gè)基于jdbc的數(shù)據(jù)庫(kù)動(dòng)態(tài)鏈接池。

數(shù)據(jù)庫(kù)則是MHA+MySQL的架構(gòu)。最后有一個(gè)輕量級(jí)的jobCenter,主要用于執(zhí)行系統(tǒng)級(jí)的命令。

最后是一個(gè)Job Center,因?yàn)槲覀僁BA需要跟資源打交道,會(huì)去做一些資源維護(hù),你需要操作系統(tǒng)級(jí)別的權(quán)限,我們要實(shí)現(xiàn)他,其實(shí)我們當(dāng)時(shí)有三種方案,第一個(gè)我們?cè)谧约旱墓芾矸?wù)器之上搭一個(gè)服務(wù)提供API,你來調(diào)度,但這就回到我們以前的老路上,你需要去維護(hù)這服務(wù),成本很高。第二個(gè)就是我們?cè)谖覀冏约旱臋C(jī)器上,去裝這些腳本,或者給他一些操作系統(tǒng)級(jí)命令他自己去執(zhí)行,這里面又有一個(gè)問題,這樣裝了之后,我們自己的服務(wù)器和線上應(yīng)用服務(wù)器就不一樣,當(dāng)他不一樣之后你就無(wú)法讓業(yè)務(wù)運(yùn)維進(jìn)行統(tǒng)一化管理了,所以我們也拋棄了。我們就選了第三種方案,把我們的命令寫在這個(gè)MySQL里面,我們專門的管理機(jī)去取這個(gè)命令去執(zhí)行,而且這層特別薄,薄到幾乎無(wú)需維護(hù),這樣就跟線上業(yè)務(wù)一模一樣,而且還可以進(jìn)行水平擴(kuò)展,所以整個(gè)系統(tǒng)下來全部可以水平擴(kuò)展。

然后我們還有一個(gè)無(wú)狀態(tài)任務(wù)流中心:

這個(gè)主要分為process和task。每個(gè)process由多個(gè)task組成,每個(gè)task可以分成多個(gè)并發(fā)的子task,每個(gè)子task我們都會(huì)盡量做成冪等。

整個(gè)流程由start開始,并由流程中心的doNext控制,最后的每個(gè)任務(wù)進(jìn)入到一個(gè)任務(wù)隊(duì)列中,最后jobcenter會(huì)取出任務(wù),并fork出新進(jìn)程具體執(zhí)行相關(guān)任務(wù),并進(jìn)行回調(diào)。為了支持jobcenter的分布式擴(kuò)展,我們用mysql的任務(wù)隊(duì)列做了一個(gè)很輕量級(jí)的互斥鎖來達(dá)到多任務(wù)中心的互斥功能。主要是我們給每個(gè)task一個(gè)初始狀態(tài)UNDO,然后task center拿到任務(wù)后會(huì)回去update這個(gè)任務(wù),并將UNDO作為條件,然后得到MySQL的匹配行數(shù)返回值,如果為1則執(zhí)行,否則放棄,給其它task center執(zhí)行。

RDS系統(tǒng)實(shí)現(xiàn)了DBA的一鍵集群搭建,擴(kuò)容/縮容,備份還原,流量控制,動(dòng)態(tài)遷庫(kù)/拆庫(kù),以及單表拆分等功能。我們主要來看看動(dòng)態(tài)數(shù)據(jù)遷移。

動(dòng)態(tài)遷庫(kù)/拆庫(kù)在可靠性和自動(dòng)化程度相較之前都有了一個(gè)很大的提升。而動(dòng)態(tài)遷庫(kù)/拆庫(kù)主要分為四個(gè)步驟:1.種子數(shù)據(jù)的遷移;2.增量數(shù)據(jù)遷移;3.賬號(hào)權(quán)限遷移;4.數(shù)據(jù)源切換。而增量數(shù)據(jù)遷移和數(shù)據(jù)源切換是關(guān)鍵點(diǎn)。其中增量數(shù)據(jù)遷移我們支持中間機(jī)(搭建MySQL中間機(jī),通過配置過濾規(guī)則進(jìn)行數(shù)據(jù)同步)和puma兩種方式,因?yàn)楦饔袃?yōu)缺點(diǎn)(前者快但繁瑣且只能有一個(gè)源,而后者雖然稍慢,但是支持多源同目標(biāo))。

在切換數(shù)據(jù)源時(shí),我們采用:校驗(yàn)權(quán)限→鎖表→校驗(yàn)數(shù)據(jù)一致性→切換動(dòng)態(tài)數(shù)據(jù)源→kill被阻塞query→renametable…→resetslave這樣一個(gè)流程來保證整個(gè)流程的安全可靠。其中對(duì)于鎖表,我們必須在一個(gè)事務(wù)中進(jìn)行l(wèi)ock tables,數(shù)據(jù)一致性校驗(yàn)我們采用官方的checksum算法來check每張表的最后1000條數(shù)據(jù)(1000是我們的一個(gè)經(jīng)驗(yàn)值),然后針對(duì)遷移過程中被阻塞的sql,我們采用直接kill的方式來讓業(yè)務(wù)報(bào)錯(cuò)重試,以避免數(shù)據(jù)的不一致。

而對(duì)于單表的自動(dòng)分庫(kù)分表,我們采用:配置分表規(guī)則→根據(jù)規(guī)則dump數(shù)據(jù)→配置增量同步任務(wù)→業(yè)務(wù)開啟雙寫→關(guān)閉老表寫入這樣幾步來實(shí)現(xiàn)單表的動(dòng)態(tài)拆分。

針對(duì)開發(fā)人員,我們提供了一個(gè)SqlEditor的模塊來支持。這個(gè)模塊集查詢,修改、權(quán)限配置和數(shù)據(jù)模糊于一身。它相對(duì)于以前的臨時(shí)權(quán)限方案主要有這樣幾個(gè)優(yōu)點(diǎn):

1.統(tǒng)一的系統(tǒng)級(jí)訪問賬號(hào)

2.從向數(shù)據(jù)庫(kù)申請(qǐng)權(quán)限變成向系統(tǒng)申請(qǐng)權(quán)限

3.從根源上規(guī)范了用戶的訪問行為(默認(rèn)訪問運(yùn)營(yíng)庫(kù),主庫(kù)查詢嚴(yán)格控制,返回結(jié)果1w行,60秒kill)

4.審計(jì)、安全控制更加方便(讀寫權(quán)限分離,column級(jí)別的密級(jí)設(shè)置以及數(shù)據(jù)模糊)

作者簡(jiǎn)介

柯任,美團(tuán)點(diǎn)評(píng)開發(fā)DBA。主要負(fù)責(zé)點(diǎn)評(píng)側(cè)自動(dòng)化平臺(tái)的搭建以及Mongodb的維護(hù)工作。

總結(jié)

以上是生活随笔為你收集整理的RDS平台介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。